Путь сборкиСреднийВыходные, затем ещё одни

Соберите робота для покрытия помещения

Робот, который самостоятельно покрывает помещение с помощью всего лишь двух концевых выключателей, и измеренное обоснование того, стоит ли добавлять одометрию и планировщик.

Техническая схема: Соберите робота для покрытия помещенияBRUSHSERPENTINE COVERAGE PATH

Что вы собираете

Робота, задача — не добраться до определённого места, а побывать везде. Это звучит проще, чем навигация, но на самом деле задача сложнее: нет цели, к которой можно направляться, и из текущего положения нельзя понять, насколько успешно идёт работа.

Это также проект, который больше всего вознаграждает измерения до сборки. Вся первая половина — робот с двумя выключателями, не знающий, где находится, — и он работает. Это по-настоящему неудобное открытие, если вы собирались потратить выходные на карту.

Число, определяющее проект

Площадь пола, делённая на ширину щётки, — расстояние, которое прошёл бы идеальный робот:

d_optimal = A / w

Помещение 20 m² и щётка 250 mm дают 80 m. Каждая стратегия оценивается как кратное этому значению, и кратные сильно различаются:

Стратегия Расстояние до 90% В этом помещении при 0.25 m/s
Идеальный проход 1.0× 5 мин
Плановое покрытие змейкой 1.35× 7 мин
Случайное отражение 2.9× 15 мин
Спираль с переносами 5.5× 30 мин

Эти значения получены запуском симулятора покрытия в пяти помещениях. До покупки чего-либо запустите его самостоятельно и переставляйте мебель во время работы: числа меняются вместе с помещением, и в этом состоит большая часть урока.

Перечень компонентов

Компонент Кол-во Примерная стоимость Примечания
Arduino Uno 1 $5–8 Режиму случайного блуждания почти ничего не нужно; плановому покрытию нужны энкодеры
Концевые выключатели 2 $1 Левый и правый за изогнутой оболочкой. Основные датчики здесь
массив ИК-датчиков отражения (IR) 1 $5 Обнаружение обрыва — направлен вниз на край пола, а не вперёд на линию
Двигатели N20 с энкодерами 2 $16 Нужны для планового покрытия; случайное движение работает без них
TB6612FNG 1 $3
Шасси 2WD 1 $10 Здесь круглое шасси лучше квадратного: оно не застревает в углах
Аккумулятор 1 $8 Покрытие занимает много времени, поэтому ёмкость важнее, чем в других сборках

Итого: примерно $50–65.

Это единственный проект на сайте, где самый дешёвый датчик является основным. Два концевых выключателя и случайный поворот при достаточном времени покрывают всё помещение — именно так работали роботы-пылесосы первого поколения, и такую основу стоит построить прежде, чем переходить к чему-либо более сложному.

ИК-массив (IR) здесь используется необычно: направлен вниз на пол как датчик обрыва, а не вперёд на линию. Робот, покрывающий помещение, обязательно найдёт верхнюю площадку лестницы.

Порядок сборки

1 — Сравните стратегии в симуляторе. Час здесь экономит выходные. Следите, как выравнивается кривая покрытия, и заметьте, что все три стратегии одинаковы на первой половине пола.

2 — Соберите привод и бампер, и больше ничего. Два рычажных микросвыключателя за пружинной оболочкой, охватывающей с каждой стороны не менее 45°, подключённые нормально разомкнутым контактом к «земле» с включёнными внутренними подтягивающими резисторами. Правильно устраните дребезг: одно нажатие даёт девять фронтов, и прерывание, считающее их, сообщит о столкновении девять раз.

3 — Добавьте датчики обрыва до первого автономного запуска. Направленные вниз отражательные датчики на передних углах, считываемые на каждом проходе. Затем определите допустимую скорость: произведение задержки на скорость плюс тормозной путь v²/2µg должно помещаться в расстояние между обнаружением обрыва и достижением его колёсами.

4 — Напишите случайное блуждание и дайте роботу поработать час. Едьте прямо; при столкновении немного отступайте и поворачивайте на случайный угол от 90° до 270°. Случайность здесь принципиальна: фиксированный угол отражения превращает помещение в бильярдный стол, и робот бесконечно вычерчивает замкнутую траекторию.

5 — Измерьте результат. Нарисуйте на полу сетку мелом или лентой, запустите на фиксированное время и посчитайте клетки. Это базовая линия и единственный честный способ узнать, стоит ли вам этапа 6.

6 — Только теперь добавьте одометрию. Энкодеры и одометрия дифференциального привода дают оценку положения. Запланируйте ряды змейкой на расстоянии ширины щётки с перекрытием 10–20% и обходите мебель, а не врезайтесь в неё.

7 — Наблюдайте, как ряды перестают быть параллельными. Это произойдёт примерно после десяти рядов из-за дрейфа одометрии. Это не ошибка планировщика: именно поэтому коммерческие машины используют гироскоп, потолочную камеру или маяк. Решение о добавлении такого устройства и составляет настоящее завершение проекта.

Важные замечания по оборудованию

Круглое шасси, колёса по диаметру. Круглый робот всегда может освободиться при столкновении поворотом. Квадратный может диагонально застрять в углу, и для выхода ему нужны задний бампер и дополнительная логика.

Щётка должна быть шире робота. Это не украшение. Планировщик сохраняет корпус на расстоянии от каждой стены, поэтому участки пола, до которых не достаёт корпус, остаются непокрытыми: в симуляторе 130 из 133 пропущенных планировщиком клеток находятся не дальше двух клеток от стены или ножки стола. Выступающая вперёд щётка возвращает эти участки.

Две половины бампера, а не одна. Один выключатель сообщает, что робот во что-то упёрся. Два сообщают с какой стороны, а именно эта информация нужна для выбора направления поворота; дополнительно нужен только один вывод.

Рассчитывайте аккумулятор в метрах, а не в минутах. Час при 0.25 m/s — это 900 m. Одно помещение при случайном блуждании занимает около 540 m для покрытия 99%. Три помещения не получится, и именно эта арифметика, а не какой-либо алгоритмический вывод, подтолкнула всю категорию продуктов к построению карт.

Как выглядит хороший результат

Покрытие — одно из немногих поведений робота, для которого существует одно наглядное числовое значение, и разница между стратегиями весьма заметна:

Стратегия Покрытие после прохождения 1× площади помещения После 3× После 10×
Случайное отражение ~35% ~70% ~93%
Спираль, затем отражение ~45% ~78% ~95%
Плановое покрытие змейкой ~85% ~99% ~99%

Форма этих столбцов — весь урок. Случайное отражение асимптотически приближается к полному покрытию, но никогда не достигает его: последние несколько процентов занимают больше времени, чем первые девяносто. Плановое покрытие достигает цели примерно за один проход, после чего ему больше нечего делать.

Это разница между наличием памяти и её отсутствием, выраженная числом.

Измерение Типичное значение
Шаг между линиями прохода 80–90% эффективной ширины робота, чтобы проходы перекрывались
Дрейф курса за один проход 4 m 3–8° без гироскопа, менее 2° с ним
Ошибка положения после десяти проходов 15–40 cm только по одометрии
Практический размер помещения для чистой одометрии До примерно 4 × 4 m, прежде чем покрытие заметно перекашивается

Последняя строка показывает честный предел проекта. Плановое покрытие зависит от знания положения, а одометрия неограниченно накапливает ошибку, поэтому примерно после 4 m параллельные проходы перестают быть параллельными и появляются пропуски. Это не вопрос настройки; именно поэтому существует построение карт.

Когда что-то идёт не так

Симптом Обычная причина
Бесконечно вычерчивает один и тот же контур Угол отражения задаётся детерминированно; сделайте его случайным
Быстро покрывает 90%, затем словно останавливается Так и задумано: это экспоненциальная кривая покрытия
Одно столкновение учитывается несколько раз Нет устранения дребезга или окно короче дребезга 5 ms
Съезжает со ступени Слишком быстро для допустимой задержки датчиков обрыва либо контур блокируется
Ряды перестают быть параллельными Одометрия, а не планировщик. Добавьте источник курса
Пропускает полосы между рядами Шаг задан ровно шириной щётки без перекрытия
Застревает в углу Квадратное шасси или отсутствует задний бампер
Никогда не попадает за диван Переходы между отрезками рядов не были спланированы

Шесть из этих восьми проблем относятся к измерениям, механике или арифметике, а не к алгоритму. То же распределение, что и у робота Micromouse, и по той же причине.

Для реактивного уровня, общего со всеми другими мобильными роботами, робот для обхода препятствий является более простой сборкой с почти тем же оборудованием, а план обучения реактивной навигации раскрывает измерения и поведение, лежащие в основе обеих систем.

Дорожная карта проекта

Путь сборки

Следуйте по дереву технологий от деталей к работающему роботу. Каждый узел открывается, когда выполнены его предварительные условия, а ваш прогресс сохраняется на этом устройстве.

0 / 18 выполнено

100%
Сборка

Обеспечьте покрытие помещения двумя выключателями

Сборка

Сборка

Добавьте плановое покрытие

Сборка

Цель

Покройте помещение от одного заряда

Цель

Компоненты

Руководства на этом пути

Попрактикуйтесь до сборки схемы

Настройте его в интерактивном симуляторе

Путь сборки проходит через лабораторию в браузере. Добейтесь правильного поведения здесь, а затем перенесите настройки на реального робота.

Часто задаваемые вопросы

Это робот-пылесос?

Это навигационная половина пылесоса, то есть интересная половина. Добавление всасывания — механическая задача: вентилятор, щётка, пылесборник и значительно больший аккумулятор, — и оно не научит ничему сверх задачи покрытия. Соберите его с сухой тканью или щёткой снизу: он действительно очистит твёрдый пол, и каждый алгоритм будет тем же, что использует коммерческий робот.

Почему начинать со случайного блуждания, если плановое покрытие лучше?

Потому что случайное блуждание работает с датчиками, которые можно собрать за послеобеда, и даёт измеренную базовую линию, которую должен превзойти планировщик. В симуляторе случайный режим покрывает половину пола за то же расстояние, что и планировщик, — разрыв появляется только после этого. Если сначала построить планировщик, вы проведёте выходные в борьбе с дрейфом одометрии, так и не узнав, что он дал.

Какой выигрыш даёт планировщик?

По результатам измерений в пяти помещениях лаборатории: плановое покрытие достигает 90% покрытия за 1.35 от теоретически минимального расстояния, случайное блуждание требует 2.9, а спиральная стратегия — 5.5. В помещении площадью 20 квадратных метров со щёткой 250 mm при 0.25 m/s это 7 мин против 15 и 30. Оговорка в том, что планировщик вообще не достигает 99%, поскольку сохраняет безопасный запас от каждой стены и ножки стола.

Нужны ли энкодеры?

Для первого робота они не нужны. Они указаны в списке компонентов, потому что нужны для второй половины проекта и потому что установить энкодеры на уже собранное шасси намного сложнее, чем предусмотреть их сразу. Купите двигатели с энкодерами, оставьте провода неподключёнными и используйте их при переходе к плановому покрытию.

Что не даст роботу упасть с лестницы?

Направленные вниз отражательные датчики на передних углах, считываемые на каждом проходе контура, и ограничение скорости, полученное расчётом, а не выбором наугад. До начала торможения робот проходит расстояние, равное произведению собственной задержки на скорость, а затем ещё тормозной путь, равный v в квадрате, делённому на удвоенное μg. Оба слагаемых должны помещаться в расстояние между местом, где датчик видит обрыв, и местом, куда доедут колёса.

Почему круглое шасси?

Потому что занимаемая круглым роботом площадь не меняется при вращении, поэтому он всегда может освободиться при столкновении поворотом на месте. Квадратный робот, застрявший в углу по диагонали, сначала обязан отступить, для чего нужны задний бампер и дополнительная логика. По той же причине почти каждый коммерческий робот для уборки пола имеет круглую форму.