ArduPilot
ArduPilot — пакет программ автопилота с открытым исходным кодом для беспилотных транспортных средств, способных к автономному управлению. Поддерживаются следующие типы:
- Мультикоптер
- Летательный аппарат с фиксированным крылом и VTOL
- Вертолёты
- Наземные транспортные средства
- Катера
- Подводные аппараты
- Антенные трекеры
Изначально ArduPilot разрабатывался энтузиастами для управления летательными аппаратами и транспортом, но впоследствии превратился в полнофункциональный и надёжный автопилот, применяемый в промышленности[3], исследовательских организациях[4] и среди любителей.
Общие сведения
| ArduPilot | |||
|---|---|---|---|
| Тип | встроенное программное обеспечение и структура[d] | ||
| Разработчики | Команда разработчиков ArduPilot и сообщество | ||
| Написана на | C++, Python | ||
| Операционная система | мультиплатформенная | ||
| Первый выпуск | 2009 | ||
| Аппаратная платформа | STM32 | ||
| Последняя версия | |||
| Репозиторий | github.com/ArduPilot | ||
| |||
| |||
| Лицензия | GPLv3 | ||
| Сайт | ardupilot.org | ||
Программное и аппаратное обеспечение
Программный пакет
Программный пакет ArduPilot включает навигационное ПО (обычно именуемое прошивкой в виде бинарных файлов для микроконтроллера), которое работает непосредственно на борту (будь то вертолёт, самолёт, автомобиль, антенный трекер или подводный аппарат), а также ПО наземной станции управления: Mission Planner, APM Planner, QGroundControl, MavProxy, Tower и другие.
Исходный код ArduPilot размещён и поддерживается на GitHub, где над ним работали почти 400 участников[5].
Комплектация программного обеспечения собирается автоматически каждую ночь с использованием непрерывной интеграции и модульных тестов через Travis CI, а сборочная среда включает многоплатформенный GNU-компилятор и Waf. Готовые бинарные файлы под различные аппаратные платформы доступны для загрузки на подразделах сайта ArduPilot.
Поддерживаемое оборудование
ПО для вертолётов, самолётов, автомобилей, антенных трекеров и подводных аппаратов работает на широком спектре встраиваемого оборудования (включая полноценные компьютеры на Linux), как правило — на одном или нескольких микроконтроллерах или микропроцессорах, к которым подключаются функциональные датчики навигации. Минимальный набор датчиков включает гироскопы и акселерометры MEMS, необходимые для мультикоптеров и стабилизации самолёта. Обычно также применяются одна или несколько компасов, барометрических высотомеров, GPS, а дополнительно — датчики оптического потока, датчики скорости воздуха, дополнительные альтиметры/дальныемеры (лазерные, сонары), а также различные камеры (моно, стерео, RGB-D). Все эти сенсоры могут находиться на одной печатной плате или быть внешними.
Программное обеспечение наземной станции (Ground Station) — для программирования и мониторинга — доступно для Windows, Linux, macOS, iOS и Android.
ArduPilot реализован для множества аппаратных платформ, перечисленных в алфавитном порядке:
- APM 2.X (микроконтроллер Arduino Atmel Mega), разработан Джорди Муньосом в 2010 году[6]. APM расшифровывается как ArduPilotMega; используются только для старых версий ArduPilot.
- BeagleBone Blue и PXF Mini (вариант BeagleBone Black).
- Edge, контроллер дронов с видеотрансляцией, разработан Emlid.
- Erle-Brain (на базе Linux), разработан Erle Robotics.
- Intel Aero (на базе Linux или STM32)
- Intel Minnowboard (на базе Linux)[7].
- Navio2 и Navio+ (на базе Linux для Raspberry Pi), разработан Emlid.
- Parrot Bebop и Parrot C.H.U.C.K., разработан Parrot, S.A.
- Pixhawk (микроконтроллер ARM Cortex), первоначально разработан Лоренцом Майером и ETH Zurich, доработан и запущен в 2013 году PX4, 3DRobotics и командой ArduPilot[8].
- PixRacer (микроконтроллер ARM Cortex), разработан AUAV.
- Qualcomm SnapDragon (на базе Linux).
- SoC Zynq от Xilinx (Linux, ARM и FPGA-модуль)[9]
- The Cube, официально названный Pixhawk 2 (микроконтроллер ARM Cortex), разработан ProfiCNC в 2015 году.
- Virtual Robotics VRBrain (микроконтроллер ARM Cortex).
Кроме перечисленных навигационных платформ, ArduPilot поддерживает интеграцию и взаимодействие с сопутствующими/дополнительными компьютерами для сложной навигации с большим объёмом вычислений: NVidia TX1 и TX2 (NVIDIA Jetson), Intel Edison, Intel Joule, HardKernel Odroid, Raspberry Pi.
Возможности
Общие для всех транспортных средств
ArduPilot предлагает широкий перечень функций, общих для всех транспортных средств:
- Полностью автономные, полуавтономные и ручные режимы полёта; возможность программировать миссии с 3D-точками; поддержка геозон.
- Функции стабилизации без необходимости внешнего копилота.
- Имитация с использованием разных симуляторов, включая ArduPilot SITL.
- Поддержка множества навигационных датчиков: RTK GPS, традиционный GPS L1, барометры, магнитометры, лазерные дальномеры и сонары, оптический поток, транспондер ADS-B, ИК-сенсоры, воздушная скорость, системы компьютерного зрения/трекеры движений.
- Связь с сенсорами через SPI, I²C, CAN, UART, SMBus.
- Обнаружение и обработка отказов: потеря радиоконтроля, GPS-сигнала, превышение лимитов, понижение напряжения батареи.
- Навигация в условиях отсутствия GPS: визуальное позиционирование, оптический поток, SLAM, позиционирование по UWB.
- Поддержка парашютов, магнитных захватов.
- Управление как бесщёточными, так и коллекторными двигателями.
- Поддержка фото- и видеоплатформ (гимбалы).
- Интеграция и взаимодействие с внешними компьютерами/копроцессорами.
- Подробная документация на вики ArduPilot.
- Форумы, каналы чата Gitter, GitHub, сообщества Facebook.
Для вертолётов
- Поддерживаемые режимы: стабилизация, высотное удержание, зависание, RTL (Return-to-Launch), авто, акро, автонастройка, торможение, круг, дрейф, наведённый (guidance и guidance без GPS), посадка, удержание позиции, спорт, бросок, трекинг, простые и суперпростые режимы, обход ADS-B[10].
- Автонастройка параметров.
- Разнообразие шасси: три-, квадро-, гекса-, окто- (плоские и коаксиальные), а также кастомные двигательные установки.
- Поддержка электрических и традиционных ДВС-вертолётов, монокоптеров и тандемных вертолётов.
Для самолётов
- Режимы «Fly By Wire», круговой патруль (loiter), автопилот, акро.
- Варианты взлёта: ручной, с резинкой (bungee), катапультный, вертикальное взлетание (VTOL).
- Варианты посадки: с регулируемым снижением, по спирали, с обратной тягой, на сетку, вертикальная посадка (VTOL).
- Автонастройка, работа с симуляторами JSBSIM, X-Plane, RealFlight.
- Поддержка различных схем VTOL: самолёты-квадрокоптеры, наклонные крылья/роторы, вертикальные хвосты, орнитоптеры.
- Оптимизация самолётов с 3 или 4 каналами управления.
Для наземных транспортных средств
- Режимы: ручной, обучение, авто, управление рулём, удержание, навигация.
- Поддержка как колёсных, так и гусеничных шасси.
Для подводных аппаратов
- Удержание глубины: c помощью датчиков давления обеспечивается стабильность глубины до нескольких сантиметров.
- Управление светом: поддержка подводного освещения через контроллер.
Документация ArduPilot детально изложена на официальной вики (700+ страниц), разбита на шесть главных разделов: руководство по вертолётам, самолётам, наземным и подводным аппаратам для пользователей; отдельная часть для разработчиков (ПО/аппаратное обеспечение); и общее руководство по совместным вопросам, использующее материалы из первых четырёх разделов.
Применение ArduPilot
Любительское использование
- Дрон-гонки
- Радиоуправляемое моделирование для хобби
Профессиональное использование
- Фотограмметрия с воздуха
- Воздушная фотосъёмка и видеосъёмка
- Дистанционное зондирование
- Поиск и спасение
- Робототехнические приложения
- Научные исследования
- Логистика
История
2007—2012
Проект ArduPilot появился в конце 2007 года[11], когда Джорди Муньос (впоследствии сооснователь 3DRobotics с Крисом Андерсоном) написал код Arduino — «ArduCopter» — для стабилизации радиоуправляемого вертолёта. В 2009 году Муньос и Андерсон выпустили первую версию ArduPilot 1.0[12] (ПО для полётного контроллера), которую можно запускать на аппаратных платах. В том же году Муньос построил традиционный радиоуправляемый вертолёт, способный летать автономно, и выиграл первую гонку Sparkfun AVC[13]. Проект быстро разросся за счёт большого сообщества DIY-дроноводов, включая Криса Андерсона, который основал сообщество и форум в начале 2007 года[14][15].
Первая версия ArduPilot поддерживала только крылатые аппараты и работала на основе термопил, определяющих положение горизонта по разнице температуры неба и земли[14]. Позже систему усовершенствовали, заменив термопилы на инерционный измерительный блок (IMU), включающий акселерометры, гироскопы и магнитометры. Затем была расширена поддержка новой техники: появились отдельные подсистемы для вертолётов, самолётов, автомобилей и подводных аппаратов.
В 2011—2012 годах функциональность и кодовая база ArduPilot существенно возросли благодаря вкладу новых участников, таких как Эндрю «Tridge» Триджелл и автор HAL Пэт Хики. Среди заслуг Триджа — автоматическая проверка, поддержка симуляции, PyMavlink и Mavproxy. Пэт Хики интегрировал библиотеку AP_HAL (аппаратная абстракция HAL), что упростило и модульно разделило код и низкоуровневую работу с оборудованием. В 2012 году Рэнди Маккей стал ведущим по поддержке раздела Copter, а Тридж — поддержкой самолётов. Оба остаются главными поддерживающими проект.
ArduPilot как свободное ПО повторяет организационную модель Linux/проекта GNU, а также PX4/Pixhawk и Paparazzi UAV — открытость и невысокая цена позволили энтузиастам создавать микро- и мини-БПЛА, а впоследствии промышленность частично переняла код ArduPilot для профессиональных автономных решений.
2013—2016
Первые версии ArduPilot работали на контроллере APM с AVR-ЦПУ и языком Arduino (откуда «Ardu» в названии), но впоследствии код был переписан на C++, с поддержкой утилит на Python.
В 2013—2014 годах проект расширил поддержку оборудования и ОС (кроме изначальной архитектуры Arduino Atmel): впервые появился аппаратный контроллер Pixhawk (совместный проект PX4, 3DRobotics и ArduPilot), позже добавились контроллеры Bebop2 (Parrot) и Linux-контроллеры NAVIO2 (для Raspberry Pi) и ErleBrain (на BeagleBone). Ключевым событием стал первый полёт под управлением Linux середине 2014 года[16].
К концу 2014 года начали формировать DroneCode[17] — альянс ведущих ОС-проектов в сфере БПЛА для тесной интеграции, в первую очередь между ArduPilot и PX4. Участие ArduPilot в DroneCode завершилось в сентябре 2016 года[18]. 2015 год также отметился презентацией квадрокоптера Solo от 3DRobotics (ведущий спонсор разработки ArduPilot) — стандартной платформы с ArduPilot; однако продукт не имел коммерческого успеха[19].
Осенью 2015 прошёл знаковый эксперимент с роем из 50 самолётов под управлением ArduPilot в лаборатории ARSENL Военно-морской аспирантуры США.
База ArduPilot в этот период была кардинально рефакторизирована, и перестала походить на свою «Arduino»-версию прошлого.
2018 года
Код ArduPilot продолжает активно развиваться: добавляется интеграция с копроцессорами для автономной навигации, поддержка новых схем VTOL, интеграция с ROS, поддержка планёров и расширение функций подводных аппаратов. Проект развивается под эгидой ArduPilot.org в структуре некоммерческой организации Software in the Public Interest (spi-inc.org). Финансируется партнёрами, список которых постоянно растёт.
Соревнования UAV Outback
В 2012 команда Canberra UAV заняла первое место в престижном соревновании UAV Outback, применив автопилот APM 2 и ArduPilot. В 2014 Canberra UAV и ArduPilot вновь стали чемпионами, успешно доставив «потерявшемуся» туристу бутылку воды. В 2016 году ArduPilot одержал победу в самой технически сложной версии состязания, обойдя сильных международных конкурентов.
Сообщество
Управление ArduPilot осуществляется группой добровольцев со всего мира, которые используют интернет-форумы (Discourse), канал Gitter для коммуникации, планирования, разработки и поддержки. Разработчики проводят еженедельные встречи в открытом чате через Mumble. Сотни пользователей вносят свой вклад — идеи, код, документацию. Программа распространяется под лицензией GPL версии 3 и свободно доступна для скачивания.
Настройка и расширение
Гибкость ArduPilot сделала его популярным в сообществе DIY и среди профессионалов и компаний. Например, квадрокоптер Solo от 3DRobotics работает на ArduPilot, а ряд профессиональных компаний, включая Boeing, также используют платформу[20]. Гибкость позволяет поддерживать разные типы и размеры шасси, сенсоры, камеры-гимбалы и RC-трансмиттеры в зависимости от требований оператора.
ArduPilot успешно интегрирован во множество самолётов (например, Bixler 2.0). Настраиваемость и простота установки позволяют использовать ArduPilot для различных задач: картографирование, поиск и спасение, инспекция территорий. Программа Mission Planner облегчает пользователю настройку, программирование, эксплуатацию и симуляцию плат ArduPilot для нужных целей.
Примечания
- ↑ Release 3.5.6 — 2018.
- ↑ Release 4.2.1 — 2022.
- ↑ Corporate Partners (англ.). ardupilot.org. Дата обращения: 14 января 2018. Архивировано 9 октября 2016 года.
- ↑ Eure, Kenneth W. (2013-12). “An Application of UAV Attitude Estimation Using a Low-Cost Inertial Navigation System” (PDF). NTRS.nasa.gov. NASA/TM–2013-218144. Проверьте дату в
|date=(справка на английском) - ↑ ArduPilot/ardupilot на GitHub (англ.). GitHub. Дата обращения: 1 мая 2017. Архивировано 24 августа 2025 года.
- ↑ Please welcome ArduPilotMega 2.0! (англ.). diydrones.com (декабрь 2011). Дата обращения: 1 мая 2017. Архивировано 17 августа 2025 года.
- ↑ Linux and the future of drones [LWN.net]. lwn.net. Дата обращения: 5 мая 2017. Архивировано 10 октября 2025 года.
- ↑ Press. PX4 и 3D Robotics представляют Pixhawk: продвинутый и простой автопилот (англ.), sUAS News - The Business of Drones (29 августа 2013). Архивировано 12 июня 2016 года. Дата обращения: 1 мая 2017.
- ↑ Первый успешный полёт с процессором Zynq — Aerotenna (англ.), Aerotenna (8 октября 2015). Архивировано 21 апреля 2017 года. Дата обращения: 5 мая 2017.
- ↑ Режимы полёта Copter — документация (англ.). ardupilot.org. Дата обращения: 1 мая 2017. Архивировано 23 августа 2025 года.
- ↑ ArduCopter V1 Beta. forum.arduino.cc (7 ноября 2007). Дата обращения: 1 мая 2017. Архивировано 26 мая 2018 года.
- ↑ ArduPilot, an open source autopilot, now available ($24.95!) — RC Groups (англ.). www.rcgroups.com. Дата обращения: 8 мая 2017. Архивировано 12 июня 2024 года.
- ↑ 2009 AVC — AVC.SFE (англ.). avc.sparkfun.com. Дата обращения: 3 мая 2017. Архивировано 30 июля 2025 года.
- ↑ 1 2 Developer. Дата обращения: 1 мая 2017.
- ↑ Drones Makers Get Help From the Open Source Crowd. businessweek.com. Дата обращения: 1 мая 2017. Архивировано 1 апреля 2013 года.
- ↑ Первый полёт ArduPilot на Linux (англ.). diydrones.com (20 августа 2014). Дата обращения: 3 мая 2017. Архивировано 30 июля 2025 года.
- ↑ Introducing the Dronecode Foundation (англ.). diydrones.com (13 октября 2014). Дата обращения: 3 мая 2017. Архивировано 1 июня 2025 года.
- ↑ ArduPilot and DroneCode part ways (англ.). diydrones.com (9 сентября 2016). Дата обращения: 3 мая 2017. Архивировано 5 августа 2025 года.
- ↑ Mac, Ryan. За кулисами краха 3D Robotics, самой перспективной компании дронов в Северной Америке, Forbes. Архивировано 25 августа 2025 года. Дата обращения: 3 мая 2017.
- ↑ Davies, Alex. “Экспериментальный грузовой дрон Boeing — тяжеловес”. Wired.