Соберите мини-робота сумо: сцепление, клин и датчики края
Мини-робот сумо, который ищет соперника, выталкивает его из кольца и самостоятельно останавливается на белой границе, вместо того чтобы съехать с края.
Что вы собираете
Два робота, одно кольцо и датчики, направленные только друг на друга и на пол. Побеждает тот, кто в конце остался внутри.
Это простейшая цель на сайте, но проект далеко не так прост, как кажется, поскольку сумо — единственный робот, в котором механика решает исход, а коду остаётся только не испортить его. Все остальные разработки здесь вознаграждают более совершенные алгоритмы. Этот проект вознаграждает более острый клин.
Такая инверсия стоит испытать один раз. Именно поэтому приведённый ниже порядок сборки посвящает первый день арифметике, а последний — поведению, то есть действует наоборот тому, как обычно начинают.
Три числа, определяющие исход
Усилие толкания равно 5.9 N, а двигатели способны дать 25 N. Робот массой 500 g на силиконовых шинах ограничен сцеплением в четыре раза. Привод не является ограничением и никогда им не станет, поэтому доведите массу до предела, разместите каждый грамм над ведущими колёсами и потратите бюджет двигателей на передаточное число, а не мощность.
Клин, поднимающий 40% веса соперника, даёт 2.3× его усилия толкания. Снятый с
соперника вес переходит на вас, поэтому отношение равно (1+f)/(1−f) и быстро
растёт. Ни одно другое отдельное изменение не даёт такого результата.
Скорость может составлять около 0.8 m/s. Не потому, что двигатели заканчиваются, а потому что 25 mm границы плюс 25 ms задержки — это всё доступное пространство для торможения. Большинство первых роботов имеют передаточное число на вдвое большую скорость и проигрывают краю, а не сопернику.
Эти три предложения составляют весь проект. Всё ниже объясняет, как их достичь.
Перечень компонентов
Мини-сумо имеет формальный класс: основание 10 × 10 cm на старте, максимум 500 g на кольце диаметром 77 cm с белой границей 2.5 cm. Правила определяют список компонентов.
| Компонент | Кол-во | Примерная стоимость | Примечания |
|---|---|---|---|
| Arduino Uno или Nano | 1 | $5 | Nano намного удобнее помещается в основание 10 cm |
| ИК-датчики отражения | 2–4 | $5 | Обнаружение края. Минимум по одному на каждом переднем углу |
| VL53L0X | 2–3 | $10–15 | Обнаружение соперника. Узкий луч лучше сонара в кольце |
| Двигатели N20 с энкодерами | 2 | $16 | Высокое передаточное число — 1:100 или больше. Скорость не цель |
| TB6612FNG | 1 | $3 | |
| Шасси со стальным клином | 1 | $10–25 | Клин является оружием; сталь также служит балластом |
| Аккумулятор | 1 | $10 | Также полезная масса — разместите его над ведущими колёсами |
| Силиконовые шины или шины с высоким сцеплением | 2 | $5 | Самая ценная модернизация в списке |
Итого: примерно $65–90.
Два замечания, которые определяют поединки, а не просто обеспечивают работоспособность.
Масса располагается над ведущими колёсами, вплоть до предела. Усилие толкания определяется трением, а трение равно коэффициенту, умноженному на нормальную нагрузку. Каждый грамм не над ведущей шиной расходуется впустую, поэтому роботы сумо доходят ровно до 500 g и помещают почти всю массу на два колеса.
Шины важнее двигателей. Робот, достигший предела сцепления, не получает ничего от дополнительного момента: колёса просто проскальзывают. Переход от жёсткого пластика (µ ≈ 0.4) к силикону (µ ≈ 1.2 или лучше) примерно утроевает доступное усилие толкания за пять долларов, что не может сравниться ни с одной модернизацией двигателей.
Порядок сборки
1 — Сначала определите массу и шины. Они задают усилие толкания ещё до появления первой строки кода. Стремитесь к пределу 500 g, размещая массу низко и над ведущими колёсами; используйте силиконовые или мягкие уретановые шины, а не те, что входят в комплект шасси. µ 1.2 против µ 0.7 даёт на 72% больше усилия и стоит цены комплекта колёс.
2 — Выберите передаточное число для момента и проверьте ток блокировки. Сумо работает на рабочем участке характеристики двигателя с высоким моментом, около 0.8 m/s на колесе, а не на 1.5, предполагаемых комплектом шасси. Затем определите потребление двух двигателей при блокировке — примерно 3 A, — и рассчитайте на него аккумулятор, а не на ток при спокойном движении. Весь раунд представляет собой продолжительную блокировку.
3 — Заставьте его останавливаться у границы в одиночку в кольце. Это ключевой этап. Установите отражательные датчики на обоих передних углах как можно дальше вперёд, насколько они ещё видят белую линию, и откалибруйте по реальному кольцу, а не по своему столу. На полной скорости подъезжайте к границе пятьдесят раз и с каждого направления. Пока это не станет скучно надёжным, добавлять соперника бессмысленно: робот, выезжающий сам, проигрывает, не получив ни одного толчка.
4 — Считывайте датчики края на каждом проходе контура. Четыре пятых дистанции реакции приходится на ожидание следующей итерации, а одно блокирующее измерение расстояния создаёт 20 ms слепоты в самый неподходящий момент. Неблокирующее управление временем — самое дешёвое доступное увеличение скорости.
5 — Добавьте обнаружение соперника. Установите VL53L0X спереди и, по желанию, ещё два под углом 45° наружу. Узкий луч важен: ультразвуковой датчик в кольце в основном находит само кольцо.
6 — Опишите поведение явными состояниями. Поиск, атака, толкание, отступление, причём рефлекс на краю имеет приоритет над всеми состояниями. Это учебный случай конечного автомата, поскольку проверка края должна выполняться в каждом состоянии и не должно существовать ни одного пути в коде, где она пропущена.
7 — Соберите клин последним и бесконечно дорабатывайте его. Это часть с наибольшим влиянием на результат, которую проще всего изменять.
Поведение в одном абзаце
Начните с обязательной задержки — большинство наборов правил требуют пяти секунд. Затем ищите: вращайтесь на месте или проезжайте небольшую дугу, пока передний датчик не сообщит о цели на расстоянии примерно до 40 cm. Атакуйте прямо на полной мощности. Толкайте, пока либо расстояние не увеличится, что означает движение соперника, либо не будет обнаружена граница. Отступайте при любом обнаружении края: сначала полный задний ход, затем остановка и поворот к центру кольца. Отступление имеет приоритет над всем, из любого состояния и в любой момент.
Тонкость в том, что толкание и застревание выглядят одинаково для переднего датчика. Если есть энкодеры, нулевая скорость колёс при полной команде означает блокировку. Это сигнал отступить и повторить подход под другим углом, а не скрежетать до полной разрядки аккумулятора.
Важные замечания по оборудованию
Кончик клина определяет поединок. Тонкий лист стали или алюминия, заострённый по кромке и удерживаемый на доле миллиметра над полом жёсткой опорой. На податливом креплении он перелезает поверх соперника, а не под него, что меняет знак всего расчёта передачи массы.
Держите передок низко. Клин соперника прикладывает подъёмную силу у переднего края, и степень опрокидывания зависит от высоты центра масс над ним. Высоких роботов опрокидывают те, кто не может вытолкнуть их силой.
По возможности не используйте опорный ролик. Масса на свободно вращающемся колесе не создаёт сцепления. Два ведущих колеса и низкофрикционная опора — кнопка из PTFE или скруглённая головка винта — задействуют почти всю массу.
Защитите проводку. Это единственный робот на сайте, который намеренно идёт на таран. Всё снаружи получает удар; всё на разъёме расшатывается.
Металлические редукторы. Пластиковые передачи изнашиваются в роботе, для которого нормальный режим работы — блокировка, а сломанный посреди раунда редуктор неотличим от разряженного аккумулятора.
Как выглядит хороший результат
| Измерение | Типичная сборка | Соревновательная |
|---|---|---|
| Масса | 400–500 g | 499 g — точный предел |
| Доля массы на ведущих колёсах | 70% | 90%+ |
| Коэффициент трения шин | 0.6–0.8 (резина) | 1.2–1.5 (силикон) |
| Усилие толкания | 2.5–4 N | 6–7 N |
| Время реакции обнаружения края | 60–100 ms | Менее 30 ms |
| Тормозной путь с полной скорости | 8–15 cm | Менее 5 cm |
| Дальность обнаружения соперника | 30–40 cm | 60–80 cm |
Время реакции на край — значение, которое определяет исход поединков, и оно влияет сильнее усилия толкания. Белая граница кольца имеет ширину 2.5 cm. Робот, движущийся со скоростью 0.5 m/s, пересекает её за 50 ms, поэтому при времени реакции 100 ms робот успевает выехать ещё до завершения решения остановиться.
Этот бюджет складывается из времени считывания датчика, периода контура и тормозного пути. Все три можно улучшить: значительно чаще опрашивать датчики края, поддерживать частоту контура и тормозить, а не двигаться по инерции — замыкание двигателя через H-мост останавливает робота намного быстрее снятия питания.
Предел сцепления стоит выразить арифметически. При массе 500 g на двух ведущих колёсах и силиконовых шинах с µ = 1.4:
maximum pushing force = 0.5 kg x 9.81 x 1.4 = 6.9 N
За этой величиной колёса проскальзывают независимо от момента двигателя, поэтому задача сумо — это по сути задача о сцеплении, замаскированная под задачу о двигателе.
Когда что-то идёт не так
| Симптом | Обычная причина |
|---|---|
| Самостоятельно выезжает из кольца | Слишком быстро для допустимого времени торможения у границы или датчики края опрашиваются слишком редко |
| Колёса вращаются, робот не двигается | Сцепление ограничено, как и задумано, — добавьте массу или смените шины |
| Проигрывает похожему роботу | Их клин оказался под вашим; дело в дорожном просвете, а не мощности |
| Перезагружается посреди толкания | Ток блокировки вызывает просадку шины — рассчитайте режим блокировки |
| Видит несуществующую границу | Внешнее ИК-излучение или отражающее кольцо; экранируйте датчики и повторите калибровку |
| Преследует стенку кольца вместо соперника | Слишком широкий луч — это исправляет датчик времени полёта |
| Выезжает назад | Нет задних датчиков края |
| Останавливается у линии, затем всё равно уезжает | Поворачивает, продолжая двигаться; сначала остановитесь полностью |
Шесть из этих восьми проблем относятся к механике или измерениям. Распределение совпадает с показанным для робота Micromouse и объясняется тем же: алгоритм составляет меньшую часть задачи.
Если нужны измерения и геометрия остановки без механической гонки вооружённых роботов, симулятор обхода препятствий выполняет ту же арифметику тормозного пути с передним датчиком, а робот для обхода препятствий является более простой сборкой с почти тем же оборудованием. Для теории привода, лежащей в основе всего этого, план обучения управлению двигателями начинается с выбора компонентов и заканчивается одометрией.
Дорожная карта проекта
Путь сборки
Следуйте по дереву технологий от деталей к работающему роботу. Каждый узел открывается, когда выполнены его предварительные условия, а ваш прогресс сохраняется на этом устройстве.
0 / 18 выполнено
Компоненты
- КонтроллерArduino UnoПрощающая 8-битная плата, с которой большинство знакомится с робототехникой.
- ДатчикМассив ИК-датчиков отражения (IR)Ряд инфракрасных «глаз», который сообщает роботу, где находится линия.
- ДатчикДатчик расстояния VL53L0X ToFЛазерное измерение по времени пролёта — узкий луч с точностью до миллиметра там, где сонар слишком груб.
- Исполнительный механизмРедукторный двигатель N20 с энкодеромКомпактный двигатель с металлическим редуктором и энкодером: робот знает, насколько продвинулся.
- ДрайверДрайвер двигателей TB6612FNGMOSFET H-мост, сохраняющий то напряжение, за которое вы действительно заплатили.
- ШассиШасси робота 2WDПлатформа, к которой крепятся два двигателя, свободный опорный ролик и вся электроника.
- ПитаниеБатарейный блок питания роботаРазница между работающим роботом и роботом, который постоянно перезагружается.
Руководства на этом пути
- Средний · 25 минС какой силой может толкать робот: сцепление и массаДва предела задают силу толкания, и на небольшом роботе почти всегда ограничивает именно сцепление.
- Средний · 25 минОстановка у края: задержка и тормозной путьНасколько робот проезжает дальше только что увиденной линии и какая скорость позволяет ему остановиться вовремя.
- Начальный · 17 min readКонечные автоматы для поведения роботаЗамените запутанную логику робота явными состояниями, событиями, переходами, тайм-аутами и восстановлением.
- Начальный · 20 минМассив инфракрасных датчиков для робота, следующего по линииПреобразование ряда инфракрасных датчиков в единую плавную позицию линии, по которой можно управлять роботом.
- Средний · 35 minВыбор двигателя с редуктором: момент, RPM и срывОпределите нужный роботу момент и RPM, затем сопоставьте техническое описание с реальными числами.
Часто задаваемые вопросы
Что такое мини-сумо?
Это класс соревнований боевых роботов, где два автономных робота пытаются вытолкнуть друг друга из кругового кольца, без оружия и повреждений от контакта. В мини-сумо робот ограничен массой 500 г и размером основания 10 × 10 см с неограниченной высотой; кольцо представляет собой чёрный диск диаметром 77 см с белой границей шириной 25 мм по краю. Раунд заканчивается, когда корпус одного робота касается пола за кольцом, что гораздо чаще происходит из-за съезда с края, а не из-за выталкивания.
Почему есть ограничение массы, если более тяжёлые роботы толкают сильнее?
Именно в этом и заключается смысл. Усилие толкания небольшого робота ограничено трением: оно равно коэффициенту трения, умноженному на вес на ведущих колёсах, и составляет лишь около четверти усилия, которое могли бы обеспечить двигатели. Ограничение массы ограничивает усилие, не позволяя классу превратиться в соревнование того, кто купил самые большие двигатели. Это также означает, что каждую машину стоит довести до предела, поскольку в рамках правил масса является ресурсом, а отказ от 100 г означает отказ от 20% усилия толкания.
Нужны ли энкодеры на двигателях?
Для первого робота нет. В сумо не требуется одометрия: роботу не нужно знать своё положение в кольце, достаточно знать, не собирается ли он покинуть его. Позже энкодеры помогут определять блокировку против соперника, в отличие от свободного движения. Это действительно другое состояние, о котором полезно знать коду поведения. Сначала соберите без них и добавьте, когда конечному автомату потребуется эта информация.
Ультразвуковой датчик или датчик времени полёта для обнаружения соперника?
В кольце — датчик времени полёта. Ультразвуковой луч расходится примерно на 15 градусов и отражается от пола и любой близкой поверхности, поэтому ищущий робот находит стены, столы и собственную границу кольца. У VL53L0X узкий конус, и он выполняет измерение примерно за 20 мс без акустических помех. Классическая альтернатива — пара аналоговых ИК-датчиков малой дальности под углом наружу: они недороги и быстрые, но обнаруживают тёмного соперника намного позже светлого.
Насколько быстро робот должен двигаться?
Медленнее, чем хочется. При задержке от датчика до торможения 25 мс и силиконовых шинах робот с датчиком края на 40 мм впереди оси может двигаться примерно 0.98 метра в секунду, пока ещё способен остановиться внутри границы; поскольку при резком торможении колёса переходят на меньший коэффициент трения, честное значение составляет примерно 0.8 метра в секунду. Большинство первых роботов рассчитаны на полтора m/s и проигрывают каждый раунд краю, а не сопернику.
Почему мой робот проигрывает внешне похожему?
Почти всегда из-за переднего края. Роботы одинаковой массы и сцепления толкают одинаково, пока один не подведёт клин под другого, а подъём 40% веса соперника увеличивает ваше усилие в 2.3 раза относительно его: вес, который вы поднимаете, одновременно увеличивает ваше сцепление и уменьшает его. Это сильнее любого доступного изменения двигателя, шин или аккумулятора и определяется долей миллиметра зазора под клином на его кончике.