Одометрия



Одометрия (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 для колеса что проехало больший путь…

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение