Васильев Иван Анатольевич

Санкт-Петербург, ЦНИИ РТК, нач. лаб., к.т.н.

Управление мобильным роботом с УПРАВЛЯЕМОЙ ПАРОЙ КОЛЁС

 

Введение

В настоящей статье рассматривается управление мобильным четырёхколёсным роботом, с поворотными колёсами, снабженного лазерным сканирующим дальномером – см. рисунок 1.

 

Рисунок 1 – Фото робота

 

Рисунок 2 – Схема робота при движении по дуге

 

 

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

Исходя из вышесказанного, движение робота выглядит так: из начального положения робот выдвигается в такое положение, чтобы двигаться по направлению на цель. Если по пути встретились препятствия, то объезжая их, робот снова должен выходить в положение, из которого двигается по направлению на цель.

Вначале рассмотрим средний уровень управления роботом, то есть, рассмотрим, какое управление требуется выдавать на колёса, для отработки желаемой траектории.

Для прямолинейного движения скорости на все четыре колеса одинаковые. Для движения по дуге радиусом R скорости считаются так (см. рисунок 2):

                  

                 

где                см – статическое колесо, едущее по малому радиусу (внутреннему);

сб – статическое колесо, едущее по большому радиусу (внешнему);

                      пм – поворотное колесо, едущее по малому радиусу;

                      пб – поворотное колесо, едущее по большому радиусу;

                      rut – колея колёс;

                       - заданная скорость, то есть, касательная скорость центра робота (средней точки между статическими колёсами);

                      В – база колёс (расстояние между осями колёс).

Теперь рассмотрим алгоритмы движения в цель.

Алгоритмов три, так как возможны три ситуации: 1. целевая точка находится далеко и к ней можно доехать простым поворотом; 2. целевая точка находится близко и для достижения её требуется выполнить разворот в несколько приёмов; 3. При движении по прямой на цель по пути встретилось препятствие. Разумеется, в системе управления роботом все эти три случая реализованы совместно, но для простоты изложения есть смысл их разделить.

 

Взаимное расположение робота и цели

Целевое положение может быть «далеко» или «близко» от текущего положения робота.

Надо пояснить, что значит «далеко» и «близко». Рассмотрим рисунок 3.

На этом рисунке текущее положение робота обозначено точкой 0, а ориентация – исходящим из неё вектором. Отрезок (0, цель) совпадает с направлением от текущего положения робота на целевое положение. Можно построить дугу радиусом Rмин  так, чтобы дуга имела касательной в точке текущего положения робота вектор ориентации робота. Следовательно, если расстояние L до цели больше, чем величина хорды Chord, то считаем, что цель – «далеко».

                        

 

Рисунок 3 – схема движения в целевую точку

 

где все символы понятны из рисунка 3. В качестве радиуса поворота R здесь можно применять минимально возможный Rмин.

Если LChord, то считаем, что цель «далеко». То есть, поворачиваясь по радиусу Rмин робот попадёт либо в саму цель, либо выйдет на направление на цель. Если L < Chord, то робот простым поворотом не попадёт в цель, и цель считаем находится «близко».

 

Цель далеко

Алгоритм движения здесь следующий.

1.     Если αturn равно нулю, то едем прямо на цель. Окончание этого алгоритма и переход к алгоритму движения по прямой на цель.

2.     Поворот колёс в сторону знака αturn;

3.     Едем по радиусу, проверяя, не доехали ли:

a.     В цель – останов.

b.     По направлению на цель - переход к алгоритму движения по прямой на цель.

c.     По углу на αturn – вычисляем новые параметры и переходим к п. 1.

d.     К непреодолимому препятствию; переход к п. 4.

4.     Поворот колёс в нейтральное положение;

5.     Едем прямо назад на безопасное расстояние (например, 0.5 метра);

6.     Переход к п. 2.

Идея этого алгоритма (в части объезда препятствия) демонстрируется на рисунке 4. При движении по радиусу проверяется как возможность проезда, то есть, отсутствие препятствия на определённом расстоянии s, так и выход на направление на цель. Если препятствие Obst встретилось, когда робот находился в точке 1, то робот отъезжает назад на определённое расстояние delta в точку 2.

Далее, робот опять едет по радиусу с проверками на препятствие и на направление на цель. Такой рекурсивный алгоритм позволяет, не врезаясь в препятствие, выйти на цель.

Если препятствие расположено таким образом, что выйти на направление на цель невозможно, то во время маневрирования осуществляется проверка на поворот на изначально вычисленный угол αturn, и если это так, то производится запуск алгоритма заново.

 

Рисунок 4 – объезд препятствия при движении по радиусу

 

Рисунок 5 – Движение в ближнюю точку

 

 

Рисунок 6 – объезд препятствия на прямолинейном отрезке движения

 

Цель близка

Цель находится слишком близко, чтобы доехать до неё за один поворот по минимальному радиусу. Здесь придётся действовать по следующему алгоритму.

1.     Поворот колёс противоположно углу αturn;

2.     Движение назад по радиусу на определённый угол (например, на 0.5 рад) с проверкой на направление на цель, если доехали до направления на цель, то переход к алгоритму движения по прямой на цель.

3.     Поворот колёс согласно αturn;

4.     Движение вперёд по радиусу на определённый угол (например, 0.5 рад). Осуществляются проверки на:

a.     Достижение направления на цель – переход к алгоритму движения по прямой на цель.

b.     Достижения цели – останов.

c.     Достижения непреодолимого препятствия – переход к п. 1.

5.     Переход к п. 1.

Идея этого алгоритма поясняется на рисунке 5.

В начале робот находится в точке 0. Далее, робот едет по радиусу в точку 1, оставляя до препятствия зону безопасности размером s. Затем, робот едет по радиусу назад на определённый угол в точку 2. Из точки два робот едет по радиусу вперёд и выходит в точке 3 на направление на цель.

Правомерен вопрос: почему в режиме «цель далеко», при объезде препятствия робот едет назад по прямой, а здесь, в режиме «цель близко» - по дуге? Это сделано исходя из безопасности. В первом режиме нам главное – объехать препятствие. Цель далеко и мы в любом случае на неё выйдем. Поэтому, можно смещаться назад и по прямой (т.к. сзади робота датчиков нет). А во втором режиме у нас задача – развернуться на цель. Объезд препятствия вторичен. Более того, разворот «звёздочкой» будет в таком режиме осуществляться и в отсутствие на пути следования препятствий.

 

Движение на цель по прямой

По причине того, что робот не может разворачиваться на месте, при объезде препятствий требуется это препятствие проехать на определённое расстояние, чтобы это препятствие не требовалось объезжать в дальнейшем, что может привести к зацикливанию алгоритма («робот заблудился»).

Алгоритм здесь довольно прост:

1.     Поворот колёс в нейтраль;

2.     Движение вперед с проверками:

a.     Доехали в цель – останов.

b.     Препятствие на пути следования – переход к п. 3.

3.     Поворот колёс противоположно углу αturn;

4.     Движение назад по дуге на определённый угол (например, 0.5 рад);

5.     Поворот колёс согласно αturn;

6.     Движение вперёд по дуге с проверками:

a.     Препятствие на пути следования – переход к п. 3.

b.     Вперёд есть проезд на определённое расстояние – переход к п. 7.

7.     Поворот колёс в нейтраль;

8.     Движение вперёд до момента, пока минимальное расстояние, измеряемое дальномером, не станет резко больше;

9.     Едем дальше на определенное расстояние (например, 1/2 длины робота);

10.   Переход к пункту вычисления параметров текущего положения и цели.

Алгоритм поясняется на рисунке 6.

В начале робот находится в точке 0 и направлен на цель. Робот движется строго на цель до точки 1, в которой расстояние до непреодолимого препятствия становится менее s.  Дальше робот едет назад по дуге в точку 2 на определённый угол. Затем, робот движется по дуге вперёд с одновременной проверкой на расстояние до препятствия – если это расстояние больше некоторого заданного, как в точке 3, робот движется по прямой вперёд. Это движение производится, пока препятствие не будет полностью проехано (как в точке 4). Далее робот едет по прямой на определённое расстояние в точку 5. После этого должен заново запустится алгоритм движения в цель.

 

Заключение

Набор вышеприведённых алгоритмов гарантированно позволяет роботу доехать в целевое положение с требуемой точностью. Но алгоритмы не рассчитаны для работы робота в лабиринтах, то есть, в тех зонах, где расстояния между препятствиями сравнимы с характерным размером робота. Поэтому данная статья посвящена работе робота на местности с более-менее редко встречающимися препятствиями. Хотя отрабатывались алгоритмы в довольно тесном помещении.

В данной статье сознательно упущена информация о локализации робота (то есть, определения текущих координат). По причине работы на открытой местности локализация посредством лазерного сканирующего дальномера показала свою слабую применимость. В этих случаях требуется иметь иные датчики локализации: GPS/ГЛОНАСС-навигацию, электронные компасы и инерциальные навигационные системы. При отработке в помещении неплохо показала себя локализация по датчикам колёс.

1. Springer handbook of robotics. // под. ред. Bruno Siciliano, Oussama Khatib, «Springer» - 2008

2. С.Ф.Бурдаков, И.В.Мирошник, Р.Э.Стельмаков. Системы управления движением колесных роботов. СПб, «Наука»-2001

3. Носков В.П., Носков А.В. Навигация мобильных роботов по дальнометрическим изображениям // «Мехатроника, автоматизация, управление», 2005, №12, с. 16 – 24.

4. Vasilyev I.A., Lyashin A.M. Control System of Mobile Vehicle Developed for Cross-Country Motion. Труды конференции «International Symposium on Industrial Electronics 2005», Dubrovnic – Croatia. P. 173-175