АрдуПилот
ArduPilot — это пакет программного обеспечения для беспилотных транспортных средств с открытым исходным кодом, способный автономно управлять различными устройствами. Базируется на платформе Arduino.
Например:
- Мультироторные дроны
- Самолеты с неподвижным крылом и СВВП
- Вертолёты
- Наземные вездеходы
- Лодки
- Подводные лодки
- Антенные трекеры (станции слежения за спутником).
Первоначально ArduPilot был разработан любителями для управления моделями самолетов и вездеходов и превратился в полнофункциональный и надежный автопилот, используемый в промышленности, исследовательских организациях и любителями.
Содержание |
Программное и аппаратное обеспечение
Программный пакет
Пакет программного обеспечения ArduPilot состоит из навигационного программного обеспечения (обычно называемого прошивкой, когда оно скомпилировано в двоичную форму для аппаратных целей микроконтроллера), работающего на транспортном средстве (коптере, самолете, вездеходе, AntennaTracker или Sub), а также управляющем программном обеспечении наземной станции, включая планировщик миссий, планировщик APM, QGroundControl, MavProxy, Tower и другие.
Исходный код ArduPilot хранится и управляется на GitHub, в нем участвуют почти 400 человек.
Программный пакет создается автоматически каждую ночь с непрерывной интеграцией и модульным тестированием, предоставляемыми Travis CI , а также средой сборки и компиляции, включающей кросс-платформенный компилятор GNU и Waf . Предварительно скомпилированные двоичные файлы, работающие на различных аппаратных платформах, доступны для загрузки пользователями с дочерних веб-сайтов ArduPilot.
Поддерживаемое оборудование
Программное обеспечение Copter, Plane, Rover, AntennaTracker или Sub работает на широком спектре встроенного оборудования (включая полноценные компьютеры Linux), обычно состоящего из одного или нескольких микроконтроллеров или микропроцессоров, подключенных к периферийным датчикам, используемым для навигации. Эти датчики включают как минимум МЭМС — гироскопы и акселерометры, необходимые для мультикоптерного полета и стабилизации самолета. Датчики обычно включают, кроме того, один или несколько компасов, высотомер (барометрический) и GPS, а также необязательные дополнительные датчики, такие как оптические датчики потока, индикаторы воздушной скорости, лазерные или гидроакустические высотомеры или дальномеры, монокулярные, стереоскопические или RGB-D камеры. Датчики могут быть как на той же электронной плате, так и внешними.
Программное обеспечение наземной станции, используемое для программирования или мониторинга работы транспортного средства, доступно для Windows, Linux, macOS, iOS и Android.
ArduPilot работает на самых разных аппаратных платформах, включая следующие, перечисленные в алфавитном порядке:
- Intel Aero (Linux или базовая версия STM32)
- APM 2.X (на базе микроконтроллера Atmel Mega Arduino), разработанный Хорди Мунозом в 2010 году. [5] APM для Ardu P ilot Mega работает только на более старых версиях ArduPilot .
- BeagleBone Blue и PXF Mini (накидка BeagleBone Black).
- Cube, ранее называвшийся Pixhawk 2 (база микроконтроллера ARM Cortex), разработанный ProfiCNC в 2015 году.
- Edge, контроллер дрона с системой потокового видео, разработанный Emlid.
- Erle-Brain (на базе Linux), разработанный Erle Robotics.
- Intel Minnowboard (база Linux). [6]
- Navio2 и Navio+ (на базе Raspberry Pi Linux), разработанные Emlid.
- Parrot Bebop и Parrot CHUCK, разработанные Parrot, SA
- Pixhawk [ ru ], (база микроконтроллера ARM Cortex), изначально разработанный Лоренцем Мейером и ETH Zurich, улучшенный и запущенный в 2013 году компаниями PX4 , 3DRobotics и командой разработчиков ArduPilot. [7]
- PixRacer (на базе микроконтроллера ARM Cortex), разработанный AUAV.
- Qualcomm SnapDragon (на базе Linux).
- Virtual Robotics VRBrain (на базе микроконтроллера ARM Cortex).
- Процессор Xilinx SoC Zynq (база Linux, процессор ARM и FPGA). [8]
В дополнение к вышеуказанным базовым навигационным платформам, 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 , последовательную связь , SMBus .
- Отказоустойчивость при потере радиосвязи, GPS и нарушении заданной границы, минимальный уровень заряда батареи.
- Поддержка навигации в средах, где отсутствует GPS, с позиционированием на основе зрения, оптическим потоком , SLAM , сверхширокополосным позиционированием.
- Поддержка приводов, таких как парашюты и магнитные захваты.
- Поддержка бесколлекторных и щеточных двигателей.
- Поддержка и интеграция фото и видео подвеса.
- Интеграция и связь с мощными вторичными или «компаньонами» компьютерами
- Богатая документация через вики ArduPilot.
- Поддержка и обсуждение через дискуссионный форум ArduPilot, чат-каналы Gitter, GitHub, Facebook.
Специально для коптера
- Режимы полета: Стабилизация, Alt Hold, Loiter, RTL (Return-to-Launch), Auto, Acro, AutoTune, Brake, Circle, Drift, Guided (и Guided_NoGPS), Land, PosHold, Sport, Throw, Follow Me, Simple , Супер просто, Избегайте_ADSB. [9]
- Автотюнинг.
Поддерживается широкий спектр типов рам, включая трикоптеры, квадрокоптеры, гексакоптеры, плоские и коаксиальные октокоптеры, а также нестандартные конфигурации двигателей. - Поддержка традиционных электрических и газовых вертолетов, монокоптеров, тандемных вертолетов.
Для самолёта
- Режимы Fly By Wire, праздношатание, авто, акробатические режимы.
- Варианты взлета: Ручной старт, тарзанка, катапульта, вертикальный переход (для самолетов вертикального взлета и посадки).
- Варианты посадки: регулируемая глиссада, винтовая, обратная тяга, сетка, вертикальный переход (для самолетов вертикального взлета и посадки).
- Автонастройка, моделирование с помощью симуляторов JSBSIM, X-Plane и RealFlight .
- Поддержка большого количества архитектур вертикального взлета и посадки: квадропланы, наклоняемые крылья, наклоняющиеся роторы, хвостовые ситтеры, орнитоптеры.
- Оптимизация 3-х или 4-х канальных самолетов.
Для вездеходов
- Ручной, обучающий, автоматический, рулевой, удерживающий и управляемый режимы работы.
- Поддержка колесной и гусеничной архитектур.
Для подводных лодок
- Удержание глубины: используя датчики глубины на основе давления, подводные лодки могут поддерживать глубину с точностью до нескольких сантиметров.
- Управление освещением: управление подводным освещением с помощью контроллера.
ArduPilot полностью задокументирован в своей вики, что в сумме эквивалентно примерно 700 печатным страницам и разделено на шесть основных разделов: подразделы, связанные с вертолетом, самолетом, вездеходом и подводным транспортным средством, предназначены для пользователей. Подраздел разработчика для расширенного использования предназначен в первую очередь для разработчиков программного и аппаратного обеспечения, а общий раздел, в котором информация, общая для всех типов транспортных средств, перегруппирована, находится в первых четырех разделах.
История
Ранние годы, 2007-2012
Самые ранние корни проекта ArduPilot восходят к концу 2007 года [10] , когда Хорди Муньос, который позже стал соучредителем 3DRobotics с Крисом Андерсоном , написал программу Arduino (которую он назвал «ArduCopter») для стабилизации радиоуправляемого вертолета. В 2009 году Муньос и Андерсон выпустили Ardupilot 1.0 [11] (программное обеспечение контроллера полета) вместе с аппаратной платой, на которой он мог работать. В том же году Муньос, который построил традиционный беспилотный вертолет с радиоуправлением, способный летать автономно, выиграл первый конкурс Sparkfun AVC. [12] Проект получил дальнейшее развитие благодаря многим членам сообщества DIY Drones, в том числе Крису Андерсону, который отстаивал проект и основал сообщество на основе форума ранее в 2007 году.[13] [14]
Первая версия ArduPilot поддерживала только самолеты с неподвижным крылом и была основана на датчике термобатареи , который основан на определении положения горизонта относительно самолета путем измерения разницы температур между небом и землей. [15] Позже система была усовершенствована, чтобы заменить термобатареи инерциальным измерительным блоком (IMU) с использованием комбинации акселерометров , гироскопов и магнитометров . Позже поддержка транспортных средств была расширена на другие типы транспортных средств, что привело к подпроектам «Вертолет», «Самолет», «Ровер» и «Подводная лодка».
В 2011 и 2012 годах произошел взрывной рост функциональности автопилота и размера кодовой базы, во многом благодаря новому участию Эндрю «Триджа» Триджелла.и автор HAL Пэт Хики. Вклад Триджа включал возможности автоматического тестирования и моделирования для Ardupilot, а также PyMavlink и Mavproxy. Хикки сыграл важную роль во внедрении библиотеки AP_HAL в кодовую базу: HAL (уровень аппаратной абстракции) значительно упростил и модулизировал кодовую базу, введя и ограничив низкоуровневую специфику аппаратной реализации отдельной аппаратной библиотекой. В 2012 году Рэнди Маккей также взял на себя роль ведущего специалиста по обслуживанию Copter по просьбе бывшего специалиста по обслуживанию Джейсона Шорта, а Тридж взял на себя роль ведущего специалиста по обслуживанию самолетов после Дуга Вейбеля, который впоследствии получил докторскую степень. в аэрокосмической технике. И Рэнди, и Тридж на сегодняшний день являются ведущими сопровождающими.
Подход свободного программного обеспечения к разработке кода ArduPilot аналогичен подходу к операционной системе Linux и проекту GNU , а также к проекту PX4/Pixhawk и Paparazz , где низкая стоимость и доступность позволили любителям создавать автономные небольшие дистанционно пилотируемые летательные аппараты, транспортные средства и миниатюрные БПЛА. Индустрия дронов также постепенно использовала код ArduPilot для создания профессиональных автономных транспортных средств высокого класса.
Зрелость, 2013–2016 гг.
В то время как в ранних версиях ArduPilot использовался контроллер полета APM, процессор AVR, работающий на языке программирования с открытым исходным кодом Arduino (что объясняет часть названия проекта «Ardu»), в последующие годы кодовая база была значительно переписана на C++. со многими вспомогательными утилитами, написанными на Python.
В период с 2013 по 2014 год ArduPilot эволюционировал, чтобы работать на ряде аппаратных платформ и операционных систем, помимо исходной архитектуры микроконтроллера на базе Arduino Atmel, сначала с коммерческим внедрением аппаратного контроллера полета Pixhawk, результатом совместных усилий PX4, 3DRobotics и команды разработчиков ArduPilot, а затем к Bebop2 от Parrot и полетным контроллерам на базе Linux, таким как NAVIO2 на базе Raspberry Pi и ErleBrain на базе BeagleBone. Ключевым событием этого периода стал первый полет самолета под Linux в середине 2014 г.
В конце 2014 года была создана компания DroneCode, созданная для объединения ведущих проектов программного обеспечения для БПЛА с открытым исходным кодом и, в первую очередь, для укрепления отношений и сотрудничества проектов ArduPilot и PX4. Участие ArduPilot в "DroneCod"e закончилось в сентябре 2016 года.
2015 год также стал знаменательным для 3DRobotics, крупного спонсора разработки ArduPilot, когда она представила квадрокоптер Solo, серийный квадрокоптер, работающий под управлением ArduPilot. Однако коммерческого успеха Соло не суждено было случиться.
Осенью 2015 года снова произошло ключевое событие в истории автопилота: группа из 50 самолетов, работающих под управлением ArduPilot, одновременно летала в команде Advanced Robotic Systems Engineering Laboratory (ARSENL) Военно-морской аспирантуры.
В течение этого периода кодовая база ArduPilot была значительно реорганизована до такой степени, что она перестала иметь какое-либо сходство с ее ранними годами существования Arduino.
Текущий, 2018+
Эволюция кода ArduPilot продолжается благодаря поддержке интеграции и связи с мощными компьютерами-компаньонами для автономной навигации, поддержки самолетов для дополнительных архитектур вертикального взлета и посадки, интеграции с ROS , поддержки планеров и более тесной интеграции для подводных лодок. Проект развивается под эгидой ArduPilot.org, проекта некоммерческой организации Software in the Public Interest (spi-inc.org). ArduPilot частично спонсируется растущим списком корпоративных партнеров.
БПЛА Outback Challenge
В 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, но он также завоевал популярность среди профессиональных пользователей и компаний. Например, квадрокоптер 3DRobotics Solo использует ArduPilot, как и большое количество профессиональных аэрокосмических компаний, таких как Boeing. Гибкость позволяет поддерживать самые разные типы и размеры рам, различные датчики, подвесы для камер и радиоуправляемые передатчики в зависимости от предпочтений оператора.
ArduPilot был успешно интегрирован во многие самолеты, такие как Bixler 2.0. Настраиваемость и простота установки позволили интегрировать платформу ArduPilot для решения самых разных задач. Наземная станция управления Mission Planner (Windows) позволяет пользователю легко настраивать, программировать, использовать или имитировать плату ArduPilot для таких целей, как картографирование, поиск и спасение, а также обследование территорий.
См. также
Робототехника с открытым исходным кодом