explaingit

ardupilot/ardupilot

15,126C++Audience · developerComplexity · 5/5ActiveLicenseSetup · hard

TLDR

Open source autopilot firmware for drones, planes, rovers, boats and submarines that reads sensors and pilot input to control the vehicle.

Mindmap

mindmap
  root((ArduPilot))
    Inputs
      GPS
      IMU sensors
      Pilot commands
      Mission plans
    Outputs
      Motor control
      Servo control
      Telemetry
    Use Cases
      Quadcopter drones
      Fixed-wing planes
      Ground rovers
      Underwater subs
    Tech Stack
      C++
      ChibiOS
      Linux
      Pixhawk
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Flash ArduPilot onto a Pixhawk board to fly a custom-built quadcopter or fixed-wing plane.

USE CASE 2

Run ArduRover firmware on a small autonomous boat or ground vehicle for survey missions.

USE CASE 3

Build an underwater ROV using ArduSub firmware and a depth-rated thruster frame.

USE CASE 4

Use the SITL software-in-the-loop simulator to test mission scripts without real hardware.

Tech stack

C++ChibiOSLinuxPython

Getting it running

Difficulty · hard Time to first run · 1day+

Real-world setup needs flight controller hardware, ground station software and careful tuning, SITL is the quickest way to try it without a craft.

GPL-3 open source, free to use and modify, if you ship a product that includes ArduPilot you must release your source code under the same license.

In plain English

ArduPilot is open source autopilot software. It is the brain that runs inside an unmanned vehicle and decides how to fly, drive, or steer the craft based on input from sensors, GPS, and a ground operator. The project has been worked on since 2010 by a mix of professional engineers and community contributors, and it has grown to cover almost every kind of remote vehicle you can think of: conventional airplanes, quadplanes, multi-rotor drones, helicopters, ground rovers, boats, balance bots, and submarines. The repository is actually a collection of related programs that share a lot of code. ArduCopter is for multi-rotor and helicopter craft. ArduPlane is for fixed-wing aircraft, including hybrids that take off vertically and then fly like a plane. Rover is for ground vehicles and boats. ArduSub is for underwater vehicles. Antenna Tracker is a smaller program that moves a directional ground antenna to keep it pointed at a moving aircraft. Each of these has its own wiki page with user-facing documentation. The README is mostly a directory of links rather than a hands-on getting started guide. It points new users to the support forum at discuss.ardupilot.org and the main project site at ardupilot.org. Developers are sent to a separate developer wiki and a Discord server for chat. Build status badges across the top show that the code is continuously tested across the supported vehicles, on the ChibiOS real-time operating system, on Linux single-board computers, on macOS, and through Cygwin on Windows. There is also a Coverity scan badge and an OpenSSF Best Practices badge. Getting involved is described in general terms: contributors are pointed at a written contributor guide, there is an active beta tester group that helps validate releases, bugs and feature requests go to the GitHub issues list, and people are encouraged to help in the forums and improve the wiki. The project is licensed under GPL version 3. The README also lists named maintainers and what each person is responsible for. Andrew Tridgell covers Plane, AntennaTracker, and several Pixhawk boards. Randy Mackay covers Copter, Rover, and AntennaTracker. Other maintainers own Sub, TradHeli, individual boards like the Cube and Bebop, and subsystems such as batteries, GPS, scripting, CAN, compass, build system, and Copter attitude control.

Copy-paste prompts

Prompt 1
Set up the ArduPilot SITL simulator on Ubuntu and fly a simple ArduCopter mission in MAVProxy.
Prompt 2
Write a Lua script that runs on ArduPilot to trigger a servo when the drone reaches a given waypoint.
Prompt 3
Show me the minimum hardware list (board, GPS, ESCs, radio) to build a working ArduCopter quadcopter.
Prompt 4
Explain the difference between ArduPilot and PX4 for someone choosing firmware for a new drone build.
Prompt 5
Use pymavlink to send a takeoff and goto command to an ArduCopter running on SITL on localhost.
Open on GitHub → Explain another repo

← ardupilot on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.