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.
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.
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:
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¶
- Bringing new members onto the team
- Most developer chat happens on Gitter or in the Developer Team Forum. Real-time voice discussions take place on our mumble server. All these channels are open for anyone to join
- Our annual developers conference is DroneCon. See previous years speeches and content here.
- The source code for ArduPilot/APM is managed using git on https://github.com/ArduPilot/ardupilot
- Pre-compiled firmware for supported autopilot boards is available from http://firmware.ardupilot.org
- User support is available on the forums.
- The ArduPilot automatic test system shows the test status of each commit. It’s described here.
- Bug tracking and open issues are tracked using the github issues system
- Vehicle onboard parameter documentation for copter, plane and rover is auto-generated from the source code
- Release Procedures for Copter
- Current and Past Dev Team members
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¶
- Working with the ArduPilot Project Code
- License (GPLv3)
- Supported Controller Boards
- Learning the ArduPilot Codebase
- Library Description
- Library Example Sketches
- Sensor Drivers
- UARTs and the Console
- RC Input and Output
- Storage and EEPROM management
- Copter - Vehicle Code introduction
- Copter - Attitude Control
- Copter - Adding Parameters
- Copter - Adding a new flight mode
- Copter - Scheduling your new code to run intermittently
- Copter - Object Avoidance
- Adding a new MAVLink message
- Adding a new MAVLink Gimbal
- Building the code
- Building for Pixhawk on Windows10 with Bash on Ubuntu
- Building for Pixhawk on Windows with Make
- Building for Pixhawk using Eclipse on Windows
- Building for Pixhawk on Mac with Make
- Building for Pixhawk on Linux with make
- Building for NAVIO2 on RPi3
- Building for Erle-Brain 2
- Building for Erle-Brain
- Building for Bebop 2
- Building for Bebop on Linux
- Building for Qualcomm Snapdragon Flight Kit
- Building for BeagleBone Black
- Building Mission Planner with Visual Studio
- Git Submodules
- Code Editors & IDEs
- Simulation & Testing
- SITL Simulator
- HITL Simulators
- Testing with Replay
- The ArduPilot Autotest Framework
- MAVLink Commands
- CAN and UAVCAN
- Companion Computers
- Pixhawk Advanced Hardware Info
- MAVProxy Developer GCS
- RTF Vehicle Developer Information
- Wiki Editing Guide
- Donating to ArduPilot project
- Commercial Support
- Development Team
- History of ArduPilot
- Advanced user tools (downloads)
- Developer tools (downloads)
- Firmware (downloads)
- Archived Topics
- Building ArduPilot for APM2.x with Eclipse on Windows
- Loading the code onto APM2.x
- Advanced Configuration Settings
- Mission Planner Terminal
- Full Table of Contents