ArduPilot is the most advanced, full-featured, and reliable open source autopilot software available. Under continuous development since 2010 by a diverse team of professional engineers, computer scientists, and community contributors, it is capable of controlling almost any vehicle system imaginable — from conventional airplanes and multi-rotors to rovers, boats, and submarines. The project is organized as a set of vehicle firmware targets built on top of a rich shared library ecosystem, making it straightforward to support new vehicle types and hardware platforms without duplicating core logic.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Ardupilot/ardupilot/llms.txt
Use this file to discover all available pages before exploring further.
ArduPilot controls real vehicles in safety-critical environments. Before flying or driving any ArduPilot-powered vehicle, review the safety guidelines on ardupilot.org and comply with all local regulations. Always maintain a safe distance and have a manual override ready.
Vehicle firmware
The ArduPilot project is made up of five main vehicle firmware targets, each tailored to a specific class of vehicle while sharing the same underlying libraries.ArduCopter
Multirotor and helicopter autopilot supporting quadcopters, hexacopters, octocopters, traditional helicopters, and more. Includes advanced features like terrain following, precision landing, and autonomous missions.
ArduPlane
Fixed-wing and VTOL autopilot covering conventional aircraft, flying wings, quad-planes, and tailsitters. Full autonomous mission support with advanced soaring and gliding capabilities.
Rover
Ground vehicle and surface boat autopilot with support for skid-steering, ackermann steering, and vectored-thrust boats. Includes obstacle avoidance and waypoint navigation.
ArduSub
Underwater vehicle (ROV and AUV) autopilot with depth hold, stabilize, and autonomous dive modes. Designed for BlueROV2 and other underwater platforms.
Library ecosystem
The bulk of the ArduPilot codebase lives in thelibraries/ directory — more than 150 shared libraries used across all vehicle types. Key subsystems include:
- AP_NavEKF2 / AP_NavEKF3 — Extended Kalman Filter implementations for sensor fusion, combining GPS, IMU, barometer, magnetometer, and optical flow data into a reliable state estimate.
- GCS_MAVLink — Full MAVLink protocol implementation for communication with ground control stations such as Mission Planner, QGroundControl, and MAVProxy.
- AP_HAL / AP_HAL_ChibiOS / AP_HAL_Linux / AP_HAL_SITL — Hardware Abstraction Layer that isolates vehicle and library code from specific hardware, enabling the same firmware to run on STM32 flight controllers, Linux single-board computers, and the SITL simulator.
- SITL — Software-In-The-Loop simulation backends providing physics models for each vehicle type so that firmware can be developed and tested entirely on a desktop.
- Scripting — Lua scripting engine allowing runtime customization of vehicle behavior without recompiling firmware.
AP_<NAME>_ENABLED), and optional tests/ and examples/ subdirectories.
Repository structure
License and community
ArduPilot is licensed under the GNU General Public License, version 3 (GPL-3.0). All contributions to the project must be made under the same license. The full license text is available inCOPYING.txt at the root of the repository.
The project is maintained by a global community of volunteers and professional contributors. Support and development discussion takes place on the ArduPilot Discuss forums and the ArduPilot Discord server. Bug reports and feature requests are tracked on GitHub Issues.