Технические
науки/11.Робототехника.
Гриценко
П.А., к.т.н. Бушуев А.Б., к.т.н.
Литвинов Ю.В.,
Шмигельский Г.М.
НИУ
ИТМО, Россия, Санкт-Петербург.
Управление
полетом квадрокоптера по произвольно задаваемой траектории
Для решения практических задач необходимо
организовать автоматическое управление квадрокоптером ArDrone по произвольно
задаваемой траектории [1,2]. При
формировании команд управления необходимо учитывать ограничения на траекторию
полёта при обследовании какой-либо
территории, (наличие стен, линий электропередач, вышек и т.п.), т.к. в простейшем варианте квадрокоптер не
комплектуется датчиками измерения расстояний.
При прорисовке желаемой траектории полёта на экране компьютера.
требуется введение поправочного коэффициента
Вся нарисованная на компьютере
траектория представляет собой массив точек, который формируется указателем компьютерной мыши в отведенной
для рисования области. Для того, чтобы не обрабатывать большое количество не
влияющих на полет точек
выполняется кусочно-линейная аппроксимация нарисованной траектории и
формируются соответствующие команды управления, передаваемые на борт
бепилотного летательного аппарата (БПЛА). Весь полет квадрокоптера представляет
собой набор поворотов на необходимый угол и продвижение вперед [2]. Окно
программы с нарисованной пользователем траекторией выглядит так, как показано
на рис.1(а, б). Кружок обозначает текущее положение БПЛА. При нажатия кнопки
«пуск», квадрокоптер взлетает и сразу после этого происходит расчет количества
команд необходимых для пролета одного отрезка. Команды передаются на
квадрокоптер с определенными
временными задержками, чтобы ArDrone
успел их обработать и пролететь этот отрезок. Также происходит определение
направления и угла поворота

а) б)
Рисунок
1. Траектория: а – до преобразования, б
– после обработки.
. На рисунке 2
представлен алгоритм формирования команд управления.
Рисунок
2. Алгоритм формирования команд управления.
В качестве примера приведён код программы на языке C/C++.
В среде разработки Qt 4.8., отвечающей за поворот
направо.
/* обновление текущего
угла курса квадрокоптера, если угол меньше нуля
[-180; 0] */
if
(navdata.psi < 0)
/* преобразование текущего угла
квадрокоптера к положительному значению [0; 360] */
{
currentAngle = round(360
- abs(navdata.psi)*0.001);
}
/* обновление текущего угла
квадрокоптера, если угол больше нуля [0; 180] */
else currentAngle = round(navdata.psi*0.001);
/* degree - угол, на
который необходимо повернуться. Задание рабочей области от 0 до 360 градусов */
povorot = currentAngle + degree;
if(povorot > 360)
{
povorot
= povorot - 360;
}
/* сравнение текущего угла
курса квадрокоптера с конечным */
while (currentAngle != povorot)
{
rightRoll(); // отправка команды
поворота
msleep(time); // пауза 40 мсек
if
(navdata.psi < 0)
{
currentAngle = round(360 -
abs(navdata.psi)*0.001);
}
else currentAngle = round(navdata.psi*0.001);
}
Для управления полетом используется
обратная связь с датчиков квадрокоптера (угол поворота относительно линий
магнитного поля, скоростей по осям OX, OY, OZ и т.д.), что позволяет
сформировать соответствующие команды
следования по траектории. После окончания полёта по траектории отправляется команда «Посадка» и БПЛА
садится в конечной точке.
Литература
1.
Описание и инструкция квадрокоптера ArDrone
www.ardrone.ru
2.
Литвинов Ю.В., Бушуев А.Б. Гриценко П.А. Шмигельский Г.М. Управление квадрокоптером с помощью компьютера. МНПК
Наука и образование в жизни современного общества. Часть 8//Тамбов. ТРОО
«Бизнес-Наука-Общество», 2012. – 163 с.