События‎ > ‎

Дистанционное управление для квадрокоптера

Отправлено 11 сент. 2012 г., 10:00 пользователем Олег Евсегнеев   [ обновлено 4 окт. 2013 г., 13:55 ]
Итак, настал черед разработки дистанционного управления для квадрокоптера. Поскольку машина разрабатывается как автономная, особой скорости реакции и удобства от системы радиоуправления не требуется. По сути, цель состояла в реализации только нескольких базовых команд, которые упростят отладку программного обеспечения.

Для начала необходимо обеспечить хотя бы две основные команды: включение/выключение и "газ". Первая команда будет запускать на беспилотнике процедуру калибровки гироскопа и разрешать цикл самоуправления. При отправке же кода выключения - все двигатели машины будут остановлены.

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

Аппаратная реализация

Радиомодуль APC220
Как уже было указано ранее, для обеспечения радиосвязи между пультом управления и летательным аппаратом предполагается использовать модуль APC220. Скорость передачи между двумя модулями достигает 19200бод. Обмен данными между контроллером и APC осуществляется по последовательному порту. Причем, на mbed мне удалось добиться максимальных 56700бод, а вот на ORduino только 19200. Кстати, во время манипуляций со скоростью портов в контроллерах, не следует забывать про перепрошивку самих радиомодулей.

Дистанционное управление на базе ORduino
Макет пульта был собран на базе контроллера ORduino Nano. В качестве регулятора газа используется один из трех потенциометров подключенных к аналоговому входу. Включение/выключение квадрокоптера осуществляется обычным переключателем.

Программная реализация

На обоих сторонах для приема и передачи данных используется самописная библиотека SerialFlow. С помощью SerialFlow можно отправлять массивы short чисел, в виде пакетов. Таким образом, в каждом пакете можно передать код команды и одно или несколько значений. Например для управления газом будут отправлены пакеты вида:

0x12,0xA1,0x00,0x10,0xFF,0x01,0x13

Здесь 0xA1 - код команды "газ". 0x01FF - величина тяги. Учитывая что величина тяги нормирована в диапазоне от 0 до 1023, указанная команда приведет к увеличению скорости двигателей с 0 до 50%. Конечно, можно передавать телеметрию и команды управления обычным текстом, в данном случае библиотека используется только чтобы минимизировать трафик радиоканала.

Команда включения квадрокоптера отправляется пачкой из 5 штук, на случай если некоторые пакеты потеряются. После приема команды аппаратом, как уже говорилось ранее, запускается процедура инициализации гироскопа и открывается цикл управления маневрированием.

Напоследок демонстрация работы получившейся системы дистанционного управления. Пока что без пропеллеров и с выключенной стабилизацией.


Comments