Об авторе →
Меню
← Все разборы
ARTICLEGUIDE

Практика

Дифференциальный привод: почему робот не едет прямо

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

10Z40 / EXPLAIN
ТИППрактика
СТАТУСДоступно
ДОКАЗАТЕЛЬСТВОПроверено независимо
ОБНОВЛЕНО14.09.2026
ПОСЛЕ МАТЕРИАЛА

Проверить карточку конкретной версии

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

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

От команды до траектории

Принципиальная диагностическая цепочка, не схема конкретной версии «Зари 40».

Идеальная модель

Пусть скорости левого и правого колеса равны vL и vR, а расстояние между линиями контакта — L:

v = (vR + vL) / 2

ω = (vR - vL) / L

При vR = vL идеальная модель предсказывает прямую. При равных по величине противоположных скоростях корпус разворачивается на месте.

Учебник Стивена Лавалля описывает эту кинематику. Modern Robotics подчёркивает её допущение: качение без бокового скольжения на твёрдой плоской поверхности.

Одинаковые обороты не означают одинаковое расстояние

Линейная скорость обода равна v = rω. Если эффективные радиусы различаются, одинаковые обороты дают разные расстояния. Причиной могут быть шины, давление, износ, деформация под нагрузкой, налипший материал или ошибка измерения.

ROS 2 diff_drive_controller предусматривает отдельные множители радиуса левого и правого колеса. Это не доказывает причину конкретного ухода, но подтверждает необходимость учитывать возможную асимметрию радиусов в модели.

Одинаковая команда не означает одинаковые обороты

Одинаковый PWM duty cycle — вход, а не результат. Стороны могут различаться по сопротивлению обмоток и редукторов, падению напряжения, прижиму колеса, ограничению тока и характеристике «команда → скорость».

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

Равные показания энкодеров не означают равный путь

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

Разделяйте три наблюдения:

  1. команда контроллера;
  2. измеренное вращение колеса;
  3. внешнее перемещение корпуса.

Совпадение первых двух проверяет контур колеса. Для сопоставления второго и третьего нужна внешняя опора: разметка, камера, маяки или другая система позиционирования.

Механика и нагрузка

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

Поэтому механику проверяют раньше программной поправки. Постоянный коэффициент может компенсировать один режим и ухудшить другой.

Диагностический маршрут

  1. Геометрия: измерить эффективные диаметры, колею, соосность и свободный ход.
  2. Повторяемость: выполнить одинаковые короткие проходы в обоих направлениях на одной поверхности.
  3. Локализация: определить, следует ли симптом за колесом/модулем или остаётся на стороне платформы.
  4. Обратная связь: сопоставить команды и скорости обоих колёс во времени.
  5. Нагрузка: повторить протокол с зафиксированной массой и её положением.
  6. Внешний путь: сравнить колёсную оценку с независимым измерением траектории.

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

Калибровка — не универсальная заплатка

Систематическую разницу радиусов можно учитывать множителями. Ошибка колеи проявляется в поворотах; ROS 2 предупреждает, что неверный wheel_separation искажает движение по кривой.

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

Связь с «Зарёй 40»

«Заря 40» — открытый дневник разработки и испытаний нескольких вариантов роботизированных платформ, доступных для изучения, доработки и адаптации под разные задачи.

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

Равная команда — только начало цепочки. Прямая появляется, когда равны пройденные по поверхности расстояния, а не цифры в двух регистрах.

Протокол вместо подкручивания коэффициента

Сделайте 6–10 проходов в обе стороны с одинаковыми нагрузкой, покрытием и малой скоростью. Для каждого сохраните команды, обратную связь колёс, внешнюю траекторию и температуру/заряд. Если ошибка «переезжает» вместе с модулем — ищите его; если остаётся на стороне — проверяйте механику и контакт с поверхностью. В кинематике скорость рыскания лучше обозначать θ̇, чтобы не спутать её с угловой скоростью колеса. ROS 2 diff_drive_controller отдельно учитывает радиусы и базу колёс, потому что один общий коэффициент часто скрывает проблему.

NEXT / ACTION

Проверить карточку конкретной версии

Вернуться к разборам →