Итак, настал черед разработки дистанционного управления для квадрокоптера. Поскольку машина разрабатывается как автономная, особой скорости реакции и удобства от системы радиоуправления не требуется. По сути, цель состояла в реализации только нескольких базовых команд, которые упростят отладку программного обеспечения. Для начала необходимо обеспечить хотя бы две основные команды: включение/выключение и "газ". Первая команда будет запускать на беспилотнике процедуру калибровки гироскопа и разрешать цикл самоуправления. При отправке же кода выключения - все двигатели машины будут остановлены. Команда "газ" используется сугубо на стадии разработки и выполняет пропорциональное увеличение тяги всех двигателей, обеспечивает тем самым контроль над набором высоты аппарата. Аппаратная реализацияКак уже было указано ранее, для обеспечения радиосвязи между пультом управления и летательным аппаратом предполагается использовать модуль APC220. Скорость передачи между двумя модулями достигает 19200бод. Обмен данными между контроллером и APC осуществляется по последовательному порту. Причем, на mbed мне удалось добиться максимальных 56700бод, а вот на ORduino только 19200. Кстати, во время манипуляций со скоростью портов в контроллерах, не следует забывать про перепрошивку самих радиомодулей. Макет пульта был собран на базе контроллера ORduino Nano. В качестве регулятора газа используется один из трех потенциометров подключенных к аналоговому входу. Включение/выключение квадрокоптера осуществляется обычным переключателем. Программная реализацияНа обоих сторонах для приема и передачи данных используется самописная библиотека SerialFlow. С помощью SerialFlow можно отправлять массивы short чисел, в виде пакетов. Таким образом, в каждом пакете можно передать код команды и одно или несколько значений. Например для управления газом будут отправлены пакеты вида: 0x12,0xA1,0x00,0x10,0xFF,0x01,0x13 Здесь 0xA1 - код команды "газ". 0x01FF - величина тяги. Учитывая что величина тяги нормирована в диапазоне от 0 до 1023, указанная команда приведет к увеличению скорости двигателей с 0 до 50%. Конечно, можно передавать телеметрию и команды управления обычным текстом, в данном случае библиотека используется только чтобы минимизировать трафик радиоканала. Команда включения квадрокоптера отправляется пачкой из 5 штук, на случай если некоторые пакеты потеряются. После приема команды аппаратом, как уже говорилось ранее, запускается процедура инициализации гироскопа и открывается цикл управления маневрированием. Напоследок демонстрация работы получившейся системы дистанционного управления. Пока что без пропеллеров и с выключенной стабилизацией. |
События >