Одометрия


Одометрия (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

По теме:
Энкодер
Визуальная одометрия
  • +2
  • 29 января 2012, 15:44
  • admin

Комментарии (4)

RSS свернуть / развернуть
+
0
Че то школьную физику напоминает)
avatar

Luan

  • 29 января 2012, 21:09
+
0
что делать — физика она такая )
avatar

admin

  • 30 января 2012, 06:30
+
0
А есть пример реализации одометрии на практике?
avatar

Dnik

  • 11 марта 2013, 18:31
+
0
я тоже искал… пока нашел только алгоритм: bschepan.narod.ru/robopica/alg_stab.pdf

Читал что нужно считывать показания с левого и правого колеса, если их разница равна 0, движение робота прямолинейное. А разница будет коефициеном корекци с помоцюю которого расщитываеться значение PWM для колеса что проехало больший путь…
avatar

Nemo

  • 20 марта 2013, 17:17

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.