В место введения:
Это статья по созданию самодельного автопилота для БПЛА на современной элементной базе. Самодельный автопилот создавался чтобы лучше разобраться в теме АСУ транспортными средствами, а также реализации каких-либо уникальных возможностей которых нет в других готовых АП может также пригодится, например, для преодоление зон глушения сигнала, создании своих систем автономного полёта (по уникальному алгоритму) или под уникальный планер. В общем основным плюсом самодельного АП является его невероятная гибкость, открытый исходный код и цена.
Разработка АСУ осуществляется в интерактивной среде разработчика QT Creator поскольку данная среда позволяет работать по условно бесплатной лицензии, а также обладает кроссплатформенным ядром, что позволяет простой перекомпилировать ПО при переносе на другую платформу, например, на Linux.
Начну со структуры АСУ:
Управление БПЛА осуществляется с ноутбука (или любого другого устройства с ОС Win/Lin), с помощью программы неземной станции управления (НСУ) MapGraphics - это интерактивная спутниковая карта позволяет осуществлять полёт по маршруту (точкам) или в режиме ручного управления с помощью кнопок на клавиатуре ноутбука, а также принимает телеметрию о полёте. Сигналы управления предаются с помощью TCP сервера, что позволяет использовать любой Ethernet совместимый радио модуль, например, Wi-Fi. Сама программа просмотра спутниковой карты не моя она получена отсюда: https://github.com/raptorswing/MapGraphics [github.com] была приведена в рабочий вид и доработана для использования в АСУ.
Сигналы управления от интерактивной спутниковой карты принимает ядро АСУ, данное ПО производит основной расчёт направления движения по сигналам от спутниковой карты и предаёт его на микроконтроллер в ивде структуры данных состоящей из 5 основных параметров направления (азимут), высота, угол атаки, тип точки (взлёт посадка) и наличии вращения вокруг точки (например, в конце маршрута). Ядро работает с такими модулями как GPS Ublox Neo M8N для получения курса, широты и долготы полёта и GSM модема для поиска БПЛА при посадке (например, в высокую траву). Ядро вычисляется на одноплатном компьютере (бортовом компьютере) ASUS TinkerBoard в прочем возможно использовать и Raspberry PI. ASUS TinkerBoard также отвечает за стабилизацию БПЛА в воздухе, движение по заданному курсу и высоте полёта для этого используется IMU датчик гироскоп+акселерометр+магнитометр BNO 088, барометр MS5611 и лидар высотометр для получения вертикальной скорости при посадке и нахождении земли.
[turboimagehost.com] Более новая схема 2022г с учётом критики на хабре
Теперь более подробно:
Графический интерфейс MapGraphics - Это обозреватель со спутниковыми снимками ESRI (аналог яндекс карт), на снимки накладывается сетка содержащаяя координаты широты, долготы и по этим координатам, и осуществляется движение. Координаты хранятся в памяти БПЛА в виде структур данных точек, каждая точка содержит следующие параметры: широту, долготу, высоту, угол атаки, тип точки, радиус точки, радиус круга (вращения вокруг точки). Точки отображаются на карте в виде маркеров существует 4 типа маркеров-точек:
Точка мгновенного премещения - когда БПЛА летит в указанное место и по достижению координата вращается по кругу.
Маршрутная точка - когда БПЛА летит в точку и по её достижению загружает из памяти следующую по достижению всех точек также начинает летать по кругу.
Точка местонахождения БПЛА на карте.
Точка для поиска БПЛА по координатам широты и долготы.
Параметры: высоты , угола атаки, типа точки, радиуса точки, радиуса круга точки получают из графического интерфейса (Text box) расположенных напротив своих названий, после установки точки на карту ей автоматически присваиваются значения в этих полях, изменяя эти значения каждый раз перед установкой новой точки можно составить маршрут полёта и загрузить его в БПЛА с помощью соответствующей кнопки, ограничение на количество точек как такого нет оно определяется только количеством ОЗУ бортового компьютера. Кнопка в стоп, начинает вращение вокруг текущего местоположения, а кнопка вернутся позволяет продолжить движение после остановки либо мгновенного перемещения. Кнопка калибровка передаёт команду самокалибровки на датчик BNO088 после чего нужно вращать самолёт под различными углами пока на панели телеметрии под индикторами вывода Напровление GNSS/Тонгаж/Крен/Рысканье все 4 индиратора отобразят 1.0 это иникаторы калибровки магнитометра гироскопа акселерометра и самопроверка датчика на неисправности.
В нижней части расположен (check box) предохранителя “Ручное” от случайного нажатия на карте маркера мгновенного перемещения, “Отладка” не использующейся в данный момент и “кнопки” для управления с помощью клавиш: “ADWS” а также ползунок для управления тягой двигателя (который можно регулировать колесом мышки для удобства).
Режим ручного управления эксперементальный режим управления копирующий управление самолётом из компьютерных игр, в данном режиме углы тонгажа крена и рысканья ограничены +/- 30 для тогажа, +/- 45 для крена, +/- 10 для рысканья при нажатии клавиши W БПЛА немедленно изменяет свой тонгаж на -30 а при отпускании возвращается на 0 аналогично S задаёт значение тонгажу +30 и при отпускании обратно, аналогично и все остальные кнопки. Важно заметить что значения от клавиш поступают на рули не напрямую а через закон управления (по сути ПИД регулятор хотя и не совсем обычный) это позволяет гарантировать удержание заданного угла в полёте. Данный режим планируется для использования с FPV оборудованием что-бы сделать полёт похожим на геимплей игры.
Поиск по координатам широты и долготы позволяет отобразить на карте положение самолёта в случае потери сигнала Wi-fi для этого необходимо набрать номер установленной в БПЛА сим карты после чего произойдёт сброс вызова и на телефон придут координаты самолёта, после чего их можно записать в соотвествующие поля в интефейсе карты и маркер отобразит местоположение самолёта.
Ссылка на исходники. [yadi.sk]
Исходники 2022 [disk.yandex.ru]