Table of Contents

Welcome to the ArduPilot/APM development site

ArduPilot/APM is a open source autopilot system supporting multi-copters, traditional helicopters, fixed wing aircraft and rovers. The source code is developed by a large community of enthusiasts. New developers are always welcome! The best way to start is by joining the Developer Mailing List, which is open to all and chock-full of daily development goodness. Lurk for a while to get a feel for it, then participate!

Why the name?

The ‘Ardu’ part of the ArduPilot name comes from Arduino. The original APM1 autopilot board was based around the Arduino development environment. We’ve since outgrown the Arduino environment and no longer use the Arduino runtime libraries, although we do still support building the ArduPilot for the AVR based APM1 and APM2 boards using a slightly modified version of the Arduino integrated development environment. Because we now support more than just Arduino-compatible hardware (such as PX4) we are moving from “Ardu” prefix names for the software projects to the “APM” prefix (APM:Copter, APM:Plane, APM:Rover, etc), which signifies the cross-platform nature of the current code. A timeline history of ardupilot can be found here.

Supported boards

Currently ArduPilot/APM supports the following autopilot boards

  • Pixhawk — Next-gen PX4, with more memory, improved sensors and a much easier-to-use design
  • PX4 FMU – an 32 bit ARM based autopilot with many advanced features, using the NuttX real-time operating system
  • VRBrain
  • FlyMaple
  • BeagleBone Black — Under development, test platform for running ArduPilot on Linux (Developers only edition)
  • APM2 – a popular AVR2560 8 bit autopilot
  • APM1 (discontinued) – an AVR2560 based autopilot with separate sensor board (aka “oilpan”)

The ArduPilot/APM source code is written on top of the AP-HAL hardware abstraction layer, making it possible to port the code to a wide range of autopilot boards. See this blog post for more information on the move to AP-HAL.

Project List

The ArduPilot system is made up of (or relies upon) several different projects which are listed below.  Those marked with an asterix (*) are peer projects that have their own owners outside the core ArduPilot dev team.  This wiki is relevant only for the first 4 projects listed below.

  • APM:Plane (wiki, code) – autopilot for planes
  • APM:Copter (wiki, code) – autopilot for multicopters and traditional helicopters
  • APM:Rover (wiki, code) – autopilot for ground vehicles
  • Mission Planner (wiki, code) – the most commonly used ground station written in C# for windows but also runs on Linux and MacOS via mono
  • APM Planner 2.0 (wiki, code) is a ground station specifically for APM written in C++ using the Qt libraries
  • MAVProxy (wiki) – command line oriented and scriptable ground station (mostly used by developers)
  • MinimOSD (wiki, code) – on-screen display of flight data
  • AndroPilot (user guide, code, google play) – android ground station
  • DroneAPI (tutorial, droneshare) – A developer API for drone coprocessors and web applications.
  • DroidPlanner2 (wiki, code, google play) – android ground station
  • QGroundControl is an alternative ground station written in C++ using the Qt libraries
  • PX4 (wiki) – designers of the PX4FMU and owners of the underlying libraries upon which APM:Plane/Copter/Rover use when running on the PX4FMU
  • MAVLink (wiki) – the protocol for communication between the ground station, flight controller and some periphers including the OSD. A “Dummy’s Guide” to working with MAVLink is here.

Getting Started with Flight Code Development

Getting started with Ground Station development

How the team works


Development languages and tools

The main flight code for ArduPilot/APM is written in C++. Support tools are written in a variety of languages, most commonly in python. Currently the main vehicle code is written as ‘.pde’ files, which come from the Arduino build system. The pde files are preprocessed into a .cpp file as part of the build. The include statements in the pde files also provide implied build rules for what libraries to include and link to.


ArduPilot (including ArduCopter, ArduPlane, ArduRover and MissionPlanner) is released as free software under the GNU General Public License version 3 or later.  See License overview wiki page here.

Didn’t find what you are looking for?

If you think of something that should be added to this site, please open an issue or post a comment on the drones-discuss mailing list.

APM open source autopilot