Полётный контроллер — электронное устройство, управляющее полётом летательного аппарата. Термин применяется к беспилотным летательным аппаратам, в том числе и авиамоделям. Применительно к пилотируемым летательным аппаратам обычно употребляется термин автопилот. Чаще всего термин полётный контроллер относится к управляющим устройствам мультикоптеров.
К функциям полётного контроллера относятся: Стабилизация аппарата в воздухе; Удержание высоты при помощи барометрического высотомера или иных датчиков и позиции при помощи GPS/GLONASS; Автоматический полёт по заданным заранее точкам (опционально); Передача на землю текущих параметров полёта с помощью модема или Bluetooth (опционально); Обеспечение безопасности полёта (возврат в точку взлета при потере сигнала, автопосадка); Остановка перед препятствием (для мультикоптеров) или облет препятствий (для самолетов) при наличии датчиков; Подключение дополнительной периферии: OSD, светодиодной индикации и прочего
Количество функций зависит от наличия на борту мультикоптера соответствующей периферии, в дешевых контроллерах ряд функций может отсутствовать.
История возникновения Долгие годы системы автоматического пилотирования в авиамоделизме не применялись по причине их громоздкости и сложности реализации на элементной базе, существовавшей до конца XX века. Однако с появлением доступных достаточно быстродействующих микроконтроллеров, прежде всего ATMega и интегральных датчиков ускорения и угловой скорости на основе MEMS появились первые проекты автопилотов на их основе. Благодаря этому стало возможно создание мультикоптеров, поскольку эти аппараты аэродинамически неустойчивы и требуют постоянной стабилизации в полёте. Развитие мультикоптеров в свою очередь стимулировало развитие полётных контроллеров и к началу 2010-х годов сформировалось несколько открытых проектов (OpenPilot, ArduPilot), а также было выпущено несколько линеек коммерческих полётных контроллеров.
Устройство Полётный контроллер представляет собой типичное микропроцессорное управляющее устройство. При этом алгоритмы управления реализуются программно.
В качестве микропроцессорной основы полётных контроллеров чаще всего используются популярные 8-битные микроконтроллеры фирмы Atmel семейства ATMega, а с середины 2010-х годов — и более производительные AVR32 и STM32 на основе микропроцессорного ядра ARM7. В состав полётного контроллера обязательно входят датчики ускорений и датчики угловой скорости. Оснащенный таким минимальным набором датчиков полётный контроллер способен обеспечить аэродинамическую устойчивость аппарата в воздухе, но не способен обеспечить его удержание в заданной точке, полёт по заданной траектории, возврат в точку старта и безопасный полёт. Тем не менее, для мультикоптеров-игрушек и гоночных мультикоптеров этого достаточно.
Для мультикоптеров, несущих полезную нагрузки а также для радиоуправляемых самолетов применяют более сложные полётные контроллеры, содержащие большее количество датчиков. Магнитометрический датчик позволяет стабилизировать ориентацию аппарата относительно магнитного меридиана. Барометрический датчик позволяет стабилизировать барометрическую высоту полёта аппарата и его автоматическую посадку в точке старта. Ультразвуковые, лазерные или радиотехнические высотомеры позволяют удерживать высоту с большей точностью, совершать автоматическую посадку в любой точке, облетать препятствия. Приемник GPS/GLONASS позволяет стабилизировать положение аппарата, осуществлять автоматический полёт по маршруту, автоматический возврат в точку старта. С целью повышения безопасности эксплуатации или выполнения специальных операций могут применяться и другие датчики.
Способы управления
Обычно, полётный контроллер получает команды от системы радиоуправления, но может функционировать и полностью автономно: по заранее заданному плану полёта или в режиме слежения за объектом. Причем режим автономного полёта встречается как в персональных «селфи-коптерах» так и в серьезных аппаратах военного назначения.
Проблемы Большинство полетных контроллеров, особенно для любительских аппаратов, строятся на основе недорогих компонентов, которые приходится использовать на пределе возможностей. Это порождает ряд проблем, которые часто приводят к авариям: Перегрузка процессора - сложность вычислительных процессов при обработке первичной информации с датчиков, а также необходимость декодирования на программном уровне сигналов радиоуправления, обслуживание телеметрии и других процессов может приводить к перегрузке центрального процессора, проявляющихся в задержках (лагах) управляющих сигналов. В результате мультикоптер на десятки-сотни миллисекунд остается без управления, что вызывает неустойчивость его полета. Данная проблема свойственна всем полетным контроллерам на основе восьмибитных процессоров. Особенно сильно эта проблема проявляется в достаточно сложной системе ArduPilot. Проблемы электрического питания. Электрические двигатели мультикоптера и их контроллеры создают повышенный уровень помех в цепях питания полетного контроллера, что может приводить к программным сбоям и даже зависанию микропроцессора. По этой причине профессиональные полетные контроллеры всегда имеют встроенные вторичные источники питания. В любительских контроллерах цепи питания обычно очень простые, требующие внешнего источника: обычно это BEC (Battery Elimination Circuit) контроллера двигателя, отдельный преобразователь напряжения или, реже, отдельный аккумулятор. Сами такие преобразователи или их длинные соединительные провода являются источником помех. Несогласованность сигналов датчиков. Применение достаточно простых датчиков и отсутствие их комплексной юстировки на мультикоптере может приводить в противоречиях их показаний. Например по информации датчика угловой скорости нос коптера поворачивает влево, тогда как по данным магнитометра (компаса) - вправо. Такая ситуация может возникнуть из за влияния коррелированных вибраций и переменного магнитного поля мотора. Часто встречается и ситуация с противоречивыми показаниями барометрического датчика высоты и информации о высоте от GPS/GLONASS приемника. Поведение полетного контроллера в этом случае зависит от особенностей программного обеспечения и при его несовершенстве может вызывать опасные ситуации. Например, DJI Naza при противоречиях показаний акселерометра и барометрического датчика высоты производит автоматическую настройку цифровых фильтров. Однако, если противоречия показаний коррелированы (обусловленные, например пульсациями давления и вибрациями, вызванными вращением воздушного винта), то чувствительность канала управления высотой в процессе автонастройки фильтров может снизиться почти до нуля, что приведет к падению аппарата. При несогласованности показаний направления вектора скорости по компасу и по данным датчиков угловой скорости аппарат может начать двигаться с увеличивающейся скоростью по расходящейся спирали приобретая при этом сильную раскачку (в англоязычных источниках это явление называется toilet bowling, в русскоязычных - "унитазинг"), что в итоге приводит к тяжелой аварии. Проблемы надежности программного обеспечения. Если на пилотируемых летательных аппаратах или на профессиональных беспилотниках программное обеспечение проходит тестирование надежности и сертификацию, то для полетных контроллеров массового применения такие процедуры не проводятся. В связи с этим имеется высокий риск аварии по причине сбоя в программном обеспечении. Проблемы адаптивности программного обеспечения. Полетный контроллеры широкого применения разрабатываются достаточно универсальным, пригодными для работы на различных летательных аппаратах. Например, ArduPilot с прошивкой ArduCopter может быть настроен для работы практически на любом мультикоптере от миниатюрного гоночного квадрокоптера с тяговооруженностью порядка 10 единиц, до огромного октокоптера, несущего зеркальную камеру на трехосевом подвесе, имеющего тяговооруженность не более 1,5. Хотя общие принципы управления такими аппаратами одинаковы, реальная практическая реализация их полетных характеристик совершенно разная. Гоночному коптеру совершенно не важна стабильность полета, но важно время реакции и возможность полета с большими углами атаки или даже в перевернутом состоянии. Крупному съемочному октокоптеру не нужна маневренность, но требуется высокая стабильность и большое время полета. Следовательно, программное обеспечение должно быть адаптивным, позволяющим использовать различные алгоритмы цифровых фильтров, иметь различные управляющие программы и ПИД-регулятор с большими диапазонами регулирования. Однако реализовать адаптивность достаточно сложно даже на мощных настольных компьютерах не говоря уж о малоресурсных контроллерах.
Популярные типы полётных контроллеров
MultiWii Полётный контроллер MultiWii — один из первых массовых полётных контроллеров. Популярен своей дешевизной и открытостью исходных кодов. Компиляция программы производится с помощью бесплатной среды разработки Arduino IDE. Последние версии Multiwii имеют большинство функций, необходимых для полёта, в том числе полёт по точкам. Проект некоммерческий и поддерживается энтузиастами. Название MultiWii произошло от самых первых контроллеров, использовавших платы от Wii Nunchuck (сейчас они давно уже не используются). При выборе контроллера следует обратить внимание на тип установленных датчиков, наиболее современными (на 2012-13й год) являются акселерометр MPU6050 и барометр MS5611, платы с этими датчиками имеют наиболее стабильный полёт, по сравнению с предыдущими моделями. По состоянию на 2018 год полётный контроллер уже считается устаревшим, но существуют его осовремененные форки.
ArduPilot Полётный контроллер ArduPilot: один из наиболее функциональных полётных контроллеров с открытым исходным кодом. Как и MultiWii построен на базе платформы Arduino. Имеет все необходимые для полёта функции, включая автоматический полёт по точкам, наложение параметров полёта на видео (OSD), удержание позиции и пр. Контроллеры выпускаются компанией 3D Robotics (платы APM 2.5, 2.6), их цена составляет около 150$. Существуют также китайские клоны (HKPilot 2.5), идентичные по «железу» и совместимые по прошивкам, их цена около 50$. Плата APM имеет лишь базовую функциональность, остальные модули (GPS, OSD, модем и пр) приобретаются отдельно. По состоянию на 2018 год контроллер считается устаревшим. В новых разработках целесообразно использовать его дальнейшее развитие — PixHawk, который полностью аппаратно совместим с ArduPilot, но построен на основе 32-битного микроконтроллера STM32, за счет чего обладает большей точностью и скоростью вычислений.
PixHawk Полётный контроллер PixHawk: наиболее функциональный из полётных контроллеров с открытым исходным кодом. Разработан компанией 3D Robotics для замены устаревшего 8-битного ArduPilot. Аппаратно и функционально он с ним полностью совместим, но построен на более современной элементной базе, прежде всего 32-битном микроконтроллере STM32 на основе ядра ARM7. Кроме того, за счет более производительного процессорного ядра, PixHawk имеет ряд новых функций, отсутствовавших в ArduPilot: «черный ящик» (запись полётной информации на SD-карту), адаптивные фильтры, самообучение полёту и т.п.
Контроллер Rabbit Rabbit — китайский клон MultiWii, со своей программой для настройки и управления. Имеет закрытый исходный код, более высокую цену чем у MultiWii, при меньшем количестве функций. У пользователей также есть нарекания на некоторые ошибки встроенного ПО и нестабильность работы.
Контроллеры DJI Полётные контроллеры DJI выпускаются компанией DJI Innovations, имеют закрытые прошивки и схему. В настоящее время выпускается 3 вида контроллеров: