ArduPilot — это программный пакет с открытым исходным кодом для автопилота беспилотных транспортных средств [1] , способный управлять:
ArduPilot изначально был разработан любителями для управления моделями самолетов и вездеходов и превратился в полнофункциональный и надежный автопилот, используемый промышленностью [2] , исследовательскими организациями [3] и любителями.
Программный пакет ArduPilot состоит из навигационного программного обеспечения (обычно называемого прошивкой, когда оно скомпилировано в двоичную форму для аппаратных целей микроконтроллера), работающего на транспортном средстве ( коптере , самолете , вездеходе, AntennaTracker или подводной лодке), а также программного обеспечения для управления наземной станцией, включая Mission Planner, APM Planner, QGroundControl, MavProxy, Tower и другие.
Исходный код ArduPilot хранится и управляется на GitHub , в разработке участвуют более 800 человек. [4]
Программный пакет автоматически собирается каждую ночь, с непрерывной интеграцией и модульным тестированием, предоставляемыми Travis CI , а также средой сборки и компиляции, включающей кроссплатформенный компилятор GNU и Waf . Предварительно скомпилированные двоичные файлы, работающие на различных аппаратных платформах, доступны для загрузки пользователем с дочерних сайтов ArduPilot.
Программное обеспечение Copter, Plane, Rover, AntennaTracker или Sub работает на широком спектре встроенного оборудования (включая полноценные компьютеры Linux ), обычно состоящего из одного или нескольких микроконтроллеров или микропроцессоров, подключенных к периферийным датчикам, используемым для навигации. Эти датчики включают в себя как минимум MEMS- гироскопы и акселерометры , необходимые для полета мультиротора и стабилизации самолета. Датчики обычно включают в себя, кроме того, один или несколько компасов , высотомеров (барометрических) и GPS , а также дополнительные датчики, такие как оптические датчики потока , указатели скорости полета , лазерные или гидроакустические высотомеры или дальномеры, монокулярные, стереоскопические или RGB-D камеры. Датчики могут быть на одной электронной плате или внешними.
Программное обеспечение наземной станции, используемое для программирования или мониторинга работы транспортного средства, доступно для Windows, Linux, macOS, iOS и Android.
ArduPilot работает на самых разных аппаратных платформах, включая следующие, перечисленные в алфавитном порядке:
В дополнение к вышеперечисленным базовым навигационным платформам, ArduPilot поддерживает интеграцию и связь с бортовыми компаньонами или вспомогательными компьютерами для расширенной навигации, требующей более мощной обработки. К ним относятся компьютеры NVidia TX1 и TX2 ( архитектура Nvidia Jetson ), Intel Edison и Intel Joule, HardKernel ODROID и Raspberry Pi .
ArduPilot предоставляет большой набор функций, включая следующие, общие для всех транспортных средств:
ArduPilot полностью документирован в своей вики, что эквивалентно примерно 700 печатным страницам и разделено на шесть верхних разделов: подразделы, связанные с транспортными средствами Copter, Plane, Rover и Submarine, предназначены для пользователей. Подраздел «developer» для продвинутого использования предназначен в первую очередь для инженеров программного обеспечения и оборудования, а «общий» раздел, перегруппировывающий информацию, общую для всех типов транспортных средств, находится в первых четырех разделах.
Проект ArduPilot берет свое начало в конце 2007 года [10], когда Хорди Муньос, который позже стал соучредителем 3DRobotics вместе с Крисом Андерсоном , написал программу Arduino (которую он назвал «ArduCopter») для стабилизации радиоуправляемого вертолета. В 2009 году Муньос и Андерсон выпустили Ardupilot 1.0 [11] (программное обеспечение для управления полетом) вместе с аппаратной платой, на которой он мог работать. В том же году Муньос, который построил традиционный радиоуправляемый вертолет БПЛА, способный летать автономно, выиграл первый конкурс Sparkfun AVC. [12] Проект разросся еще больше благодаря многим членам сообщества DIY Drones, включая Криса Андерсона, который отстаивал проект и основал форумное сообщество в начале 2007 года. [13] [14]
Первая версия ArduPilot поддерживала только самолеты с фиксированным крылом и была основана на датчике термобатареи , который полагается на определение местоположения горизонта относительно самолета путем измерения разницы температур между небом и землей. [13] Позже система была усовершенствована, заменив термобатареи на инерциальный измерительный блок (IMU), использующий комбинацию акселерометров , гироскопов и магнитометров . Поддержка транспортных средств была позже расширена на другие типы транспортных средств, что привело к подпроектам Copter, Plane, Rover и Submarine.
В 2011 и 2012 годах произошел взрывной рост функциональности автопилота и размера кодовой базы, во многом благодаря новому участию Эндрю «Триджа» Триджела и автора HAL Пэта Хики. Вклад Триджа включал возможности автоматического тестирования и моделирования для Ardupilot, а также PyMavlink и Mavproxy. Хики сыграл важную роль в переносе библиотеки AP_ HAL в кодовую базу: HAL (Hardware Abstraction Layer) значительно упростил и модуляризовал кодовую базу, введя и ограничив низкоуровневые особенности аппаратной реализации отдельной аппаратной библиотекой. В 2012 году Рэнди Маккей также занял должность ведущего сопровождающего Copter по просьбе бывшего сопровождающего Джейсона Шорта, а Тридж занял должность ведущего сопровождающего Plane после Дуга Вайбеля, который впоследствии получил докторскую степень в области аэрокосмической техники. И Рэнди, и Тридж на сегодняшний день являются ведущими сопровождающими.
Подход свободного программного обеспечения к разработке кода ArduPilot аналогичен подходу операционной системы Linux и проекта GNU , а также проекта PX4/Pixhawk и Paparazzi , где низкая стоимость и доступность позволили любителям создавать автономные небольшие дистанционно пилотируемые летательные аппараты , такие как микролетающие аппараты и миниатюрные беспилотные летательные аппараты . Индустрия беспилотников, аналогично, постепенно использовала код ArduPilot для создания профессиональных, высококлассных автономных транспортных средств.
В то время как ранние версии ArduPilot использовали контроллер полета APM, центральный процессор AVR, работающий на языке программирования с открытым исходным кодом Arduino (что объясняет часть «Ardu» в названии проекта), в последующие годы произошла значительная переработка кодовой базы на C++ с добавлением множества вспомогательных утилит, написанных на Python .
В период с 2013 по 2014 год ArduPilot развивался для работы на ряде аппаратных платформ и операционных систем за пределами оригинальной архитектуры микроконтроллера Arduino Atmel , сначала с коммерческим внедрением аппаратного контроллера полета Pixhawk, совместными усилиями PX4, 3DRobotics и команды разработчиков ArduPilot, а затем с Parrot Bebop2 и контроллерами полета на базе Linux, такими как NAVIO2 на базе Raspberry Pi и ErleBrain на базе BeagleBone. Ключевым событием в этот период времени стал первый полет самолета под управлением Linux в середине 2014 года. [15]
В конце 2014 года была создана компания DroneCode [16], призванная объединить ведущие проекты программного обеспечения для БПЛА с открытым исходным кодом и, в частности, укрепить отношения и сотрудничество проектов ArduPilot и PX4. Участие ArduPilot в DroneCode закончилось в сентябре 2016 года. [17] 2015 год также стал знаменательным для компании 3DRobotics, крупного спонсора разработки ArduPilot, с выпуском квадрокоптера Solo, готового квадрокоптера под управлением ArduPilot. Однако коммерческого успеха Solo не произошло. [18]
Осенью 2015 года вновь произошло ключевое событие в истории автопилота: группа из 50 самолетов под управлением ArduPilot одновременно совершила полет в Лаборатории передовых робототехнических систем (ARSENL) в Военно-морской аспирантуре .
За это время кодовая база ArduPilot была существенно переработана , до такой степени, что она перестала иметь какое-либо сходство с ранними годами Arduino.
Эволюция кода ArduPilot продолжается с поддержкой интеграции и связи с мощными сопутствующими компьютерами для автономной навигации, поддержкой самолетов для дополнительных архитектур VTOL, интеграцией с ROS , поддержкой планеров и более тесной интеграцией для подводных лодок. Проект развивается под эгидой ArduPilot.org, проекта в рамках некоммерческой организации Software in the Public Interest (spi-inc.org). ArduPilot частично спонсируется растущим списком корпоративных партнеров.
В 2012 году команда Canberra UAV Team успешно заняла первое место в престижном конкурсе UAV Outback Challenge . В состав команды CanberraUAV входили разработчики ArduPlane, а управляемый самолет управлялся автопилотом APM 2. В 2014 году команда CanberraUAV Team и ArduPilot снова заняли первое место, успешно доставив бутылку «заблудившемуся» туристу. В 2016 году команда ArduPilot заняла первое место в технически более сложном соревновании, опередив сильных конкурентов из международных команд.
ArduPilot совместно управляется группой волонтеров, находящихся по всему миру, которые используют Интернет ( форум на основе дискурса , канал Gitter ) для общения, планирования, разработки и поддержки. Команда разработчиков встречается еженедельно в чате, открытом для всех, используя Mumble . Кроме того, сотни пользователей вносят идеи, код и документацию в проект. ArduPilot лицензирован по GPL версии 3 и бесплатен для загрузки и использования.
Гибкость ArduPilot делает его очень популярным в сфере DIY, но он также завоевал популярность среди профессиональных пользователей и компаний. Например, квадрокоптер Solo от 3DRobotics использует ArduPilot, как и большое количество профессиональных аэрокосмических компаний, таких как Boeing. [19] Гибкость позволяет поддерживать широкий спектр типов и размеров рам, различных датчиков, подвесов камер и радиоуправляемых передатчиков в зависимости от предпочтений оператора.
ArduPilot успешно интегрирован во многие самолеты, такие как Bixler 2.0. Настраиваемость и простота установки позволили интегрировать платформу ArduPilot для различных миссий. Наземная станция управления Mission Planner (Windows) позволяет пользователю легко настраивать, программировать, использовать или моделировать плату ArduPilot для таких целей, как картографирование, поисково-спасательные работы и обследование территорий.
Другие проекты по автономному управлению самолетами:
Другие проекты для наземных транспортных средств и автомобилей: