ArduPilot

Last updated
Developer(s) ArduPilot Development Team and Community
Initial release2009
Repository https://github.com/ArduPilot
Written inC++, Python
Operating system Cross-platform
License GPLv3
Website http://ardupilot.org

ArduPilot is an open source, uncrewed vehicle Autopilot Software Suite, [1] capable of controlling:

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, [2] research organisations [3] and amateurs.

Software and Hardware

Software suite

BlueROV2 flying with ArduSub BlueROV2 flying with ArduSub.jpg
BlueROV2 flying with ArduSub

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 (either Copter, Plane, Rover, AntennaTracker, or Sub), along with ground station controlling software including Mission Planner, APM Planner, QGroundControl, MavProxy, Tower and others.

ArduPilot source code is stored and managed on GitHub, with 755 total contributors. [4]

The software suite is automatically built nightly, with continuous integration and unit testing provided by Travis CI, and a build and compiling environment including the GNU cross-platform compiler and Waf. Pre-compiled binaries running on various hardware platforms are available for user download from ArduPilot's sub-websites.

An octocopter flying with Ardupilot Octocopter Flying with ArduPilot.jpg
An octocopter flying with Ardupilot

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.

Features

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.

ArduPilot use cases

Hobbyists and amateurs

Professional

History

Early years, 2007-2012

The ArduPilot project earliest roots date back to late 2007 [10] 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 [11] (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. [12] 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. [13] [14]

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. [13] 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. [15]

Late 2014 saw the formation of DroneCode, [16] 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. [17] 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. [18]

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.

Current, 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 (spi-inc.org) 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.

Community

ArduPilot is jointly managed by a group of volunteers located around the world, using the Internet (discourse based forum, gitter channel) to communicate, plan, develop and support it. The development team meets weekly in a chat meeting, open to all, using Mumble. In addition, hundreds of users contribute ideas, code and documentation to the project. ArduPilot is licensed under the GPL Version 3 and is free to download and use.

Customizability

The flexibility of ArduPilot makes it very popular in the DIY field but it has also gained popularity with professional users and companies. 3DRobotics' Solo quadcopter, for instance, uses ArduPilot, as have a large number of professional aerospace companies such as Boeing. [19] The flexibility allows for support of a wide variety of frame types and sizes, different sensors, camera gimbals and RC transmitters depending on the operator's preferences.

ArduPilot has been successfully integrated into many airplanes such as the Bixler 2.0. The customizability and ease of installation have allowed the ArduPilot platform to be integrated for a variety of missions. The Mission Planner (Windows) ground control station allows the user to easily configure, program, use, or simulate an ArduPilot board for purposes such as mapping, search and rescue, and surveying areas.

See also

Other projects for autonomous aircraft control:

Other projects for ground vehicles & cars driven:

Related Research Articles

<span class="mw-page-title-main">Andrew Tridgell</span> Australian computer programmer

Andrew "Tridge" Tridgell is an Australian computer programmer. He is the author of and a contributor to the Samba file server, and co-inventor of the rsync algorithm.

<span class="mw-page-title-main">Unmanned aerial vehicle</span> Aircraft without any human pilot on board

An unmanned aerial vehicle (UAV), commonly known as a drone, is an aircraft without any human pilot, crew, or passengers on board. UAVs were originally developed through the twentieth century for military missions too "dull, dirty or dangerous" for humans, and by the twenty-first, they had become essential assets to most militaries. As control technologies improved and costs fell, their use expanded to many non-military applications. These include aerial photography, area coverage, precision agriculture, forest fire monitoring, river monitoring, environmental monitoring, policing and surveillance, infrastructure inspections, smuggling, product deliveries, entertainment, and drone racing.

<span class="mw-page-title-main">UAV ground control station</span> Control system for drones

UAV ground control station (GCS) is a land- or sea-based control centre that provides the facilities for human control of Unmanned Aerial Vehicles. It may also refer to a system for controlling rockets within or above the atmosphere, but this is typically described as a Mission Control Centre.

Slugs is an open-source autopilot system oriented toward inexpensive autonomous aircraft. Low cost and wide availability enable hobbyist use in small remotely piloted aircraft. The project started in 2009 and is being further developed and used at Autonomous Systems Lab of University of California Santa Cruz. Several vendors produce Slugs autopilots and accessories.

<span class="mw-page-title-main">Arduino</span> Italian open-source hardware and software company

Arduino is an Italian open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardware products are licensed under a CC BY-SA license, while the software is licensed under the GNU Lesser General Public License (LGPL) or the GNU General Public License (GPL), permitting the manufacture of Arduino boards and software distribution by anyone. Arduino boards are available commercially from the official website or through authorized distributors.

<span class="mw-page-title-main">Open-source robotics</span> Open-source branch of robotics

Open-source robotics is a branch of robotics where robots are developed with open-source hardware and free and open-source software, publicly sharing blueprints, schematics, and source code. It is thus closely related to the open design movement, the maker movement and open science.

OBDuino is an open source trip computer design based on the Arduino platform. An OBDuino may be assembled and customised by an electronics hobbyist; it displays information such as instantaneous fuel economy, engine tuning parameters etc. on an LCD.

The Parrot AR.Drone is a discontinued remote-controlled flying quadcopter, built by the French company Parrot.

<span class="mw-page-title-main">LibrePilot</span>

LibrePilot is a Free software unmanned aerial vehicle project for model aircraft aimed at supporting both multi-rotor craft as well as fixed-wing aircraft. Initially founded by David Ankers, Angus Peart and Vassilis Varveropoulos in late 2009, under the name OpenPilot, it was conceived as both a learning tool and to address areas the developers perceived were lacking in other small UAV platforms. In July 2015 OpenPilot, was forked to create LibrePilot.

<span class="mw-page-title-main">Multirotor</span>

A multirotor or multicopter is a rotorcraft with more than two lift-generating rotors. An advantage of multirotor aircraft is the simpler rotor mechanics required for flight control. Unlike single- and double-rotor helicopters which use complex variable pitch rotors whose pitch varies as the blade rotates for flight stability and control, multirotors often use fixed-pitch blades; control of vehicle motion is achieved by varying the relative speed of each rotor to change the thrust and torque produced by each.

Paparazzi is an open-source autopilot system oriented toward inexpensive autonomous aircraft. Low cost and availability enable hobbyist use in small remotely piloted aircraft. The project began in 2003, and is being further developed and used at École nationale de l'aviation civile (ENAC), a French civil aeronautics academy. Several vendors are currently producing Paparazzi autopilots and accessories.

ArduPilot:Copter previously named APM:Copter or ArduCopter is the multicopter unmanned aerial vehicle version of the open-source ArduPilot autopilot platform.

NuttX is a free and open-source Real-Time Operating System (RTOS) with an emphasis on technical standards compliance and on having a small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the main governing standards in NuttX are from the Portable Operating System Interface (POSIX) and the American National Standards Institute (ANSI). Further standard application programming interfaces (APIs) from Unix and other common RTOSes are adopted for functions unavailable under these standards, or inappropriate for deeply embedded environments, such as the fork system call.

The PX4 autopilot is an open-source system designed for affordable autonomous aircraft, suitable for hobbyists operating small and remotely piloted aircraft. Originating in 2009, this project is continually evolving, with ongoing development and utilization at the Computer Vision and Geometry Lab of ETH Zurich. It also receives support from the Autonomous Systems Lab and the Automatic Control Laboratory. Currently, numerous vendors are manufacturing PX4 autopilots and associated accessories.

<span class="mw-page-title-main">Salvius (robot)</span> Open source humanoid robot

Salvius is an open source humanoid robot built in the United States in 2008, the first of its kind. Its name is derived from the word 'salvaged', being constructed with an emphasis on using recycled components and materials to reduce the costs of designing and construction. The robot is designed to be able to perform a wide range of tasks due to its humanoid body structure planning. The primary goal for the Salvius project is to create a robot that can function dynamically in a domestic environment.

<span class="mw-page-title-main">3D Robotics</span> American drone company

3DR is an American company located in Berkeley, California that produces enterprise drone software for construction, engineering and mining firms, as well as government agencies.

<span class="mw-page-title-main">Jani Hirvinen</span>

Jani Hirvinen is one of the early Finnish IT-technology pioneers. Hirvinen is also one of the first ones developing small private sector professional level UAVs. He is among the top developers of the ArduCopter platform that - together with the included autopilot - changed the way drones are being flown all over the world. He is also the co-founder of famous international unmanned institutions ArduPilot, DIYDrones and DroneCode.

An autonomous aircraft is an aircraft which flies under the control of automatic systems and needs no intervention from a human pilot. Most autonomous aircraft are unmanned aerial vehicle or drones. However, autonomous control systems are reaching a point where several air taxis and associated regulatory regimes are being developed.

References

  1. "Community: — ArduPilot documentation". ardupilot.org. Retrieved 2017-04-30.
  2. "Corporate Partners". ardupilot.org. Retrieved 2018-01-14.
  3. 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.
  4. "ArduPilot/ardupilot". GitHub. Retrieved 2017-05-01.
  5. "Please welcome ArduPilotMega 2.0!". diydrones.com. December 2011. Retrieved 2017-05-01.
  6. "Linux and the future of drones [LWN.net]". lwn.net. Retrieved 2017-05-05.
  7. Press (2013-08-29). "PX4 and 3D Robotics present Pixhawk: An Advanced, User-Friendly Autopilot - sUAS News - The Business of Drones". sUAS News - The Business of Drones. Retrieved 2017-05-01.
  8. "First successful flight powered by Zynq processor - Aerotenna". Aerotenna. 2015-10-08. Archived from the original on 2017-04-21. Retrieved 2017-05-05.
  9. "Flight Modes — Copter documentation". ardupilot.org. Retrieved 2017-05-01.
  10. "ArduCopter V1 Beta". forum.arduino.cc. 7 November 2007. Retrieved 2017-05-01.
  11. "ArduPilot, an open source autopilot, now available ($24.95!) - RC Groups". www.rcgroups.com. Retrieved 2017-05-08.
  12. "2009 AVC - AVC.SFE". avc.sparkfun.com. Retrieved 2017-05-03.
  13. 1 2 "ArduPilot". ArduPilot.org.
  14. "Drone Makers Get Help From the Open-Source, DIY Crowd - Businessweek". April 1, 2013. Archived from the original on 2013-04-01.
  15. "First flight of ArduPilot on Linux". diydrones.com. 20 August 2014. Retrieved 2017-05-03.
  16. "Introducing the Dronecode Foundation". diydrones.com. 13 October 2014. Retrieved 2017-05-03.
  17. "ArduPilot and DroneCode part ways". diydrones.com. 9 September 2016. Retrieved 2017-05-03.
  18. Mac, Ryan. "Behind The Crash Of 3D Robotics, North America's Most Promising Drone Company". Forbes. Retrieved 2017-05-03.
  19. Davies, Alex. "Boeing's Experimental Cargo Drone is a Heavy Lifter". Wired.