Skip to main content

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 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.
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.
A fifth target, AntennaTracker, provides automated antenna pointing to keep a directional antenna locked onto a moving vehicle throughout a flight or mission.

Library ecosystem

The bulk of the ArduPilot codebase lives in the libraries/ 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.
Libraries follow a consistent layout: a primary class header and implementation, optional backend interfaces for driver abstraction, compile-time feature flags (AP_<NAME>_ENABLED), and optional tests/ and examples/ subdirectories.

Repository structure

ArduCopter/       # Copter vehicle code (modes, GCS, parameters)
ArduPlane/        # Plane vehicle code
ArduSub/          # Sub vehicle code
Rover/            # Rover vehicle code
AntennaTracker/   # Antenna tracker vehicle code
libraries/        # Shared libraries (the bulk of the codebase)
  AP_<Name>/      # ArduPilot libraries (AP_GPS, AP_Baro, AP_Terrain...)
  AC_<Name>/      # Copter-specific controls (AC_PID, AC_WPNav...)
  AR_<Name>/      # Rover-specific (AR_Motors, AR_WPNav)
  AP_HAL/         # Hardware Abstraction Layer interface
  GCS_MAVLink/    # MAVLink ground control station interface
  SITL/           # SITL simulation backends (physics models)
Tools/
  autotest/       # SITL integration test framework
  ardupilotwaf/   # Waf build system extensions
modules/          # Git submodules (ChibiOS, mavlink, gtest...)

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 in COPYING.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.

Build docs developers (and LLMs) love