Соберите робота-ровера для путевых точек GPS
Ровер, который самостоятельно проходит по полю сохранённый список путевых точек GPS, удерживает траекторию в пределах метра и останавливается, если выходит за геозону.
Что вы собираете
Робота, которому передают список координат, ставят на траву и оставляют работать без присмотра.
Каждый другой мобильный робот на сайте реагирует на то, что находится непосредственно перед ним: линию, стену, препятствие, границу. Этот робот выполняет план в мире без ориентиров, используя датчик, который несколько раз в минуту сообщает ему неправду. Именно это сочетание делает проект самым сложным среди мобильных разработок и одновременно самым полезным для обучения.
Три вещи, определяющие результат
Алгоритм слежения — простая часть. Pure pursuit занимает двенадцать строк и имеет один коэффициент. При идеальной оценке положения он удерживает ошибку 0.09 m RMS на лабораторной траектории.
Оценка положения — весь проект. Тот же регулятор при поправке GPS 1 Hz с шумом масштаба метра удерживает 1.25 m, то есть в четырнадцать раз хуже, затрачивая в четыре с половиной раза больше усилий на управление. Вклад регулятора составляет менее десятой части итоговой ошибки.
Порядок сборки: сначала алгоритм слежения в помещении, затем оценка на улице. Докажите рулевое управление там, где положение почти точно, и только потом боритесь с датчиком. Одновременная разработка приводит к блужданию робота по причинам, которые невозможно разделить.
Перечень компонентов
| Компонент | Кол-во | Примерная стоимость | Примечания |
|---|---|---|---|
| Arduino Uno или Mega | 1 | $5–12 | Mega того стоит: четыре вывода прерываний для полного декодирования энкодеров ×4 и запасные UART |
| GPS-модуль NEO-6M | 1 | $8–12 | NEO-M8N — лучшая модернизация: несколько спутниковых систем и лучшая геометрия |
| MPU-6050 | 1 | $2 | Курс между поправками. Без него ровер не знает, в какую сторону направлен |
| Двигатели N20 с энкодерами | 2 | $16 | Энкодеры в этой сборке нельзя не устанавливать |
| TB6612FNG | 1 | $3 | |
| Шасси 2WD | 1 | $10–20 | На улице помогают большие колёса; трава не прощает колесо 65 mm |
| Аккумулятор | 1 | $10 | Защищённые 2×18650 или 3S с регулятором |
| Высокое крепление антенны | 1 | $2 | Антенне нужен доступ к небу, а не видимость: металл над ней закрывает спутники |
Итого: примерно $55–80.
Больше всего на проект влияет приёмник. NEO-6M работает, и его предполагает большинство руководств; NEO-M8N принимает GPS, GLONASS и Galileo, что улучшает геометрию спутников и снижает HDOP. Возле зданий и деревьев — там, где ровер действительно ездит, — это практическое улучшение больше, чем предполагает спецификация точности.
Не исключайте энкодеры ради экономии $12. Весь проект представляет собой счисление пути, корректируемое редкими поправками; без энкодеров нечего счислять, и ровер просто следует за шумом GPS.
Порядок сборки
1 — Настройте алгоритм слежения в симуляторе. Потратьте час в лаборатории следования траектории на планируемой рабочей скорости. Найдите точку упреждения, при которой кривая ошибки минимальна; учтите, что она меняется вместе со скоростью.
2 — Соберите привод и обеспечьте работу одометрии. Подключите энкодеры к одометрии дифференциального привода, затем проедьте квадрат 2 m и измерьте отклонение от старта. Это ваш бюджет точности в помещении.
3 — Объедините данные для курса. Гироскоп работает с частотой контура, а абсолютный источник выполняет коррекцию. Ошибка курса — величина, которую сильнее всего учитывают оба регулятора и которую первой теряет одометрия; дополняющий фильтр, стабилизирующий робота балансировки, выполняет здесь ту же задачу.
4 — Пройдите траекторию из ленты в помещении. Без GPS. Приклейте маршрут к полу, запустите pure pursuit по оценке на основе энкодеров и измерьте линейкой боковую ошибку в десяти точках. Если в помещении она не меньше 10 cm, на улице не будет меньше метра.
5 — Добавьте приёмник и не подключайте его к регулятору. Записывайте поправки десять минут, пока ровер стоит на месте, и постройте их график. Вы увидите шум, редкие выбросы и связь обоих с HDOP. Этот график полезнее любого значения из технического описания.
6 — Объединяйте данные, а не следуйте им напрямую. Выполняйте счисление пути с частотой контура и мягко подтягивайте оценку к каждой достоверной поправке. Арифметика и фильтрация приведены здесь. Отклоняйте данные со статусом void или HDOP выше примерно 2.5.
7 — Задайте геозону, затем выходите на улицу. Максимальное расстояние от старта, тайм-аут миссии, физический аварийный останов. Затем короткая миссия на траве, пока вы идёте рядом.
Важные замечания по оборудованию
Установите антенну наверху, направьте в небо и удалите от всего остального. Керамическая патч-антенна под пластиной шасси теряет спутники, а потеря спутников означает не отсутствие поправки, а плохую геометрию, то есть уверенный неверный ответ вместо явного отказа.
Берите колёса больше, чем подсказывает опыт работы в помещении. Трава, гравий и край газона — задачи, зависящие от диаметра колеса. Они также изменяют масштабный коэффициент одометрии, поэтому откалибруйте его на фактической поверхности движения.
Держите магнитометр подальше от двигателей или откажитесь от него. Ток двигателей создаёт поле, перекрывающее поле Земли. Если не удаётся обеспечить 15 cm расстояния, используйте гироскоп и курс по движению, избегая проблемы.
Записывайте миссию. Наружный отказ, который не записан, невозможно отладить: робот находился в 40 m, а вы не смотрели на последовательный порт. SD-карта или журнал по Wi-Fi с позой, поправкой, HDOP и боковой ошибкой превращают каждый заезд в доказательство.
Ожидайте, что первый наружный заезд закончится рано. Именно для этого существует геозона, и это успех.
Как выглядит хороший результат
| Измерение | Слежение по сырым данным GPS | С объединением с одометрией |
|---|---|---|
| Боковая ошибка, RMS | 3–5 m | 0.3–0.6 m |
| Боковая ошибка, худший случай | 8–12 m | 1.0–1.5 m |
| Активность рулевого управления | Постоянные большие коррекции | Плавная, изредка |
| Допуск прибытия в путевую точку | 5 m, и даже это оптимистично | 0.5–1 m |
| Статический разброс положения при неподвижном роботе | Облако 2–4 m | N/A — одометрия удерживает положение |
Первый столбец не означает плохо собранный ровер: именно он получается при поправке 1 Hz с CEP 2.5 m, которой доверяет регулятор. Улучшение на порядок во втором столбце обеспечивает оценщик, а не регулятор, — тот же код pure pursuit получает объединённую позу.
Перед написанием кода навигации выполните это действие один раз: оставьте приёмник на улице на десять минут и запишите каждую поправку. Полученное облако имеет размер несколько метров, хотя ничего не двигалось. Этот график — самое полезное, что можно увидеть в проекте, поскольку объясняет, почему нельзя следовать сырым поправкам и почему коррекция должна выполняться до контура регулятора.
Когда что-то идёт не так
| Симптом | Обычная причина |
|---|---|
| На улице колеблется на прямой, в помещении всё хорошо | Следует сырым поправкам вместо их объединения |
| В помещении тоже колеблется | Точка упреждения слишком коротка для задержки; настройте в лаборатории |
| Срезает каждый угол | Точка упреждения слишком далеко — это компромисс, а не ошибка |
| Уверенно сообщает положение на десятки метров | Плохая геометрия спутников; фильтрация по HDOP не выполнялась |
| С места старта едет в неправильную сторону | Нет пригодного курса; курс по движению ниже ~1 m/s является шумом |
| Постоянно смещается в одну сторону | Неверный масштаб одометрии или ширина колеи для этой поверхности |
| Первые две минуты ничего не происходит | Холодный старт GPS. Зафиксируйте и оцените это, не предполагая начало координат |
| Покинул поле | Геозона не была задана до испытания |
Шесть из этих восьми проблем относятся к измерениям, а не к управлению. То же распределение, что у робота Micromouse и робота покрытия помещения, и по той же причине: алгоритм составляет меньшую часть задачи.
Для всей последовательности используйте план обучения следованию траектории и навигации; для версии той же задачи в помещении роботу покрытия помещения нужен план и полное отсутствие абсолютного положения.
Дорожная карта проекта
Путь сборки
Следуйте по дереву технологий от деталей к работающему роботу. Каждый узел открывается, когда выполнены его предварительные условия, а ваш прогресс сохраняется на этом устройстве.
0 / 20 выполнено
Компоненты
- КонтроллерArduino UnoПрощающая 8-битная плата, с которой большинство знакомится с робототехникой.
- ДатчикМодуль GPS NEO-6MАбсолютное положение где угодно на улице, если сначала потратить минуту на захват неба.
- ДатчикMPU-6050 IMUШестиосевой датчик движения — робот ощущает собственный наклон, поворот и ускорение.
- Исполнительный механизмРедукторный двигатель N20 с энкодеромКомпактный двигатель с металлическим редуктором и энкодером: робот знает, насколько продвинулся.
- ДрайверДрайвер двигателей TB6612FNGMOSFET H-мост, сохраняющий то напряжение, за которое вы действительно заплатили.
- ШассиШасси робота 2WDПлатформа, к которой крепятся два двигателя, свободный опорный ролик и вся электроника.
- ПитаниеБатарейный блок питания роботаРазница между работающим роботом и роботом, который постоянно перезагружается.
Руководства на этом пути
- Средний · 30 минPure Pursuit: следование по пути с одним параметромНаведитесь на точку впереди на пути и выполните дугу, которая её достигнет. Вот и весь алгоритм.
- Средний · 30 minНавигация по точкам GPS для робота, работающего на улицеМестоположение, определённое по GPS, запаздывает, шумит и не содержит курса. Вот что делать с каждой из этих проблем.
- Средний · 25 minПоперечная ошибка: точность следования маршрутуОдно знаковое расстояние показывает качество регулятора маршрута и помогает выбрать его.
- Начальный · 17 мин чтенияЧтение квадратурных энкодеров для измерения расстояния и скоростиПреобразование импульсов квадратурного энкодера в надёжные измерения направления, расстояния и скорости колеса.
- Средний · 20 min readОдометрия дифференциального привода по энкодерам колёсИнтегрируйте движение левого и правого колёс в позу мобильного робота, затем выявите и откалибруйте дрейф.
Попрактикуйтесь до сборки схемы
Настройте его в интерактивном симуляторе
Путь сборки проходит через лабораторию в браузере. Добейтесь правильного поведения здесь, а затем перенесите настройки на реального робота.
Часто задаваемые вопросы
Почему алгоритм слежения сначала проверяют в помещении, а затем добавляют GPS?
Потому что при одновременной разработке обеих частей блуждание робота не позволяет определить, какая из них неверна. В помещении по энкодерам оценка положения на проложенной лентой траектории точна до нескольких сантиметров, поэтому любая ошибка относится к регулятору. Найдите оптимальную точку упреждения, измерьте боковую ошибку линейкой и только затем добавляйте датчик, который шумит, запаздывает и иногда уверенно ошибается. Каждый час такого порядка окупается дважды.
Насколько точен может быть любительский ровер с GPS?
Около метра боковой ошибки в хороший день, и она определяется приёмником, а не регулятором. При одном и том же алгоритме pure pursuit на одной и той же траектории идеальная оценка положения даёт 0.09 метра ошибки RMS, а поправка 1 Hz с шумом масштаба метра — 1.25, поэтому вклад регулятора составляет менее десятой части общей ошибки. Если нужно лучше, используйте более быстрый многосистемный приёмник, а затем RTK, а не дополнительную настройку.
Нужен ли магнитометр в дополнение к гироскопу?
Нужен какой-либо абсолютный источник курса, и есть три варианта. Магнитометр обеспечивает его на месте, но требует калибровки влияния жёсткого и мягкого железа и постоянного магнитного поля и плохо работает рядом с двигателями. Гироскоп отлично работает десятки секунд, а затем дрейфует. Курс по земле, рассчитываемый по данным GPS, абсолютен и бесплатен, но имеет смысл только при скорости выше примерно метра в секунду. Обычное решение для ровера — гироскоп с частотой контура, корректируемый курсом по движению, когда робот движется достаточно быстро, чтобы доверять этому источнику; именно так устроена эта сборка, и она полностью исключает калибровку.
С какой скоростью ему следует двигаться?
Медленнее, чем позволяют двигатели, и симулятор объяснит почему. Лучшая достижимая боковая ошибка растёт со скоростью при любой настройке: 0.05 метра при 1 m/s превращается в 0.23 при 3 m/s в лаборатории с идеальной оценкой положения. На улице всё равно преобладает приёмник, поэтому увеличение скорости даёт мало, а первый полевой заезд — много потерь. Начните с 0.5 m/s.
Что не даст ему въехать в дорогу или пруд?
Геозона, заданная до первого наружного запуска: максимальное расстояние от старта миссии, проверяемое в самом начале контура и безусловно останавливающее двигатели. Добавьте тайм-аут миссии и доступный физический аварийный останов — концевой выключатель на верхней платформе подходит и не требует радиосвязи. Это десять строк кода и разница между ошибкой и роботом в воде.
Можно ли использовать ESP32 вместо Uno?
Да, и в этом проекте это лучший выбор. Вы получаете второй аппаратный последовательный порт для GPS без программной эмуляции, значительно больше памяти для списка путевых точек, менее болезненные вычисления с плавающей точкой и Wi-Fi для журналирования миссии на ноутбук — самого полезного инструмента отладки для наружного робота. Uno работает, но ESP32 устраняет три неудобства.