Полётный контроллер

Полётный контроллер - электронное устройство, управляющее полётом летательного аппарата. Термин применяется к беспилотным летательным аппаратам, в том числе и авиамоделям. Применительно к пилотируемым летательным аппаратам обычно употребляется термин автопилот. Чаще всего термин полётный контроллер относится к управляющим устройствам мультикоптеров.

К функциям полётного контроллера относятся:
 Стабилизация аппарата в воздухе;
 Удержание высоты при помощи барометрического высотомера или иных датчиков и позиции при помощи 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 вида контроллеров:
 DJI Naza-M Lite: базовая версия, имеет режимы стабилизации полёта, и основные GPS-функции (удержание и возврат домой). Не поддерживает возможность подключения внешних модулей, в остальном функциональность аналогична старшей модели DJI Naza-M V2. Цена около 250$. Любителями создана программа взлома, позволяющая загрузить в Naza-M-Lite прошивку от Naza-M-V2 версии 2.4, которая по состоянию на 2018 год считается устаревшей.
 DJI Naza-M V2: более новая версия, отличается возможностью подключения OSD, модуля Bluetooth или наземной станции, цена около 400$.
 DJI Wookong: профессиональная версия, цена около 1000$.
По отзывам пользователей, контроллеры DJI имеют весьма хорошую стабильность полёта, превосходящую более дешевые модели. Хотя функциональность самих контроллеров довольно-таки ограничена, её можно значительно расширить с помощью внешних модулей (кроме DJI Naza-M Lite). Например, для получения возможности беспроводной настройки нужно приобрести дополнительно модуль Bluetooth (50$), для ведения расширенных полётных логов необходим DJI iOSD MARK ll (255$), для полёта по точкам, передачи телеметрии или управления с планшета iPad (поддержки Android/Windows на данный момент нет) необходим 2.4G Bluetooth Datalink & iPAD Ground Station (300$). Таким образом главным недостатком этих контроллеров является высокая стоимость как самого контроллера так и дополнительных модулей

Контроллеры Zero UAV 
Полётные контроллеры Zero UAV производства компании Zero UAV Intelligence Technology, имеют закрытые прошивки и схему. Выпускается 2 вида контроллеров:
 Zero UAV YS-X4: базовая версия, имеет практически все полётные режимы, включая полёты по точкам, ведение логов полёта, передачу телеметрии и пр. Версия имеет ограничение по количеству точек автоматического полёта и расстоянию между ними. Контроллер более функционален чем DJI Naza при примерно той же цене (~400$). Один из недостатков это большой вес контролера, с GPS модулем около 300г, что делает невозможным использование на легких моделях. Так же есть нарекания на низкую надежность
 Zero UAV YS-X6: профессиональная версия, цена контроллера около 1000$. Существуют разные версии контроллеров, в зависимости от количества доступных точек автономного полёта цена может колебаться в диапазоне 1000—2500$.

Контроллеры XAircraft 
XAircraft был одним из первых полётных контроллеров, предоставляющих (2-3 года назад) удобную программу для настройки с компьютера и GPS-функции. Однако на качество реализации были нарекания пользователей, и в настоящее время модели этого типа (XAircraft 450 и XAircraft 650) приобретать нецелесообразно.
Недавно вышла новая версия контроллера XAircraft SuperX, в которой прежние недостатки вроде бы учтены, однако владельцев этой системы пока слишком мало для получения достоверных отзывов. Стоимость контроллеров XAircraft SuperX составляет 400—600$ в зависимости от конфигурации.

Контроллеры Fyetech 
Контроллеры Fyetech производятся компанией FeiYu Electronic Technology. Одним из первых был контроллер FY-91, на качество реализации ряда функций были нарекания, сейчас его приобретение нецелесообразно. В настоящее время выпускаются контроллеры FY-41AP, FY-DOS и FY-30A. Их отличительной особенностью является возможность использования как на мультикоптере, так и на самолете. Отличительной особенностью FY-41AP является встроенная OSD.

Контроллеры KK 
Контроллеры семейства KapteinKuk исторически одни из первых и недорогих контроллеров для квадрокоптеров. Имеют открытый исходный код, минимальный набор датчиков и периферии, за счет чего имеют минимальную цену, составляющую 20-30$. Количество настроек и возможностей также минимально, однако благодаря простоте и дешевизне эти модели имеют своих поклонников и определённую нишу рынка. По большому счету, сейчас приобретение контроллеров этого вида нецелесообразно.

Контроллеры MicroKopter 
Немецкие контроллеры MicroKopter, исторически были самыми первыми, именно ими был запущен первый квадрокоптер. Имеют весьма высокую цену (от 500 евро) и используются в профессиональной фото и видеосъемке. Настройка достаточно запутанна, поэтому в любительском применении использование MicroKopter нецелесообразно.

Контроллеры GAUI 
Квадрокоптер GAUI-330 и контроллер GU-344 были первой системой, доступной для любителей на рынке. На сегодняшнее время покупка этого контроллера нецелесообразна, он имеет лишь историческую ценность. Компания также выпустила контроллер GU-INS, однако он не получил распространения из-за высокой цены.

Контроллер AutoQuad 
Контроллер с открытым исходным кодом, позиционирующий как топовый, для профессионального использования. Имеет хорошие полётные характеристики, однако крайне сложен в настройке, например плата требует температурной калибровки в морозильной камере с охлаждением до −18 и постепенным прогревом. Проект поддерживается небольшой командой разработчиков, и его перспективы пока неясны.

Open Pilot 
Открытый проект, начатый в 2009-м. Выпущены версии контроллеров CopterControl, CopterControl3D и OpenPilot Revolution. Настройка контроллеров производится через ПО OpenPilot GCS. Возможно применение в мультикоптерах, вертолётах, самолётах и машинках.

Прочие контроллеры 
Существует некоторое количество контроллеров, разрабатываемых энтузиастами-одиночками или небольшими компаниями .

Сравнительная таблица 

Примечание: для ряда контроллеров дополнительные модули (OSD, GPS и пр) докупаются отдельно, и не входят в цену основной платы.

Периферия 
Различные полётные контроллеры могут использовать дополнительную периферию, необходимую для нормальной работы.

GPS 
Используется для удержания позиции, возврата в точку взлета или автоматического полёта по точкам.

Модем (Bluetooth, WiFi) 
Для дистанционной настройки и просмотра параметров полёта могут использоваться беспроводные каналы связи: модем на 433 или 910МГц, Bluetooth или WiFi-модуль. Дальность их работы соответственно, может составлять от 50 м до 10 км.

Видеолинк 
Для возможности просмотра изображения с мультикоптера, на него устанавливают мини-камеру и видеопередатчик. Частота передачи обычно составляет 900МГц, 1.2, 2.4 или 5.8ГГц. Более высокие частоты удобны более компактными антеннами, однако более низкочастотные сигналы лучше огибают препятствия. Примерная дальность приема видеосигнала при мощности передатчика 200-400мВт составляет около километра, дальность может быть увеличена либо направленными антеннами, либо установкой более мощного передатчика.
Для передачи используют аналоговые камеры стандартов PAL или NTSC, цифровые каналы пока не используются в виду их дороговизны и большей массы.

OSD 
OSD (On Screen Display) — подключается между камерой и видеопередатчиком, используется для наложения параметров полёта (скорость, высота, координаты, и пр) на видео.

Подвес для фото/видеокамеры 
При установке на мультикоптер фото или видеокамеры, контроллер может управлять моторами подвеса, обеспечивая неподвижность камеры при наклонах коптера. Это обеспечивает более плавную видеосъемку и фотосъемку без наклонов и искажений. Также пользователь может сам управлять положением камеры (повернуть в сторону). При этом подвес продолжит стабилизировать камеру относительно положения, заданного пользователем.

Датчики тока и напряжения 
Используются для мониторинга состояния батареи в полёте. Контроллер может либо предупреждать пользователя (световым сигналом, сообщением) либо произвести автоматическую посадку. Важно отметить, что в отличие от самолета или вертолета, без электропитания мультикоптер не может стабилизироваться в полёте и совершить мягкую посадку.

Поисковые средства 
В случае незапланированного падения или посадки коптера, могут использоваться различные средства: GPS-трекер, звуковой индикатор, запись видео с просмотром координат по OSD, и пр.

Примечания 
 Multiwii, нумерация моторов и исходные коды:
http://www.multiwii.com/connecting-elements
http://code.google.com/p/multiwii/
 Arducopter, программа настройки Mission Planner
http://code.google.com/p/ardupilot-mega/wiki/Mission
 Arducopter. Квадрокоптер своими руками, инструкции по сборке и настройке коптеров на контроллере APM.
http://apmcopter.ru
 ArduPilot Mega - сайт по настройке универсального полётного контроллера 
http://ardupilot-mega.ru
 Полётные контроллеры DJI
https://web.archive.org/web/20130722084623/http://www.dji-innovations.com/products/
 Полётные контроллеры Zero UAV
https://web.archive.org/web/20130730001314/http://www.zerouav.net/product.aspx
 Полётные контроллеры Fyetech
https://web.archive.org/web/20130827075114/http://www.feiyu-tech.com/index-en.php
 Исходные коды плат KK
http://code.google.com/p/kk-multicopter/wiki/GettingStarted
 Контроллеры MicroKopter
http://www.mikrokopter.de/en/home

Вертолёты
Мультикоптеры
Робототехника