Tip
Keep up with the latest ArduPilot related blogs on ArduPilot.org!
:ref:`ArduPilot <ardupilot:home>` 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.
New developers are always welcome! The best way to start is to:
- read this wiki to learn the basics of the software and :ref:`how the team works <how-the-team-works>`
- get involved with the other developers by posting on the Developer Team Forum, chat to us on ArduPilot Discord Chat or join the :ref:`weekly development call <ardupilot-discord-server>`. You can also find a large number of users and some developers in the ArduPilot facebook group. :ref:`All channels <common-contact-us>` are open to all. Lurk for a while to get a feel for it, then participate!
- find a specific bug you'd like to fix or a feature you'd like to add (check out the good first issues, recent issues from Randy or our :ref:`roadmap <roadmap>` for ideas).
- fix the bug in your own clone and :ref:`test <simulation-2>` that it's working
- submit the change to the main code base :ref:`via a pull request <submitting-patches-back-to-master>`.
The 'Ardu' part of the ArduPilot name comes from Arduino. The original :ref:`APM1 and APM2 <common-apm25-and-26-overview>` 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 :ref:`Autopilot Hardware Options page <common-autopilots>` including the Pixhawk.
A timeline history of ArduPilot can be found :ref:`here <history-of-ardupilot>`.
The :ref:`Autopilot Hardware Options <common-autopilots>` page provides an overview for all the supported controller boards, including :ref:`Pixhawk <common-pixhawk-overview>`, :ref:`The Cube <common-thecube-overview>`, :ref:`Pixracer <common-pixracer-overview>`, :ref:`NAVIO2 <common-navio2-overview>`, :ref:`Bebop2 <copter:parrot-bebop-autopilot>`, etc.
To get going quickly please consider purchasing one of the :ref:`ready-to-fly vehicles <common-rtf>` 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.
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
- :ref:`MAVProxy <mavproxy:home>` - 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)
- MAVLink* - the protocol for communication between the ground station, flight controller and some peripherals 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.
- Our annual developers conference is held in Feb/March in Canberra Australia (2018 announcement).
- The source code for ArduPilot is managed using git on https://github.com/ArduPilot/ardupilot
- Pre-compiled firmware for supported autopilot boards is available from https://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 :ref:`copter <copter:parameters>`, :ref:`plane <plane:parameters>` and :ref:`rover <rover:parameters>` is auto-generated from the source code
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 :ref:`License overview wiki page here. <license-gplv3>`
If you think of something that should be added to this site, please open an issue for the wiki.
.. toctree:: :titlesonly: License (GPLv3) <docs/license-gplv3> AP_Peripheral Devices <docs/ap-peripheral-landing-page> Downloading the code / Using Git <docs/where-to-get-the-code> Building the code <docs/building-the-code> Editors & IDEs <docs/code-editing-tools-and-ides> Learning the code <docs/learning-the-ardupilot-codebase> Simulation & Testing <docs/simulation-2> Debugging <docs/debugging> Contributing Code <docs/contributing> MAVLink Interface <docs/mavlink-commands> CAN and UAVCAN <docs/can-bus> Companion Computers <docs/companion-computers> ROS <docs/ros> Lua Scripts <docs/common-lua-scripts> Porting to a new Flight Controller <docs/porting> OEM Customization <docs/common-oem-customizations> Advanced Hardware Info <docs/pixhawk-advanced-hardware-info> MAVProxy Developer GCS <docs/mavproxy-developer-gcs> Resources for GCS Developers <docs/gcs-resources> RTF Vehicle Developer Information <docs/ready-to-fly-rtf-vehicle-developer-information> How The Team Works <docs/how-the-team-works> Events <docs/events> Training Centers <docs/common-training-centers> GSoC <docs/gsoc> 2021 Developers Conference<docs/2021-conference> Wiki Editing Guide <docs/common-wiki_editing_guide> USB IDs <docs/USB-IDs> User Alerts <docs/user-alerts-developer> Academic Works Involving ArduPilot <docs/acadamic-works> Appendix <docs/common-appendix> Full Table of Contents <docs/common-table-of-contents>