Одометрия (Odometry — от греческих слов hodos («перемещение», «путешествие») и metron («мера», «измерять»)) — использование данных о движении приводов, для оценки перемещения.
Одометрия применяется:
* в роботах (для подсчёта пройденного пути)
* станках с ЧПУ (для отслеживания положения инструмента),
* принтерах (для отслеживания положения печатающей головки),
* устройствах управления, например — компьютерных мышках (для отслеживания перемещения)
Одометрия не является методом определения положения, а лишь средством его оценки.
Стандартной схемой одометрии робота, является использование энкодеров, считывающих угол поворота колёс.
Используя разные типы энкодеров, можно добиться отслеживания не только угла, но и направления вращения (например — используя коды Грея).
Т.о., если робот движется, то отслеживая данные энкодеров, можно легко узнать пройденное им расстояние:
C = 2*PI*R = PI*D
— формула длины окружности
,где R — радиус колеса (соответственно, D — диаметр колеса).
За один оборот колеса, робот сдвигается на расстояние C.
Пусть, энкодер, связанный с колесом, даёт за один оборот — N отсчётов.
Т.о., пройденное расстояние можно вычислить по формуле:
n n L = --- * C = --- * 2*PI*R = (n/N)*PI*D N N
, где
L — итоговое пройденное расстояние (за заданный промежуток времени),
n — суммарное число отсчётов энкодера (за заданный промежуток времени),
N — число отсчётов энкодера за один оборот колеса,
R — радиус колеса (D — диаметр колеса).
Разумеется, очевиден недостаток этого метода — он не может учитывать «проскальзывания» или «заклинивание» колеса.
Пример: в старых — шариковых компьютерных мышках, была известная проблема — «проскальзывание» шарика.
Сейчас этой проблемы не существует, т.к. используются оптические мышки, работающие на принципах визуальной одометрии.
Рассмотрим робота с дифференциальным приводом (differential drive robot) (стандартная конструкция — два ведущих колеса и, при этом, каждое колесо приводится в движение отдельным двигателем.
Пример: робот-пылесос iRobot Roomba).
Инкрементные энкодеры, расположенные на колёсах робота, фиксируют «пройденное расстояние».
Новое положение центра O робота в момент времени t+1 будет составлять (в радианах):
O(t+1) = O(t) + (Dr - Dl)/W
, где
O(t) — положение робота в момент времени t
Dr — расстояние, пройденное правым колесом робота
Dl — расстояние, пройденное левым колесом робота
W — ширина робота
Расстояние, пройденное за этот промежуток времени можно оценить так:
D(t,t+1) = (Dr + Dl)/2
— линейная аппроксимация криволинейной траектории (т.о., чем больше интервал времени между отсчётами — тем хуже приближение).
Для отображения координат робота на карте можно рассчитать его Декартовы координаты:
X(t+1) = X(t) + D(t,t+1)*cos(O(t+1)) Y(t+1) = Y(t) + D(t,t+1)*sin(O(t+1))
Т.о., одометрия — недорогое средство, которое даёт хорошую кратковременную точность и позволяет реализовать большую частоту дискретизации.
Однако, необходимо учитывать, что при рассмотрении более длительных промежутков времени, накопление погрешностей приводит к увеличению ошибки ориентации, которая растёт пропорционально пути, пройденному роботом.
Источники погрешности:
* погрешность измерения радиуса колёс
* различные размеры колёс (для роботов у которых больше одного колеса)
* ошибки подсчёта импульсов от энкодеров
* низкая частота обработки одометрии
Последнее, например, может привести к следующей ошибке:
— всё тот же робот с дифференциальным приводом, два ведущих колеса которого оборудованы инкрементными энкодерами, которые накапливают информацию о перемещении робота.
При этом, слева, изображена ситуации, когда робот двигается по прямой линии, и поэтому, значения энкодеров равны.
А справа, изображена ситуация, когда робот совершил огибание препятствия.
Синий энкодер считает 80, а зелёный считает 40 — это означает, что робот выполнил правый поворот. Тем не менее, робот затем повернул влево, и в конечной позиции, энкодеры насчитали одно и то же значение (оно больше, чем значения на левом рисунке, так как робот проехал большее расстояние, следуя по S-образной кривой).
Теперь, если управляющее программное обеспечение робота, считает значение датчиков только в их конечном положении, то естественно предположить, что робот двигался по прямой линии.
Вот и получается, что низкая частота обработки данных от энкодеров может привести к ошибкам.
Ссылки
http://en.wikipedia.org/wiki/Odometry
По теме
Энкодер
Визуальная одометрия
0 комментариев на «“Одометрия”»
Че то школьную физику напоминает)
что делать — физика она такая )
А есть пример реализации одометрии на практике?
я тоже искал… пока нашел только алгоритм:bschepan.narod.ru/robopica/alg_stab.pdf
Читал что нужно считывать показания с левого и правого колеса, если их разница равна 0, движение робота прямолинейное. А разница будет коефициеном корекци с помоцюю которого расщитываеться значение PWM для колеса что проехало больший путь…