Робот проехал квадрат. На экране расчётная траектория замкнулась, а на полу корпус оказался в стороне и немного повёрнут. Энкодеры могли работать исправно: они измерили вращение колёс, а не абсолютное положение в комнате.
Колёсная одометрия оценивает движение корпуса по вращению колёс. Она доступна и полезна между внешними измерениями. Но каждое небольшое расхождение интегрируется вместе с полезным движением, поэтому ошибка растёт по мере пути.
Принципиальная схема, не результат испытания «Зари 40».
Что считает одометрия
Для дифференциального привода приращения колёс ΔsL и ΔsR дают:
Δs = (ΔsR + ΔsL) / 2
Δθ = (ΔsR - ΔsL) / L
Затем маленькое перемещение переносится в x, y с учётом текущего курса, и процесс повторяется. Modern Robotics определяет одометрию как оценку конфигурации корпуса путём интегрирования движения колёс и отмечает накопление ошибок из-за скольжения и численного интегрирования.
Следующая точка строится от предыдущей оценки, а не от внешней истины. Ошибка курса особенно заметна: дальнейшие шаги проецируются уже в неверном направлении.
Четыре источника ошибки
Эффективный радиус
Если радиус задан неверно, масштаб пути неверен. Если радиусы сторон различаются, прямая превращается в дугу. Влияют деформация, давление, износ, покрытие и нагрузка, поэтому ненагруженный диаметр — начало модели, не финальная калибровка.
Эффективная колея
В формуле курса разность пути делится на L. Ошибка колеи искажает повороты. ROS 2 diff_drive_controller предупреждает: неверный wheel_separation приводит к неправильному поведению в кривых, а для уточнения есть multiplier.
Дискретность и время
Энкодер выдаёт конечное число отсчётов, сообщения имеют частоту и временные метки. Квантизация заметна на малых перемещениях, а рассинхронизация сторон и потерянные отсчёты превращаются в ложный путь или курс.
Скольжение и удар
Если колесо вращалось на месте, энкодер добавит путь, которого корпус не прошёл. Боковое скольжение простая модель тоже не видит. Порог, рыхлый грунт и резкий разворот создают ошибки, которые нельзя исправить одним коэффициентом.
Систематическая и случайная ошибка
Стабильное различие радиусов или неверная колея создают повторяемую картину. Их можно измерить и скорректировать в заданных условиях. Случайное скольжение повторяется хуже.
Работа Боренстайна и Фэна Measurement and Correction of Systematic Odometry Errors предлагает UMBmark: многократный квадратный маршрут по и против часовой стрелки помогает разделить ошибки колеи и отношения диаметров. Метод корректирует систематические ошибки, но не отменяет случайное скольжение.
Почему одного квадрата недостаточно
При движении только в одну сторону разные ошибки могут частично компенсироваться. Один удачный финиш не доказывает точность.
Минимальный протокол:
- Зафиксировать версию, поверхность, шины, нагрузку и питание.
- Задать длину стороны, число повторов и скорость.
- Выполнить серии по и против часовой стрелки.
- Измерять внешний финиш относительно старта, а не только
/odom. - Сохранять каждый прогон, а не лишь среднее.
- После калибровки повторить весь протокол.
Скачайте журнал контрольного маршрута. Это учебный протокол, не полная реализация вычислений UMBmark.
Open loop — ещё более сильное допущение
ROS 2 может строить одометрию по hardware feedback. В режиме open_loop она интегрируется из команд. Такая оценка не замечает отставание мотора, ограничение тока или блокировку колеса.
Командная одометрия полезна как явно обозначенная модель, но её нельзя выдавать за измеренную траекторию. Даже feedback по энкодерам остаётся относительной оценкой.
Внешняя опора и неопределённость
Число x=4,2 м без неопределённости выглядит точнее, чем знание позволяет. ROS 2 содержит параметры covariance и рекомендует настраивать их по данным конкретного робота.
Камера, лидар, маяки или GNSS в подходящей среде могут ограничивать долгосрочный дрейф. IMU помогает наблюдать вращение, но сама имеет смещения. Слияние датчиков требует согласованных координат, времени и реалистичных неопределённостей.
Связь с «Зарёй 40»
«Заря 40» — открытый дневник разработки и испытаний нескольких вариантов роботизированных платформ, доступных для изучения, доработки и адаптации под разные задачи.
Материал задаёт структуру будущего доказательства: версия геометрии, настройки радиусов и колеи, сырые отсчёты, внешний маршрут, повторения и условия. Он не утверждает, что на текущей платформе установлены энкодеры, настроена одометрия или достигнута какая-либо точность.
Одометрия отвечает не «где робот точно», а «где он, вероятно, оказался по накопленным измерениям движения».
UMBmark: десять точек вместо одного красивого заезда
Для учебного UMBmark используют квадрат 4×4 м, пять прогонов по часовой и пять против часовой стрелки, с низкой скоростью и измерением фактической финальной позы. В таблицу вносят покрытие, нагрузку, состояние колёс, скорость, финальные X/Y/θ и ошибку одометрии. Разнесённые кластеры CW/CCW указывают на систематическую геометрию; большой разброс внутри кластера — на покрытие и скольжение. Это метод проверки, а не обещание точности: исходный Borenstein & Feng объясняет, зачем нужны оба направления.