ArduPilot es un paquete de programas de autopiloto de código abierto para vehículos no tripulados, capaz de controlar de forma autónoma:

Drones multirrotor Aeronaves de ala fija y VTOL Helicópteros Vehículos terrestres Barcos Submarinos Rastreadores de antenas

ArduPilot fue originalmente desarrollado por aficionados con el fin de controlar aeronaves y vehículos, el cual se ha convertido en un autopiloto totalmente funcional y estable usado por la industria, organizaciones de investigación y aficionados.

Software y Hardware

Paquete de software El paquete de software ArduPilot consiste en un software de navegación (normalmente denominado firmware cuando se compila en forma binaria para el microcontrolador) que se ejecuta en el vehículo (ya sea helicóptero, avión, vehículo, rastreador de antenas o submarino), junto con el software de control de la estación de tierra que incluye Mission Planner, APM Planner, QGroundControl, MavProxy, Tower entre otros.

El código fuente de ArduPilot se almacena y gestiona en GitHub, con casi un total de 400 contribuyentes.

El conjunto de software se compila automáticamente cada noche, con integración continua y pruebas unitarias proporcionadas por Travis CI, y un entorno de compilación que incluye el compilador GNU multiplataforma y Waf. Los binarios precompilados que se ejecutan en varias plataformas de hardware están disponibles para su descarga por parte del usuario en los sub-sitios web de ArduPilot.

Hardware respaldado El software para los helicópteros, aviones, vehículos, rastreadores de antenas o submarinos se ejecuta en una amplia variedad de hardware embebido (incluyendo ordenadores Linux completos), que suele consistir en uno o más microcontroladores o microprocesadores conectados a sensores periféricos utilizados para la navegación. Estos sensores incluyen giroscopios y acelerómetros MEMS como mínimo, necesarios para el vuelo de los multirrotores y la estabilización del avión. Los sensores suelen incluir, además, una o más brújulas, altímetros (barométricos) y GPS, junto con sensores adicionales opcionales como sensores de flujo óptico, indicadores de velocidad del aire, altímetros o telémetros láser o sonar, cámaras monoculares, estereoscópicas o RGB-D. Los sensores pueden estar en la misma placa electrónica o ser externos.

El software Ground Station, utilizado para programar o supervisar el funcionamiento del vehículo, está disponible para Windows, Linux, macOS, iOS y Android.

ArduPilot se ejecuta en una amplia variedad de plataformas de hardware, incluyendo las siguientes, enumeradas en orden alfabético:

APM 2.X (microcontroladot base Arduino Atmel Mega Microcontroller), diseñado por Jordi Munoz en 2010. APM viene de ArduPilotMega, solo puede ejecutarse con versiones antiguas de ArduPilot. BeagleBone Azul y PXF Mini (variante BeagleBone Black). Edge , controlador de drone con sistema de transmisión de vídeo, diseñado por Emlid. Erle-Brain, (base Linux) diseñado por Erle Robotics. Intel Aero (Linux o base STM32) Intel Minnowboard (base Linux). y Navio+ (basado en Linux de Raspberry Pi), diseñado por Emlid. Parrot Bebop, y Parrot C.H.U.C.K., diseñado por Parrot, S.A. Pixhawk, (microcontrolador base ARM Cortex), originalmente diseñado por Lorenz Meier y ETH Zurich, imejorado y lanzado en 2013 por PX4, 3DRobotics, y el equipo de desarrollo de ArduPilot. PixRacer, (microcontrolador base ARM Cortex) diseñado por AUAV. Qualcomm SnapDragon (base Linux). SoC Zynq de Xilinx (base Linux, ARM y módulo FPGA). The Cube, formalmente llamado Pixhawk 2, (microcontrolador base ARM Cortex), diseñado por ProfiCNC en 2015. Virtual Robotics VRBrain (microcontrolador base ARM Cortex).

Además de las plataformas de navegación básicas mencionadas anteriormente, ArduPilot también admite la integración y la comunicación con ordenadores de acompañamiento o auxiliares para la navegación avanzada que requiere un procesamiento más potente. Estos incluyen NVidia TX1 y TX2 (arquitectura NVidia Jetson), Intel Edison e Intel Joule, HardKernel Odroid y ordenadores Raspberry PI.

Características

Común a todos los vehículos ArduPilot ofrece un amplio conjunto de funciones, entre las que se encuentran las siguientes, comunes a todos los vehículos:

Modos de vuelo totalmente autónomo, semiautónomo y totalmente manual, misiones programables con puntos objetivo en 3D, posibilidad de añadir geovallas. Opciones de estabilización para evitar la necesidad de un copiloto externo. Simulación con diversos simuladores, incluido ArduPilot SITL. Gran número de sensores de navegación compatibles, incluidos varios modelos de GPS RTK, GPS L1 tradicionales, barómetros, magnetómetros, telémetros láser y sonar, flujo óptico, transpondedor ADS-B, infrarrojos, velocidad del aire, sensores y dispositivos de visión por ordenador/captura de movimiento. Comunicación con sensores mediante SPI, I²C, bus CAN, Serial communication, SMBus. Detección y gestión de fallos como pérdida de contacto por radio, GPS y superación de un límite predefinido, nivel mínimo de energía de la batería. Soporte para la navegación en entornos sin GPS, con posicionamiento basado en la visión, flujo óptico, SLAM, posicionamiento de banda ultra ancha. Soporte para actuadores como paracaídas y pinzas magnéticas. Soporte para motores sin escobillas y con escobillas. Soporte e integración de gimbal fotográfico y de vídeo. Integración y comunicación con potentes ordenadores secundarios o coprocesadores. Amplia documentación a través de la wiki de ArduPilot. Soporte y discusión a través del foro de discusión de ArduPilot, canales de chat Gitter, GitHub, Facebook.

Específico de helicópteros

Modos de vuelo: estabilizado, retención de altitud, loiter, RTL (Return-to-Launch), auto, acro, auto ajuste, frenado, círculo, deriva, guiado, (y guiado sin  GPS), aterrizaje, retención de posición, deporte, lanzar, seguimiento, simple, super simple, evitar ADS-B. Auto ajuste de parámetros. Amplia variedad de tipos de chasis, incluidos tricópteros, cuadricópteros, hexacópteros, octocópteros planos y coaxiales, y configuraciones de motor personalizadas. Soporte para helicópteros eléctricos y de combustión tradicionales, monocópteros y helicópteros en tándem.

Específico de aviones

Modos "Fly By Wire", loiter, auto y acrobático. Opciones de despegue: Despegue manual, cuerda elástica (bungee), catapulta, transición vertical (para aviones VTOL). Opciones de aterrizaje: Pendiente de planeo ajustable, helicoidal, empuje inverso, red, transición vertical (para aviones VTOL). Ajuste automático, simulación con los simuladores JSBSIM, X-Plane y RealFlight. Soporte para una gran variedad de arquitecturas VTOL: Aviones cuadricópteros, alas basculantes, rotores basculantes, asientos de cola, ornitópteros. Optimización de aviones de 3 o 4 canales.

Específico para vehículos terrestres

Modos de funcionamiento manual, aprendizaje, auto, dirección, retención y guiado. Apoyo a las arquitecturas de ruedas y orugas.

Específico para submarinos

Mantenimiento de la profundidad: Gracias a los sensores de profundidad basados en la presión, los submarinos pueden mantener la profundidad en unos pocos centímetros. Control de la luz: Control de la iluminación submarina a través del controlador.

ArduPilot está completamente documentado dentro de su wiki, con un total equivalente a unas 700 páginas y dividido en seis secciones principales: Las subsecciones relacionadas con los helicópteros, aviones, vehículos terrestres y submarinos están dirigidas a los usuarios. Una subsección de desarrolladores para usos avanzados está dirigida principalmente a los ingenieros de software y hardware, y una sección común que reagrupa la información común a todos los tipos de vehículos y que se comparte dentro de las cuatro primeras secciones.

Casos de uso de ArduPilot

Aficionados

Carreras de drones. Construcción y manejo de modelos de radiocontrol para el ocio.

Profesional

Fotogrametría aérea. Fotogrametría aérea y grabación de películas. Teledetección. Búsqueda y rescate. Aplicaciones en robótica. Investigación. Logística.

Historia

Primeros años, 2007-2012 Los primeros inicios del proyecto ArduPilot comienzan a finales de 2007 cuando Jordi Munoz, quien posteriormente cofundó 3DRobotics con Chris Anderson, implementó un programa Arduino (al cual llamó "ArduCopter") para estabilizar un helicóptero radiocontrol. En 2009, Munoz y Anderson lanzaron Ardupilot 1.0 (el software de la controladora de vuelo) que junto con una placa hardware este podía ejecutarse. Ese mismo año Munoz, quien había construido un helicóptero radiocontrol tradicional capaz de volar de forma autónoma, ganó la primera competición Sparkfun AVC. El proyecto creció aun más gracias a muchos miembros de la comunidad de drones DIY, incluyendo a Chris Anderson quien defendió el proyecto y fundó la comunidad basada en el foro a principios de 2007.Developer | APM open source autopilotDrones Makers Get Help From the Open Source Crowd

La primera versión de ArduPilot únicamente soportaba aeronaves de ala fija y se basaba en un sensor termopila que determinaba la localización del horizonte relativo al aeronave midiendo la diferencia de temperatura entre el cielo y la tierra. Posteriormente, el sistema fue mejorado reemplazando las termopilas con un unidad de medición inercial (IMU) usando una combinación de acelerómetros, giróscopos y magnetómetros. El soporte a diferentes vehículos se añadió posteriormente lo que llevó a subproyectos para los helicópteros en general, aviones, vehículos terrestres y submarinos.

Entre los años 2011 y 2012 hubo un gran crecimiento en las funcionalidades de ArduPilot y el tamaño del código base, gracias en gran medida a nuevos contribuidores como Andrew "Tridge" Tridgell y el autor de HAL, Pat Hickey. Lao contribuciones de Tridge incluyen la comprobación automática y la posibilidad de simulación para Ardupilot, junto con PyMavlink and Mavproxy. Hickey fue quien trajo la biblioteca AP_ HAL al código base: HAL (Hardware Abstraction Layer) simplificó en gran medida y modularizó el código base introduciendo y confinando aspectos específicos de bajo nivel para la implementación en hardware en una biblioteca hardware separada. En el año 2012, Randy Mackay tomó el papel de líder en el mantenimiento de la parte de cópteros, después de una petición por parte de Jason Short, y Tridge tomó el papel de líder en el mantenimiento de la parte de aviación, después de que Doug Weibel relevara el cargo, quien fue a obtener un doctorado en ingeniería aeroespacial. Tanto Randy como Tridgeson los actuales líderes en el mantenimiento.

ArduPilot como software libre es similar a la forma de trabajar del sistema operativo Linux y al proyecto GNU, y al PX4/Pixhawk y proyecto paparazzi, donde el bajo coste y la disponibilidad permitió a los aficionados construir pequeñas y autónomas aeronaves pilotadas remotamente, como los micro drones y pequeños UAVs. La industria de los drones, de forma similar, progresivamente han tomado prestado el código de ArduPilot para construir vehículos autónomos profesionales de gama alta.

Madurez, 2013-2016 Si bien las primeras versiones de ArduPilot usaban el controlador de vuelo APM, una CPU AVR que ejecutaba el lenguaje de programación de código abierto Arduino (que explica la parte "Ardu" del nombre del proyecto), años posteriores fueron testigos de una importante reescritura del código base en C++. con muchas utilidades de apoyo escritas en Python.