ArduPilot

From Wikipedia, the free encyclopedia
  (Redirected from Ardupilot)
Jump to: navigation, search
ArduPilot
ArduPilot Logo, Medium Size.png
Developer(s) ArduPilot Development Team and Community
Initial release 2009
Repository https://github.com/ArduPilot
Written in C++, Python
Operating system Cross-platform
License GPLv3
Website http://ardupilot.org

ArduPilot is a professional grade open source, unmanned vehicle Autopilot Software Suite,[1] capable of controlling autonomous:

ArduPilot is one of the most advanced, full-featured and reliable autopilot software available, used by a wide variety of both professionals and amateurs, and has been developed by a team of diverse professional engineers and computer scientists.

It is the only autopilot platform capable of controlling all the types of vehicles listed above, and is an award-winning platform that won the 2012, 2014, and 2016[2] UAV Outback Challenge as well as the 2016 IMAV[3] competition.[4]

In addition to hobbyists, ArduPilot is used by a large number of leading drone industry companies around the world. The project is a collaborative software development effort, creating a commercial-grade, feature-rich and freely available source code implementation. It 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 an open chat meeting open to all, using Mumble. In addition, hundreds of users contribute ideas, code, and documentation to the project. ArduPilot is licensed GPL Version 3, and is free to download and use.

Software and Hardware[edit]

Software suite[edit]

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, or Sub), along with ground station controlling software including Mission Planner, APM Planner, QGroundControl, MavProxy, Tower and others.[5]

ArduPilot source code is stored and managed on GitHub, and as of early 2017 has been forked by more than 5,000 GitHub users. The souce tree includes approximately 700,000 lines of primarily C++ code, originating from 25,000 patches with 300+ contributors, and has been forked over 5,000 times.[6]

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
An octocopter flying with Ardupilot

Supported hardware[edit]

Copter, Plane, Rover 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 programing or monitoring vehicle operation, is available for Windows, Linux, MacOSX, IOS and Android.

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

  • Intel Aero (Linux Base)
  • APM 2.X (Atmel Mega Microcontroller Arduino base), designed by Jordi Munoz in 2010.[7] APM, for ArduPilotMega, only runs on older versions of ArduPilot).
  • BeagleBone Blue and PXF Mini (BeagleBone Black cape).
  • The Cube, formerly called Pixhawk 2, (ARM Cortex microcontroller base), designed by ProfiCNC in 2015.
  • Erle-Brain, (Linux base) designed by Erle Robotics.
  • Intel Minnowboard (Linux Base).[8]
  • Navio2, (Raspberry PI 3 Linux base), and Navio+, designed by EMLID.
  • Parrot Bebop, and Parrot C.H.U.C.K., designed by Parrot, S.A.
  • Pixhawk, (ARM Cortex microcontroller base), originally designed by Lorenz Meier and ETH Zurich, improved and launched in 2013 by PX4, 3DRobotics, and the ArduPilot development team.[9]
  • PixRacer, (ARM Cortex microcontroller base) designed by AUAV.
  • Qualcomm SnapDragon (Linux base).
  • Virtual Robotics VRBrain (ARM Cortex microcontroller base).
  • Xilinx SoC Zynq processor (Linux base, ARM and FPGA processor).[10]

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[edit]

Common to all vehicles[edit]

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

  • Fully autonomous, semi-autonomous and fully manual flight modes, programmable missions with 3D waypoints, optional geofencing.
  • Stabilization options to negate the need for a third party co-pilot.
  • Simulation with a variety of simulators, including ArduPilot SITL.
  • Large number of navigation sensors supported, including several models of RTK GPSs, traditional L1 GPSs, barometers, magnetometers, laser and sonar rangefinders, optical flow, ADS-B transponder, infrared, airspeed, sensors.
  • Sensor communication via SPI, I²C, CAN Bus, Serial communication, SMBus.
  • Failsafes for loss of radio contact, GPS and breaching a predefined boundary, minimum battery power level.
  • Support for navigation in GPS denied environments, with vision based positioning, optical flow, SLAM, Ultra Wide Band positioning.
  • Support for actuators such as parachutes and magnetic grippers.
  • Support for brushless and brushed motors.
  • Photographic and video gimbal support and integration.
  • Integration and communication with powerful secondary, or "companion", computers
  • Rich documentation through ArduPilot wiki.
  • Support and discussion through ArduPilot discourse forum, Gitter chat channels, Github, Facebook.

Copter specific[edit]

  • Flight modes: Stabilize, Alt Hold, Loiter, RTL (Return-to-Launch), Auto, Acro, AutoTune, Brake, Circle, Drift, Guided, (and Guided_NoGPS), Land, PosHold, Sport, Throw, Follow Me, Simple, Super Simple, Avoid_ADSB.[11]
  • Auto-tuning
  • Wide variety of frame types supported, including tricopters, quadcopters, hexacopter, flat and co-axial octocopters, and custom motor configurations
  • Support for traditional electric and gas helicopters, mono copters, trandem helicopters.

Plane specific[edit]

  • Fly By Wire modes, loiter, auto, acrobatic modes.
  • Take-off options: Hand launch, bungee, catapult for take-off.
  • Landing options: Adjustable glide slope, helical, reverse thrust, net.
  • Auto-tuning, simulation with JRBSIM, X-Plane and RealFlight simulators.
  • Support for a large variety of VTOL architectures: Quadplanes, Tilt wings, tilt rotors, tail sitters, ornithopters.
  • Optimization of 3 or 4 channel airplanes.

Rover specific[edit]

  • Manual, Learning, Auto, Steering, Hold and Guided operational modes.
  • Support for wheeled and track architectures.

Submarine specific[edit]

  • Depth hold: Using pressure-based depth sensors, submarines can maintain depth within a few centimeters.
  • Light Control: Control of subsea lighting through the controller.

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[edit]

Hobbyists and amateurs[edit]

Professional[edit]

History[edit]

Early years, 2007-2012[edit]

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.[17] 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 well known computer scientist and programmer 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[edit]

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.[18]

Late 2014 saw the formation of DroneCode,[19] 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.[20] 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.[21]

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. The code was also expanded by several orders of magnitude.

Current, 2017-[edit]

Today ArduPilot code evolution continues and is stronger than ever, with significant ongoing achievements including 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 continues to be the result of an immense amount of effort from software and hardware engineers, commercial drone companies, academic researchers, beta testers, web developers, documenters and many others and evolves under the umbrella of ArduPilot.org, a non profit organization sponsored in part by a growing list of over 20 corporate partners.

UAV Outback Challenge[edit]

In 2012, the Canberra UAV Team successfully took first place in the prestigious UAV Outback Challenge. This challenge began in 2007 to showcase and promote UAV's significance to Australia in search and rescue missions and promoted growth in aerospace, government, and civilian applications. The CanberraUAV Team consisted of ArduPlane Developers and the airplane flown was controlled by an APM 2 Autopilot. The intended mission that was developed for the UAV Outback Challenge was to locate and deliver medical supplies to a "lost" hiker. The CanberraUAV team and all subsequent teams failed to meet the requirement to drop a bottle of water on an intended target. However, the CanberraUAV team were placed first based on a points system.

In 2014 the Canberra UAV 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.

Customizability[edit]

The customizability of ArduPilot makes it very popular in the DIY field but it has also gained major popularity with professional users and companies. 3DRobotics' Solo quad copter, for instance, uses ArduPilot, as have a large number of professional drone companies including PrecisionHawk and Kespry. The customizability 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 has 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.

References[edit]

  1. ^ "Community: — ArduPilot documentation". ardupilot.org. Retrieved 2017-04-30. 
  2. ^ "UAV Challenge on BBC >Click". UAV Challenge. 2016-11-21. Retrieved 2017-05-01. 
  3. ^ "IMAV2016". www.imavs.org. Retrieved 2017-04-30. 
  4. ^ "IMAV 2016 Debrief". AKAMAV Blog. 2017-01-06. Retrieved 2017-04-30. 
  5. ^ "Choosing a Ground Station — Rover documentation". ardupilot.org. Retrieved 2017-04-30. 
  6. ^ "ArduPilot/ardupilot". GitHub. Retrieved 2017-05-01. 
  7. ^ "Please welcome ArduPilotMega 2.0!". diydrones.com. Retrieved 2017-05-01. 
  8. ^ "Linux and the future of drones [LWN.net]". lwn.net. Retrieved 2017-05-05. 
  9. ^ 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. 
  10. ^ "First successful flight powered by Zynq processor - Aerotenna". Aerotenna. 2015-10-08. Retrieved 2017-05-05. 
  11. ^ "Flight Modes — Copter documentation". ardupilot.org. Retrieved 2017-05-01. 
  12. ^ "ArduCopter V1 Beta". forum.arduino.cc. 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. ^ Developer | APM open source autopilot
  16. ^ Drones Makers Get Help From the Open Source Crowd
  17. ^ Developer | APM open source autopilot
  18. ^ "First flight of ArduPilot on Linux". diydrones.com. Retrieved 2017-05-03. 
  19. ^ "Introducing the Dronecode Foundation". diydrones.com. Retrieved 2017-05-03. 
  20. ^ "ArduPilot and DroneCode part ways". diydrones.com. Retrieved 2017-05-03. 
  21. ^ Mac, Ryan. "Behind The Crash Of 3D Robotics, North America's Most Promising Drone Company". Forbes. Retrieved 2017-05-03. 

External links[edit]