Welcome to the ArduPilot Development Site

Tip

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

ArduPilot (sometimes known as APM) is the leading open source autopilot system supporting multi-copters, traditional helicopters, fixed wing aircraft, rovers, submarines and antenna trackers.

We pride ourselves on being versatile (rich in features with support for a large number of flight controllers, sensors and frame types), trusted (reliable and predictable) and open (both in terms of software and in our team’s organisation and governance).

The source code is developed by a group of voluteer and profession (i.e. paid) developers who, along with our users and Partners, make up the ArduPilot Community.

Getting Involved

New developers are always welcome! The best way to start is to:

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 long ago outgrew these boards so we recommend users 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

The Autopilot Hardware Options page provides an overview for all the supported controller boards, including Pixhawk, Pixhawk2, Pixracer, NAVIO2, Bebop2, etc.

To get going quickly please consider purchasing one of the ready-to-fly vehicles including the very low-cost SkyRocket/SkyViper drone.

The ArduPilot source code includes 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.

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.

License

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