Welcome to the ArduPilot Development Site


Keep up with the latest ArduPilot related blogs on ArduPilot.org!

ArduPilot (also known as 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 Team Forum, chat to us on Gitter or join the weekly development call. You will find a large number of users and some developers in the ArduPilot facebook group. All channels are open to all. 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 and APM2 boards were based around the Arduino development environment and AVR CPUs. We’ve since outgrown these boards and recommend people use one of the many more capable boards found on our Autopilot Hardware Options page including the Pixhawk. A timeline history of ArduPilot can be found here.

Supported boards

Supported AutoPilot Controller Boards provides an overview and key links for all the supported controller boards, including Pixhawk, Pixhawk2, Pixracer, Erle-Brain, NAVIO2, Bebop2, etc.

The ArduPilot/APM source code is written on top of the AP-HAL hardware abstraction layer, making it relatively easy 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.

  • Plane (wiki, code) - autopilot for planes
  • Copter (wiki, code) - autopilot for multicopters and traditional helicopters
  • Rover (wiki, code) - autopilot for ground vehicles
  • Antenna Tracker (wiki, code) - for automatically aiming an antenna at a vehicle
  • 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 - command line oriented and scriptable ground station (mostly used by developers)
  • DroneKit - APM SDK for apps running on vehicles, mobile devices and/or in the cloud.
  • MinimOSD (wiki, code) - on-screen display of flight data
  • Tower (wiki, code, google play) - android ground station
  • QGroundControl* is an alternative ground station written in C++ using the Qt libraries
  • PX4* - designers of the original PX4FMU hardware (from which the Pixhawk was developed) and owners of a relatively small number of drivers we use when running on a Pixhawk flight controller board
  • MAVLink* - 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.
  • UAVCAN* - Lightweight protocol designed for reliable communication in aerospace and robotic applications via CAN bus. Ardupilot is using the Libuavcan, which is a portable, cross-platform library written in C++ with minimal dependency on the C++ standard library.

Getting Started with ArduPilot Development

The main entry points for developing flight controller/antenna tracker and companion computer code are listed in the sidebar.

For topics related to Ground Control Station development see:

RTF vehicles

There are dozens if not hundreds of companies offering services based on ArduPilot or selling ArduPilot based drones. If the drone has a Pixhawk inside, it is most likely running ardupilot. The most well known commercial grade drone using ardupilot is the 3DR Solo.

How the team works

Development languages and tools

The main flight code for ArduPilot is written in C++. Support tools are written in a variety of languages, most commonly in python.


ArduPilot (including Copter, Plane, Rover, Antenna Tracker 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 for the wiki.

Full Table of Contents