ArduPilot

Last updated
ArduPilot
Developer(s) ArduPilot Development Team and Community
Initial release2009;16 years ago (2009)
Repository github.com/ArduPilot
Written in C++, Python
Operating system Cross-platform
Type Autopilot
License GPLv3
Website ardupilot.org

ArduPilot is an autopilot software program that can control multirotor drones, fixed-wing and VTOL aircraft, RC helicopters, ROVs, ground rovers, boats, submarines, uncrewed surface vessels (USVs), AntennaTrackers and blimps. It is published as open source software under the GNU GPL version 3.

Contents

ArduPilot was originally developed by hobbyists to control model aircraft and rovers and has evolved into a full-featured and reliable autopilot used by industry, [1] research organisations, [2] amateurs, and militaries. [3] [nb 1] In June 2025 ArduPilot was used successfully by the Ukrainian armed forces during the Russo-Ukrainian War to make aerial drone attacks on Russian air bases.

BlueROV2 diving with ArduSub BlueROV2 flying with ArduSub.jpg
BlueROV2 diving with ArduSub
An octocopter flying with Ardupilot Octocopter Flying with ArduPilot.jpg
An octocopter flying with Ardupilot

Characteristics

The ArduPilot software suite consists of navigation software (typically referred to as firmware when it is compiled to binary form for microcontroller hardware targets) running on the vehicle (Copter, Plane, Rover, AntennaTracker, or Sub), along with ground station controlling software including Mission Planner, APM Planner, QGroundControl, MavProxy, Tower and others.

Common to all vehicles

ArduPilot provides a large set of features, including the following common for all vehicles:

Copter-specific

Plane-specific

Rover-specific

Submarine-specific

ArduPilot is fully documented within its wiki, totaling the equivalent of about 700 printed pages and divided in six top sections: The Copter, Plane, Rover, and Submarine vehicle related subsections are aimed at users. A "developer" subsection for advanced uses is aimed primarily at software and hardware engineers, and a "common" section regrouping information common to all vehicle types is shared within the first four sections.

Supported hardware

Copter, Plane, Rover, AntennaTracker, or Sub software runs on a wide variety of embedded hardware (including full blown Linux computers), typically consisting of one or more microcontroller or microprocessor connected to peripheral sensors used for navigation. These sensors include MEMS gyroscopes and accelerometers at a minimum, necessary for multirotor flight and plane stabilization. Sensors usually include, in addition, one or more compass, altimeter (barometric) and GPS, along with optional additional sensors such as optical flow sensors, airspeed indicators, laser or sonar altimeters or rangefinders, monocular, stereoscopic or RGB-D cameras. Sensors may be on the same electronic board, or external.

Ground Station software, used for programming or monitoring vehicle operation, is available for Windows, Linux, macOS, iOS, and Android.

ArduPilot runs on a wide variety of hardware platforms, including the following, listed in alphabetical order:

In addition to the above base navigation platforms, ArduPilot supports integration and communication with on-vehicle companion, or auxiliary computers for advanced navigation requiring more powerful processing. These include Nvidia TX1 and TX2 (Nvidia Jetson architecture), Intel Edison and Intel Joule, HardKernel ODROID, and Raspberry Pi computers.

History

Early years, 2007–2012

The ArduPilot project earliest roots date back to late 2007 [12] when Jordi Munoz, who later co-founded 3DRobotics with Chris Anderson, wrote an Arduino program (which he called "ArduCopter") to stabilize an RC Helicopter. In 2009 Munoz and Anderson released Ardupilot 1.0 [13] (flight controller software) along with a hardware board it could run on. That same year Munoz, who had built a traditional RC helicopter UAV able to fly autonomously, won the first Sparkfun AVC competition. [14] The project grew further thanks to many members of the DIY Drones community, including Chris Anderson who championed the project and had founded the forum based community earlier in 2007. [15] [16]

The first ArduPilot version supported only fixed-wing aircraft and was based on a thermopile sensor, which relies on determining the location of the horizon relative to the aircraft by measuring the difference in temperature between the sky and the ground. [15] Later, the system was improved to replace thermopiles with an Inertial Measurement Unit (IMU) using a combination of accelerometers, gyroscopes and magnetometers. Vehicle support was later expanded to other vehicle types which led to the Copter, Plane, Rover, and Submarine subprojects.

The years 2011 and 2012 witnessed an explosive growth in the autopilot functionality and codebase size, thanks in large part to new participation from Andrew "Tridge" Tridgell and HAL author Pat Hickey. Tridge's contributions included automatic testing and simulation capabilities for Ardupilot, along with PyMavlink and Mavproxy. Hickey was instrumental in bringing the AP_ HAL library to the code base: HAL (Hardware Abstraction Layer) greatly simplified and modularized the code base by introducing and confining low-level hardware implementation specifics to a separate hardware library. The year 2012 also saw Randy Mackay taking the role of lead maintainer of Copter, after a request from former maintainer Jason Short, and Tridge taking over the role of lead Plane maintainer, after Doug Weibel who went on to earn a Ph.D. in Aerospace Engineering. Both Randy and Tridge are current lead maintainers to date.

The free software approach to ArduPilot code development is similar to that of the Linux Operating system and the GNU Project, and the PX4/Pixhawk and Paparazzi Project, where low cost and availability enabled hobbyists to build autonomous small remotely piloted aircraft, such as micro air vehicles and miniature UAVs. The drone industry, similarly, progressively leveraged ArduPilot code to build professional, high-end autonomous vehicles.

Maturity, 2013–2016

While early versions of ArduPilot used the APM flight controller, an AVR CPU running the Arduino open-source programming language (which explains the "Ardu" part of the project name), later years witnessed a significant re-write of the code base in C++ with many supporting utilities written in Python.

Between 2013 and 2014 ArduPilot evolved to run on a range of hardware platforms and operating system beyond the original Arduino Atmel based microcontroller architecture, first with the commercial introduction of the Pixhawk hardware flight controller, a collaborative effort between PX4, 3DRobotics and the ArduPilot development team, and later to the Parrot's Bebop2 and the Linux-based flight controllers like Raspberry Pi based NAVIO2 and BeagleBone based ErleBrain. A key event within this time period included the first flight of a plane under Linux in mid 2014. [17]

Late 2014 saw the formation of DroneCode, [18] formed to bring together the leading open source UAV software projects, and most notably to solidify the relationship and collaboration of the ArduPilot and the PX4 projects. ArduPilot's involvement with DroneCode ended in September 2016. [19] 2015 was also a banner year for 3DRobotics, a heavy sponsor of ArduPilot development, with its introduction of the Solo quadcopter, an off the shelf quadcopter running ArduPilot. Solo's commercial success, however, was not to be. [20]

Fall of 2015 again saw a key event in the history of the autopilot, with a swarm of 50 planes running ArduPilot simultaneously flown at the Advanced Robotic Systems Engineering Laboratory (ARSENL) team at the Naval Postgraduate School.

Within this time period, ArduPilot's code base was significantly refactored, to the point where it ceased to bear any similarity to its early Arduino years.

Since 2018

ArduPilot code evolution continues with support for integrating and communicating with powerful companion computers for autonomous navigation, plane support for additional VTOL architectures, integration with ROS, support for gliders, and tighter integration for submarines. The project evolves under the umbrella of ArduPilot.org, a project within the Software in the Public Interest not-for-profit organisation. ArduPilot is sponsored in part by a growing list of corporate partners.

UAV Outback Challenge

In 2012, the Canberra UAV Team successfully took first place in the prestigious UAV Outback Challenge. The CanberraUAV Team included ArduPlane Developers and the airplane flown was controlled by an APM 2 Autopilot. In 2014 the CanberraUAV Team and ArduPilot took first place again, by successfully delivering a bottle to the "lost" hiker. In 2016 ArduPilot placed first in the technically more challenging competition, ahead of strong competition from international teams.

Russo-Ukrainian war

In June 2025 ArduPilot was used successfully by the Ukrainian armed forces during the Russo-Ukrainian War to make attacks with 117 aerial drones on five Russian air bases, in what was named Operation Spiderweb. [21] Ukrainian president Zelenskyy said that each drone had its own pilot to launch and command it remotely; [3] this was done through the Russian mobile telephone network using ArduPilot. [22]

See also

Other projects for autonomous aircraft control:

Other projects for ground vehicles & cars driven:

Notes

  1. The ArduPilot Developer Code of Conduct explicitly forbids contributing work that could facilitate the weaponization of ArduPilot. [4] However, this only applies to members of the ArduPilot Development Team, as the official FAQ of GNU GPL version 3, under which ArduPilot is licensed, explicitly states that military use of licensed code cannot be prohibited. [5]

References

  1. "Corporate Partners". ardupilot.org. Retrieved 2018-01-14.
  2. Eure, Kenneth W. (December 2013). "An Application of UAV Attitude Estimation Using a Low-Cost Inertial Navigation System" (PDF). NTRS.nasa.gov. NASA/TM–2013-218144.
  3. 1 2 Gozzi, Laura (2 June 2025). "BBC Verify: How Ukraine carried out daring 'Spider Web' attack on Russian bombers". BBC News.
  4. "ArduPilot Developer Code of Conduct". ardupilot.org. January 2018. Retrieved 2025-07-17.
  5. "Frequently Asked Questions about the GNU Licenses". gnu.org. October 2024. Retrieved 2025-07-17.
  6. "SITL Simulator (Software in the Loop)". ArduPilot. Retrieved 3 June 2025.
  7. "Flight Modes — Copter documentation". ardupilot.org. Retrieved 2017-05-01.
  8. "Please welcome ArduPilotMega 2.0!". diydrones.com. December 2011. Retrieved 2017-05-01.
  9. "Linux and the future of drones [LWN.net]". lwn.net. Retrieved 2017-05-05.
  10. "PX4 and 3D Robotics present Pixhawk: An Advanced, User-Friendly Autopilot" (Press release). sUAS News. 29 August 2013.
  11. "First successful flight powered by Zynq processor - Aerotenna". Aerotenna. 2015-10-08. Archived from the original on 2017-04-21. Retrieved 2017-05-05.
  12. "ArduCopter V1 Beta". forum.arduino.cc. 7 November 2007. Retrieved 2017-05-01.
  13. "ArduPilot, an open source autopilot, now available ($24.95!) - RC Groups". www.rcgroups.com. Retrieved 2017-05-08.
  14. "2009 AVC - AVC.SFE". avc.sparkfun.com. Retrieved 2017-05-03.
  15. 1 2 "ArduPilot". ArduPilot.org.
  16. "Drone Makers Get Help From the Open-Source, DIY Crowd - Businessweek". April 1, 2013. Archived from the original on 2013-04-01.
  17. "First flight of ArduPilot on Linux". diydrones.com. 20 August 2014. Retrieved 2017-05-03.
  18. "Introducing the Dronecode Foundation". diydrones.com. 13 October 2014. Retrieved 2017-05-03.
  19. "ArduPilot and DroneCode part ways". diydrones.com. 9 September 2016. Retrieved 2017-05-03.
  20. Mac, Ryan. "Behind The Crash Of 3D Robotics, North America's Most Promising Drone Company". Forbes. Retrieved 2017-05-03.
  21. "'Wanted to make flying robots, not...': Developer upset as Ukraine uses his open-source code to make deadly drones". Firstpost. 2025-06-05. Retrieved 2025-08-05.
  22. Hiltscher, Johannes (3 June 2025). "Die Software hinter Operation Spinnennetz" [The software behind Operation Spiderweb]. Golem.de (in German).