Welcome to the ArduPilot Development Site

Tip

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

ArduPilot 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 volunteer and professional (i.e. paid) developers who, along with our users and Partners, make up the ArduPilot Community.

Tip

New developer? The fastest path in: download the code, build it, then work through learning the codebase.

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 series.

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, The Cube Orange, Holybro Pixhawk 6C Mini, PocketBeagle 2 DIY Cape (Linux), etc.

To get going quickly please consider purchasing one of the ready-to-fly vehicles.

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.

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

  • Sub (wiki, code) - autopilot for submersible 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) in Python

  • QGroundControl* is an alternative ground station written in C++ using the Qt libraries

  • Pixhawk* - Pixhawk open standards hardware project

  • MAVLink* - the protocol for communication between the ground station, flight controller and some peripherals.

  • DroneCAN* - Lightweight protocol designed for reliable communication in aerospace and robotic applications via CAN bus. ArduPilot is using the libcanard, which is a portable, cross-platform library written in C++ with minimal dependency on the C++ standard library and calls its version DroneCAN, allowing UAVCAN to evolve separately.

How the team works

See How The Team Works for governance, communication channels, release procedures, funding and voting. A few quick links:

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.

Table of Contents

Getting Started

Security & Reference