Определение координат робота по локальным координатам маяков

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск


Недостатки метода триангуляции и аналогичных "точных" методов

Схема метода триангуляции

Классические подходы к определению глобальных координат обычно опираются на метод триангуляции или что-то в этом роде.

Метод триангуляции позволяет определить положение робота, решив треугольник (строго говоря, не один). А именно, зная расстояние между маяками-реперами (на рисунке обозначено как base), а так же имея измеренные расстояния до реперов (dist_1 и dist_2), мы можем определить положение робота. Как решать треугольники см. соответствующую статью в разделе "Планиметрия" обучающего сайта.

Одного треугольника не достаточно для точного определения положения робота, т.к. зная измеренные расстояния dist_1 и dist_2 и базу маяков base мы получаем две точки равновероятного положения робота. Вторую точку на рисунке можно найти, отразив треугольник относительно линии base.

На практике часто вместо достаточной для триангуляции и точной информации, мы имеем избыточную, но неточную, а поэтому противоречивую информацию. Например, мы знаем что расстояние между маяками 1 и 2 составляет 10м, но наши сенсоры выдали нам ответ, что расстояние до маяка 1 составляет 4 метра, а до маяка 2 расстояние 5 метров. В этом случае очевидно что мы имеем погрешность измерения расстояния до маяков минимум 0.5м. Если мы можем с хорошей точностью оценивать погрешность каждого известного нам параметра, то это в значительной степени может нам из массы неточной информации получить более-менее точные глобальные координаты, как это делается - читайте ниже.

Поиск глобальных координат робота через минимизацию функции "неправдоподобия"

Мы будем рассматривать ситуацию в которой у нас избыточная или достаточная информация, из которой мы можем с некоторой точностью назвать наши координаты и, возможно, направление.


Попробуем теперь понять, информация какого сорта может у нас оказаться:

  • С погрешностью измеряемой в единицах угла:
    • Ориентация робота глобальная (компас, звезды); (измеренный угол - GAi, погрешность GAPi единиц угла);
    • Ориентация робота локальная (известные объекты на карте); (измеренный угол - Ai, погрешность APi единиц угла);
  • С погрешностью измеряемой в единицах длины:
    • Расстояние от робота до известных объектов; (измеренное расстояние - Di, погрешность - DPi единиц длины)
    • Локальные координаты маяков относительно робота; (измеренные координаты - Xi,Yi, погрешность - ZPi единиц длины)
    • Глобальные координаты робота (GPS / энкодеры / другие готовые системы); (измеренные координаты - GXi,GYi, погрешность GZPi единиц длины)


В первую очередь мы должны определиться с тем, как будем соотносить погрешности угла и длины, то есть погрешность в сколько единиц длины для нас так же важна как погрешность в одну единицу угла. Далее будем называть эту величину K0. Кроме того - условимся, что все погрешности ненулевые (нет абсолютно точных приборов дающих информацию с бесконечной точностью, даже если прибор не дает неправильного ответа, у него все равно есть шаг деления, и точность - минимум половина этого шага).


Далее мы введем функцию "неправдопободия глобальных координат и направления робота" F(x,y,a) и вся работа будет сведена к минимизации этой функции. Наиболее простой и общепринятый подход к определиню такой функции - принять за неё сумму взвешенных квадратов отклонений (Wi*Di)^2 ожидаемого значения параметров при расположении робота (x,y,a) от наблюдаемого. Вес Wi каждого отклонения - 1/(погрешность соответствующего измерения параметра) для отклонений в единицах длины и K0/(погрешность соответствующего измерения параметра) для отклонений в единицах угла. При этом каждое Di есть функция 3 параметров - x,y,a - координат и направления робота.


То есть мы просто ищем наиболее правдоподобные координаты и направление робота, учитывая имеющуюся у нас информацию и сведения о точности этой информации.

Типовые компоненты Xi,Yi

Если мы замерили локальные координаты (XLOCi,YLOCi) относительно робота объекта, чьи глобальные координаты известны как (XOi,YOi), тогда i-я компонента функции "неправдоподобия" координат робота (X,Y,A) соответствующая этой информации будет считаться как Di=(X+XLOCi*cos(A)-YLOCi*sin(A)-XOi)^2+(Y+YLOCi*cos(A)+XLOCi*sin(A)-YOi)^2. (вроде не ошибся(?))

Поиск минимума полученной функции

Мы будем пользоваться доступной нам вычислительной мощность и часть задачи решим перебором, а именно - мы будем перебирать все возможные углы ориентации робота, а искать аналитическим методом будем только координаты. А при выбранной гипотезе по текущему направлению робота функция неправдоподобия примет вид F(x,y)=A*x^2+B*x+C*y^2+D*y+E, соответственно минимум её находится в координатах x0,y0, являющихся решениями уравнений F'x=0, F'y=0, то есть 2*A*x+B=0, 2*C*y+D=0.


Пример использования метода

Маяковая система навигации, определяющая положение роботов по 3м маякам с известными координатами. Полностью автономная, с промышленным протоколом.Описание системы вы можете найти здесь http://robot-develop.org/archives/484 Эта система применялась для навигации мобильного автономного робота проекта Евробот 2011.