Как робот определяет своё положение с помощью одометрии?
Робот ездит по комнате без GPS, но как-то понимает, где он находится и сколько проехал. Говорят, это одометрия по колёсам. Как она работает и почему накапливается ошибка?
2 ответа
Одометрия — это оценка положения робота по тому, насколько повернулись его колёса. На колёсах стоят энкодеры — датчики, считающие обороты (точнее, доли оборота).
Логика простая:
- Знаем диаметр колеса → за один оборот робот проезжает длину окружности
π · D. Если D = 6 см, то один оборот =3.14 · 6 ≈ 18.8 см. - Энкодер сообщает, на сколько «тиков» повернулось каждое колесо → считаем пройденный путь каждого колеса.
- Если оба колеса прошли одинаково — едем прямо. Если правое прошло больше левого — повернули налево. По разнице путей колёс вычисляем поворот и новое положение (x, y, угол).
Почему копится ошибка (дрейф): одометрия только складывает перемещения, поэтому маленькие неточности накапливаются и не исправляются сами. Источники ошибок:
- проскальзывание колёс (особенно при резком старте/повороте);
- неточный диаметр колеса, неровный пол;
- округление при счёте тиков.
Через несколько метров оценка «уплывает». Поэтому одометрию комбинируют с другими датчиками: гироскопом (точнее меряет поворот), лидаром или камерой — и фильтром (Калмана) сводят данные вместе. Одометрия отличная на коротких отрезках и как «черновая» оценка между обновлениями.
Аналогия: иди с закрытыми глазами и считай шаги — примерно поймёшь, где ты. Но если разок поскользнёшься или шаги будут неровными, к концу коридора ошибёшься на метр. Так и одометрия: она «считает шаги колёс». Поэтому её всегда подкрепляют гироскопом и внешними ориентирами, чтобы сбрасывать накопленную ошибку.