В.Э. Карпов, Т.А.Волкова
Лаборатория робототехники и искусственного интеллекта Политехнического музея
Управление роботом при
движении по вектору
Одной из базовых задач мобильной робототехники является определение управления, при котором требуемое направление и скорость движения робота задается вектором. Вектор может задаваться и как внутренняя цель управления, и как направление движения на маяк, и как положение ручки джойстика. При этом будем считать, что робот оснащен парой дифференциальных двигателей (очевидно, что если робот оснащен рулевым колесом, то эта задача становится тривиальной).
Ниже будут рассмотрены некоторые варианты решения этой задачи, а также описана система ориентации, использующая неподвижный приемник кругового обзора.
Рассмотрим робота, оснащенного неким локатором (направленным приемником), позволяющим определить требуемое направление движение.
Обозначим угол между осью робота и заданным направлением через a. Задача управления заключается в том, что необходимо определить скорости вращения левого и правого колес так, чтобы робот двигался по направлению к цели.
Рис.1. Робот
Пусть VL и VR - требуемые скорости вращения левого и правого колес соответственно. При этом определены их минимальное и максимальное значения
VL,RÎ[Vmin, Vmax]
При этом угол a также определен на некотором отрезке
aÎ[amin, a max]
Общий принцип управления заключается в том, что в зависимости от угла a будет происходить притормаживание того или иного колеса. Это притормаживание может осуществляться как линейно (пропорционально углу a), так и нелинейно. На рис.2 изображена зависимость скорости вращения колеса от угла a.
а) б)
Рис.2. Пропорциональное (а) и косинусное (б) управление
Чем больше отклонение a, тем сильнее притормаживается соответствующее колесо. При расположении цели прямо по оси робота (a=0) притормаживание отсутствует и робот движется прямо с максимальной скоростью.
Наиболее простым методом является линейное (пропорциональное) управления. При этом в зависимости от знака угла a (см. рис.1.) скорости VL и VR определяются следующим образом:
при α³0 (1.1)
при α<0 (1.2)
Значительно лучшие результаты дает нелинейное управление, при котором больший угол отклонения α вызывает большее управляющее воздействие. Если максимальный угол отклонения αmax не превышает 90°, то достаточно хорошие результаты дает косинусный закон (рис.2,б):
при α³0 (2.1)
при α<0 (2.2)
Эксперименты проводились на роботе, оснащенным ИК-дальномером. При этом задача заключалась в движении робота на обнаруженное препятствие. Для простоты эксперимента препятствие было одно, при этом определялся некий порог срабатывания дальномера. Все это обеспечивало своего рода устойчивость работы системы.
Также для простоты не учитывались характеристики объекта управления, а оценивалось лишь внешнее поведение системы. ИК-дальномер был установлен на сервопривод (рулевую машинку), обеспечивающую сканирование в горизонтальной области в диапазоне порядка 180° (amin= -90°, a max=90°).
Рис.3. Робот, оснащенный локатором - вращающимся дальномером
При обнаружении препятствия робот отрабатывал шаг по закону (1.1, 1.2) или (2.1, 2.2). Поскольку система использовала вращающийся локатор, то необходимо было ввести некоторую инерционность - в случае потери цели скорости вращения колес постепенно уменьшались от значения, заданного законом управления, до нуля.
Управляющий контроллер построен на базе ATMega8. Важной особенностью программной реализации является использование смешанного режима широтно-импульсной модуляции (ШИМ), используемого для управления сервоприводом и скоростью вращения двигателей - программного и аппаратного. Всего используется три таймера:
Timer0 - Таймер для программного ШИМа (500 Гц). Эффективная частота - 50Гц Программный ШИМ - на 2 канала (один запасной). Реализует управляющий режим ШИМ для сервомашинки.
Timer1 - Таймер для аппаратного ШИМа. Используется в режиме полного ШИМа для управления ходовыми двигателями.
Timer2 - Рабочий таймер с программным делителем. Эффективная частота - 20Гц, предназначен для управления сервомашинкой.
Шаг угла поворота сервомашинки - 5°. Полный размах поворота - около 180°.
Локатор работает в режиме непрерывного сканирования.
Законы (1.1, 1.2) и (2.1, 2.2) применимы и для решения задачи ручного управления роботом с помощью джойстика.
Положение рукояти джойстика определяет требуемое направление движение - угол a. С другой стороны, скорость движения может быть определена исходя из длины вектора. Таким образом, если мы работаем с джойстиком, замеряя напряжение с двух потенциометров uy и ux, то мы однозначно определяем и угол a, и максимальную скорость Vmax, которая в предыдущем разделе считалась постоянной.
Управляемый джойстиком робот движется не только вперед, но и назад. Это означает, что имеется две одинаковых системы, которые симметричны относительно горизонтальной оси координат. Если угол отклонения больше 90°, то робот начинает ехать назад.
Для начала центрируем систему координат:
(3)
где xmiddle и ymiddle – средние значения напряжения (в используемом нами джойстике они были равны 2.5, так как напряжение менялось от 0 до 5)
Скорость будет зависеть от полярных координат (угла и длины вектора). Найдем угол отклонения α. Дифференциал между колесами определяется отклонением джойстика от вертикальной оси Y. Если бы отклонение рассматривалось от горизонтальной оси X, то использовалась бы функция . Поэтому для верхней половины используется операция осевой симметрии относительно биссектрисы I-го квадранта:
(4.1)
а) б)
Рис. 4. Исходная ситуация (а) и результат операции осевой симметрии (б)
А для нижней половины – поворот на
(4.2)
а) б)
Рис. 5. Исходная ситуация (а) и результат операции поворота (б)
Таким образом, используем формулу:
при y>0: (5.1)
при y<0 (5.2)
при y=0 и x >0 (5.3)
при y=0 и x <0 (5.4)
Формулы для пропорционального управления останутся те же: (1.1), (1.2).
aÎ[-180, 180]. Перед их применением нужно пересчитать Vmax :
(6)
где Vabsmax – максимально возможная скорость, len – длина вектора, lenmax - максимальная длина вектора. lenmax не обязательно равно длине диагонали и определяется эмпирическим путем (джойстик может не достигать крайних положений).
Недостатком такой системы является разрывность функции управления. Это связано с тем, что при движении джойстика по концентрической окружности (рис. 6), при переходе из нижнего полукруга в верхний на ведущем колесе направление движения меняется скачком (при сохранении величины скорости).
Рис. 6. Движение джойстика по концентрической окружности
Этот недостаток отсутствует в другом, более простом варианте управления роботом с помощью джойстика. С точки зрения оператора робота, вариант отличается тем, что при достижении крайних боковых положений джойстика поворот осуществляется танковым образом (одно колесо вращается вперед, другое назад).
В отличие от предыдущего случая, где скорость ведущего колеса считается пропорциональной длине вектора, а скорость дополнительного колеса вычисляется с учётом угла отклонения, в новой системе скорости каждого колеса считаются пропорционально линейной комбинации декартовых координат рукоятки джойстика.
Найти две линейных комбинации можно, рассмотрев четыре крайние точки:
1. При крайнем верхнем положении джойстика оба колеса должны вращаться вперед с максимальной скоростью.
2. При крайнем нижнем положении джойстика оба колеса должны вращаться назад с максимальной скоростью.
3. При крайнем правом положении джойстика правое колесо должно вращаться назад с максимальной скоростью, а левое – вперед с максимальной скоростью.
4. При крайнем левом положении джойстика правое колесо должно вращаться вперед с максимальной скоростью, а левое – назад с максимальной скоростью.
(7)
Здесь xmax равно максимальному значению отклонения и в нашем случае совпадает с максимальным значением x (а также y)
Эксперименты проводились на роботе «Навигатор».
Рис.7. Робот «Навигатор», управляемый с помощью джойстика
Замечание: при практической реализации следует обратить внимание на то, как устроены оси джойстика. К примеру, используемый нами джойстик выдавал 5 В в крайнем левом и 0 В в крайнем правом положении. В таком случае, на стадии обработки показаний, положим:
(8)
Две приведенные выше модели реализуют разные модели управления роботом (рис.8).
а) б)
Рис. 8. Модель с явным нахождением угла (а) и модель с нахождением линейной комбинации (б).
Еще одной интересной и важной задачей является движение робота по направлению к маяку.
Для того чтобы робот мог посчитать угол, на роботе имеется набор приемников, расположенных по кругу неподвижно относительно робота. Каждый приемник ловит сигнал, попадающий в его створ, который при 12 приемниках составляет 30°.
Алгоритм предназначен для определения угла направления на маяк. При этом алгоритм должен быть устойчив к ложным срабатываниям. Будем исходить из предположения, что отраженный сигнал фиксируется меньшим числом приемников.
Для обеспечения цикличности размещения секторов (полный охват в 360°) вместе с возможностью принятия сигнала несколькими приемниками, расположенными рядом, мы будем собирать показания приемников в битовую строку длины nsen + maxsen-1, где nsen – число приемников (в нашем случае 12), а maxsen – максимальное число одновременно задействованных соседних приемников (в нашем случае 5).
Позиции под номерами от 0 до nsen-1 будут соответствовать наличию/отсутствию сигнала на соответствующем приемнике, а позиции от nsen до nsen+maxsen-1 будут дублировать позиции от 0 до maxsen. Структура битовой строки изображена на рис.9.
Рис. 9. Структура битовой строки с показаниями приемников
Это соответствует ситуации, в которой маяк находится впереди робота, и имеется ложное срабатывание в 5-м секторе (рис. 10).
Рис. 10. Расположение приемников
Далее заведем два массива, назовем их S и A, оба длиной nsen+maxsen-1. В массив S будем записывать число последующих соседних активных приемников (числом до maxsen), начиная от текущего. В массив A будем записывать сумму значений углов в градусах, соответствующих этим приемникам, для того, чтобы потом посчитать среднее арифметическое.
По нашему предположению, отраженный сигнал фиксируется меньшим числом приемников. Поэтому найдем индекс максимального числа в массиве S (если их несколько, можно брать любое, так как их средний угол будет отличаться на 360°). Для найденного индекса искомый угол равен отношению значения массива A на этой позиции к значению массива S на этой позиции.
Если полученный угол больше 360°, вычитаем из него 360°.
Далее приведен фрагмент программы на языке Си:
ask_sensors();
//опрос датчиков и формирование «битовой» строки sensors
for(i=0; i<nsen; i++)
{
S[i]=0;
A[i]=0;
for(j=i; j<i+maxsen-1; j++)
{
if(sensors[j]==1)
//Если соседний приемник активен
{
S[i]++; //Увеличивается счетчик активных соседних
приемников
A[i] += j*30; //Увеличивается сумма в
градусах
}
}
}
//ищется максимальное число в массиве S
imax=0;
for(i=0; i<nsen; i++)
if(S[i]>S[imax]) imax=i;
if(S[imax]==0) continue;
angle =A[imax] / S[imax]; //среднее арифметическое
if(angle>360) angle
-= 360;
Наконец, как и в предыдущем случае, сделаем область определения a от -p до p.
при aÎ[0, p] (9.1)
при aÎ[p, 2p] (9.2)
Когда угол найден, можно воспользоваться формулами (1.1) и (1.2)
Эксперименты проводились на роботе с укрепленной сверху мачтой. На мачте располагались 12 интегральных ИК-приемников TSOP1738, работающих на частоте 38 кГц. В качестве маяка использовался ИК-передатчик, генерирующий помехозащищенные последовательности. Угол, воспринимаемый TSOP1738, равен примерно 40°. Если используется 12 приемников, то угол сужается до 30°.
Приемники
надежно изолированы друг от друга с помощью переборок из фольгированного
стеклотекстолита во избежание пропускания ИК-сигнала. Для уменьшения числа
ложных срабатываний можно уменьшать мощность ИК-излучателя и стараться не
располагать маяки-излучатели вблизи стен.
Эксперименты показали, что, несмотря на помехи и отражения, система ведёт себя достаточно устойчиво. Устойчивость достигается за счет принципиальной избыточности системы: механическая изоляция приемников на этапе получения сигнала, плюс последующая программная обработка (выбрасывание единичных показаний приемников, не принадлежащих ни к какой группе).
Рис. 11. Система приёмников на роботе.
Были рассмотрены задачи движения на препятствие, управления роботом с помощью джойстика, движения робота на маяк. Все эти задачи можно свести к задаче движения по азимуту и решить с помощью унифицированного механизма - пропорционального и косинусного законов управления. Характерно, что внешне различие между пропорциональным и косинусным законами проявляются не так явно. Это связано с инерционностью и нелинейностью рассмотренных объектов управления
Вторым, достаточно естественным выводом, касающимся особенностью управления роботом с помощью джойстика является множественность решений задачи. Всё определяется постановкой задачи управления (интерпретации углов, направлений, положений джойстика) и желаемым результатом с точки зрения оператора робота.