Путь сборкиСреднийВыходные

Соберите робота на колёсах Mecanum, который едет боком

Робот, который проезжает боком квадрат со стороной 1 m, возвращается с отклонением не более 5 cm, ни разу не поворачиваясь, и сохраняет направление движения при ручном повороте.

Техническая схема: Соберите робота на колёсах Mecanum, который едет бокомBASE_LINKVxVyωzFOUR WHEELS · THREE DEGREES OF FREEDOMROLLERS AT 45° MAKE AN X

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

Четырёхколёсного робота, который может двигаться в любом направлении по полу, не поворачиваясь сначала, и поворачиваться, не меняя направления движения. Двигайте его боком вдоль узкого прохода, в который он едва помещается; удерживайте камеру нацеленной на объект, облетая его вокруг; исправляйте отклонение 3 cm от линии шагом 3 cm вместо движения по дуге наружу и обратно.

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

Приёмочное испытание намеренно предельно простое: проехать боком квадрат 1 m и вернуться домой в пределах 5 cm без изменения курса. Ни один робот с дифференциальным приводом вообще не способен пройти такое испытание.

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

Вся эта сборка сводится к одной константе:

k = lx + ly

где lx — половина колёсной базы (от передней оси до задней, делённая пополам), а ly — половина ширины колеи (от левых колёс до правых, делённая пополам). В эталонной сборке это 75 mm и 85 mm, поэтому k = 0.160 m.

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

Другие числа, которые стоит написать маркером на шасси до начала работы:

Величина Эталонная сборка Откуда берётся
Радиус колеса r 48.5 mm Колёса Mecanum 97 mm
Отсчёты на один оборот колеса 1440 12 CPR × 30:1 × 4 квадратурных фронта
Метры на один отсчёт 212 µm 2πr ÷ 1440
Максимальная скорость колеса V_MAX 0.60 m/s Измерена на опорах, затем уменьшена на 15%
Предел по диагонали 0.424 m/s V_MAX ÷ √2, и никакая замена двигателей его не устранит
Предел ускорения 5.9 m/s² μg/√2 при μ = 0.85 — масса не влияет на результат

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

Компонент Кол-во Примерная стоимость Примечания
Колёса Mecanum, 80 или 97 mm 4 £28–70 Покупайте комплект из четырёх — два левых и два правых
Редукторный двигатель N20 с энкодером, 30:1 4 £9–14 каждый Подберите одинаковые. Полезный диапазон 100–250 rpm на колесе
Двойной H-мост TB6612FNG 2 £4–8 каждый L298N работает, но теряет ~3 V; на аккумуляторе 2S это почти вся скорость
Отладочная плата ESP32 1 £6–12 Четыре канала PWM, четыре пары прерываний энкодеров и бесплатная телеметрия по Wi-Fi
IMU MPU6050 1 £2–4 Установите плашмя, подальше от двигателей, на центральной оси шасси
2S LiPo, 1500–2200 mAh, 25C 1 £12–20 Выбирается по току, а не ёмкости: суммарный ток блокировки четырёх двигателей составляет ~5 A
5 V BEC или понижающий преобразователь 1 £3–5 Не питайте ESP32 от силовой шины двигателей
Пластина шасси, 200 × 180 mm 1 £10–25 Лазерно вырезанный акрил, алюминий 3 mm или изготовленная самостоятельно
Крепления двигателей, ступицы, крепёж 1 комплект £8–15 Согласуйте посадочное отверстие ступицы с валом двигателя — 3, 4 или 6 mm
Конденсатор большой ёмкости, 470 µF 2 £1 По одному на силовую шину двигателей каждого драйвера

Итого: £90–170. Именно колёса и четырёхкратное число двигателей превращают £50 двухколёсного робота в эту сумму.

Как всё соединено

        2S LiPo ──┬── 470 µF ── TB6612FNG #1 ── FL motor ── FL encoder ─┐
                  │                         └── FR motor ── FR encoder ─┤
                  ├── 470 µF ── TB6612FNG #2 ── RL motor ── RL encoder ─┼── ESP32
                  │                         └── RR motor ── RR encoder ─┘   (4 PWM,
                  └── 5 V BEC ──────────────────────────────── ESP32 ──────  8 GPIO,
                                                                   │         I²C)
                                                   MPU6050 ── I²C ─┘

Три решения при подключении неочевидны:

  • ESP32 получает собственный стабилизатор питания. Одновременный пуск четырёх двигателей резко снижает напряжение аккумулятора, и контроллер на общей шине перезагружается посреди команды. Это выглядит точно как сбой прошивки. Прочитайте руководство по бюджету питания, прежде чем винить код.
  • Конденсатор большой ёмкости на каждом драйвере. 470 µF как можно ближе к плате. H-мосты потребляют ток импульсами, и индуктивность проводов превращает эти импульсы в выбросы напряжения.
  • IMU устанавливается на центральной оси плашмя и как можно дальше от двигателей в пределах пластины. Дрейф угла рыскания и без того велик, не стоит добавлять магнитное поле четырёх двигателей.

Сборка по этапам

У каждого этапа есть проверка. Не переносите неудачу дальше: на роботе с четырьмя двигателями ошибки накапливаются.

1. Установите колёса и выполните проверку в виде X

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

Два вида сверху одного и того же четырёхколёсного робота с носом вверху. На верхней панели под названием «верно» изображена X, эффективный радиус поворота lx + ly равно 160 мм, пунктирные голубые линии, продолженные от видимых роликов каждого колеса, пересекаются в центре робота и образуют X. На нижней панели под названием «неверно» изображена O, эффективный радиус поворота равен абсолютному значению lx минус ly, то есть 10 мм; те же линии от колёс с красной отметкой образуют вокруг робота ромб и никогда не проходят через центр. Подпись предлагает встать над роботом и проследить за роликами, видимыми сверху.
Этап 1 и самые дешёвые пять секунд всей сборки. Продолжите линии роликов, видимых сверху каждого колеса: они должны пересекаться в центре робота. Скачать SVG

Проверка: четыре линии направлены к центру робота и образуют X. Если они образуют ромб, поменяйте местами два колеса по диагонали. Критерий: X. Эта пятисекундная проверка экономит день.

2. Каждый двигатель по отдельности

Подключите все четыре и напишите скетч, который по секунде вращает одно колесо при скважности 40%.

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

3. Энкодеры

Один оборот каждого колеса, вращённого вручную.

Проверка: выведите отсчёт. Критерий: отклонение от 1440 в пределах 2% и положительное значение при вращении колеса вперёд. Скачущий или отрицательный отсчёт означает, что прерывание срабатывает по одному каналу вместо двух либо что значение volatile long считывается без отключения прерываний.

4. Кинематика на опорах

Поставьте робота на опоры и задайте чистое боковое движение.

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

5. Один контур скорости

Настройте упреждение, затем PI на одном колесе сначала на опорах, затем под нагрузкой.

Проверка: задайте 0.3 m/s и нажмите пальцем на шину. Критерий: скорость сохраняется, а PWM заметно возрастает. Выполните это один раз качественно; остальные три контура — копии со своими kS и kV.

6. Все четыре колеса по прямой

Четыре контура, 100 Hz, на полу. Проедьте 3 m прямо.

Проверка: измерьте боковое отклонение в конце. Критерий: менее 20 mm и повторяемость в трёх заездах. При разомкнутом управлении это обычно 80–200 mm, и каждый раз значение разное.

7. Движение боком на 1 m

Проверка: проедьте точно один метр боком и измерьте расстояние и изменение курса. Критерий: в пределах 5 cm, изменение курса в пределах 3°. Устойчивая кривизна означает неверную константу k; случайная — что контур скорости не удерживает заданную скорость.

8. IMU и управление с ориентацией на поле

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

Проверка: удерживайте джойстик вперёд и вручную поверните робота на полный оборот. Критерий: он продолжает двигаться в прежнем направлении по полу. При неподвижном роботе дрейф угла рыскания менее чем на 3° в минуту.

9. Квадрат

Приёмочное испытание. Проедьте 1 m вперёд, 1 m вправо, 1 m назад, 1 m влево, нигде не задавая вращение.

Проверка: расстояние от начальной точки и изменение курса. Критерий: в пределах 5 cm и 3°.

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

Измерение Первый заезд, разомкнутое управление Настроенное замкнутое управление
Боковое отклонение на прямой 3 m 80–200 mm, зависит от аккумулятора Менее 20 mm, повторяемо
Точность движения боком на 1 m 10–20 cm, заметная кривизна В пределах 5 cm
Изменение курса за квадрат боком 10–30° Менее 3°
Максимальная диагональная скорость Что сохранится при ограничении 0.42 m/s — предел √2, достигнутый без потерь
Скорость при просадке аккумулятора 8.4 → 7.0 V Снижается ~17% Не меняется до насыщения двигателей
Ошибка одометрии за квадрат Измерять не стоит 2–5 cm на хорошем полу и намного хуже на пыльном

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

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

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

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

Колёса Mecanum тяжёлые. По 180–400 g каждое, поэтому до 1.6 kg массы робота приходится на колёса, расположенные на концах плеч момента. Это заставляет робота казаться вязким и объясняет важность предела ускорения.

Пол является компонентом. Полированный бетон и винил имеют μ ≈ 0.8. Пыльное покрытие спортзала, след лака для волос с другого робота или шов линолеума вдвое локально снижают это значение, и при пересечении такого участка поведение робота меняется. Посмотрите, что происходит при μ = 0.25, прежде чем винить настройку.

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

Симптом Причина Исправление
Вперёд нормально, при движении боком появляются кривизна и вращение Колесо находится не в том углу Проверка в виде X; невязка кинематической модели будет большой и постоянной
Едет боком в сторону, противоположную команде Все четыре колеса зеркально переставлены Поменяйте местами левую и правую пары
При вращении на месте есть и поступательное движение Неверное k или измерение по шасси Повторно измерьте от центра колеса до центра колеса
Робот перезагружается при пуске всех четырёх двигателей Просадка питания, а не сбой Отдельный стабилизатор питания для ESP32; конденсаторы большой ёмкости; проверьте внутреннее сопротивление аккумулятора
По диагонали намного медленнее, чем прямо Предел √2 — так и задумано Исправлять нечего
При любом автоматическом управлении наклоняется на поворотах Каждый двигатель ограничивается отдельно вместо масштабирования команды Масштабируйте по худшему колесу
Вручную едет хорошо, автономно бесполезен Проблема в одометрии, а не управлении IMU для курса; короткие заезды; рассмотрите пассивные колёса
Одно колесо всегда насыщено Слишком большое задание или этот двигатель слабее Снизьте V_MAX до значения, которое реально удерживают все четыре
Отсчёты энкодера дрейфуют за минуты Пропущены фронты на высокой скорости Прерывание по обоим каналам; проверьте, что обработчик ISR короткий

Куда двигаться дальше

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

Следование траектории на голономическом приводе. Pure pursuit и Stanley предполагают робота, который меняет направление колёсами. Шасси, способное двигаться боком, может работать лучше: положение на траектории и курс отслеживаются независимо, потому что для них имеются отдельные исполнительные механизмы.

Камера на шасси, удерживающем курс. Естественное сочетание: конвейер компьютерного зрения значительно проще, когда камера остаётся направленной на цель, пока шасси меняет положение. Именно для этого и нужен голономический привод.

ROS 2. Это первый привод здесь, где cmd_vel содержит linear.y — явно игнорируемую роботом с дифференциальным приводом — и эта координата наконец получает смысл. Замена функции преобразования вектора скорости в скорости колёс на четырёхстрочную версию для Mecanum — основная часть работы.

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

Путь сборки

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

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

100%
Цель

Робот, который проезжает боком квадрат и возвращается домой

Весь проект

Учебный путь

Голономический привод

План обучения

Открыть путь

Компоненты

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

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

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

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

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

Можно ли собрать такого робота на Arduino Uno?

Неудобно, и причина в числе выводов, а не вычислительной мощности. Четырём колёсам нужны четыре выхода PWM, а четырём квадратурным энкодерам — четыре пары выводов, поддерживающих прерывания. У Uno есть шесть выводов PWM на трёх таймерах, но стоит использовать библиотеку Servo или tone(), и два из них перестают работать; кроме того, имеется всего два внешних вывода прерываний. Можно применить прерывания по изменению состояния выводов и отказаться от одного энкодера, но тогда вы проведёте выходные в борьбе с платой, а не с роботом. ESP32 или Mega 2560 стоит на несколько фунтов дороже и полностью устраняет проблему. Здесь используется ESP32, поскольку он также обеспечивает телеметрию по Wi-Fi, что действительно полезно при настройке четырёх контуров регулирования одновременно.

Сколько стоит собрать робота на колёсах Mecanum?

Примерно £90–170 в зависимости от размера колёс и качества двигателей, то есть примерно вдвое больше эквивалентного двухколёсного робота. Рост затрат распределён предсказуемо: четыре колеса Mecanum вместо четырёх обычных — самая крупная статья, четыре двигателя вместо двух, четыре канала H-моста, четыре кабеля энкодеров и более крупный аккумулятор, поскольку ток четырёх заблокированных редукторных двигателей вдвое больше худшего случая. Многие недооценивают переход на более мощный контроллер — заложите его в бюджет сразу, а не после сверления шасси.

Почему мой робот на колёсах Mecanum нормально едет вперёд, но разворачивается при движении боком?

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

Нужен ли IMU?

Для автономных испытаний нет: робот проедет квадрат и без него. При ручном управлении да, примерно через десять секунд после того, как вы возьмёте пульт. Голономический робот может быть направлен в одну сторону, а двигаться в другую, поэтому человек почти сразу теряет представление о том, в какую сторону оказалось боковое направление. Управление с ориентацией на поле решает эту проблему одной матрицей поворота, для которой нужен угол рыскания из какого-либо источника. Это компонент за £2 и шесть строк кода, а каждая команда, которая его пропустила, добавила его после первого въезда робота в стол.

Насколько точна одометрия на шасси с колёсами Mecanum?

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

Может ли этот робот толкать предметы?

Плохо. Колесо Mecanum может эффективно передавать усилие только вдоль оси ролика под углом 45 градусов, трение ограничивает весь вектор силы, а движение вам обеспечивает только составляющая вдоль направления качения. Поэтому вы получаете около 71 процента сцепления по сравнению с тем же роботом на обычных колёсах, ещё до учёта того, что резина роликов обычно сцепляется хуже шины. Добавление массы не помогает: большая масса даёт пропорционально больше трения и пропорционально больше инерции, и эти эффекты полностью компенсируются. Если толкание — главная задача, соберите вместо этого мини-робота сумо на обычных колёсах: он выиграет каждый раз.