ArduPilot
ArduPilot is a mature open-source autopilot that runs on a wide range of flight controllers and supports an unusually broad set of vehicles: multicopters and helicopters (Copter), fixed-wing and VTOL aircraft (Plane), ground vehicles and boats (Rover), underwater vehicles (Sub), and more. It is used by hobbyists, researchers, and companies in agriculture, surveying, inspection, and defense, and is licensed under GPLv3.
ArduPilot's power comes from configurability: thousands of parameters control sensors, tuning, flight modes, failsafes, and peripherals. That same flexibility makes disciplined configuration management essential — knowing exactly which parameters each vehicle flies with, testing changes in SITL, and reviewing logs after every flight.
TL;DR
- ArduPilot runs on many flight controllers (ChibiOS on STM32-based boards, plus Linux boards) with vehicle-specific firmware: Copter, Plane, Rover, Sub.
- Behavior is set by parameters; manage them as versioned parameter files per airframe.
- EKF3 fuses IMU, GPS, compass, barometer, and optional rangefinder, optical flow, or vision; pre-arm checks block arming on bad estimates.
- Configure failsafes (RC, battery, GCS, EKF) and geofences before any autonomous flight.
- Use Mission Planner, QGroundControl, or MAVProxy for setup; script with pymavlink or MAVSDK; extend onboard with Lua scripts.
- Test in SITL, review DataFlash logs, tune with autotune, and follow preflight checklists.
Quick Example
Safety-relevant parameters in a versioned Copter parameter file (4S battery):
Scripting a takeoff against SITL with pymavlink:
Core Concepts
Firmware and Hardware
ArduPilot's hardware abstraction layer runs vehicle code on many boards — Pixhawk-family and other STM32 flight controllers under ChibiOS, and Linux-based controllers. Each board has a hardware definition describing sensors and pins. Peripherals connect over serial, I2C, SPI, and DroneCAN, which supports GPS units, compasses, airspeed sensors, ESCs, and smart batteries on a robust CAN bus. See Embedded C.
Parameters
Flight Modes
Copter modes include Stabilize, AltHold, Loiter (position hold), Auto (missions), Guided (external commands), RTL, SmartRTL, and Land; Plane adds Manual, FBWA, Cruise, and VTOL-specific modes. Choose modes the pilot can fall back to under stress, and assign them to the RC transmitter accordingly.
Estimation and Failsafes
EKF3 supports multiple sensor sources and lanes (parallel filters on different IMUs) with automatic switching. Pre-arm checks verify calibration, estimator health, GPS quality, and fence configuration. Failsafes cover RC loss, GCS loss, low and critical battery, EKF failure, and fence breaches — configure and test each in SITL and in controlled flights. See Drone Autopilot Systems.
Ground Stations, Scripting, and Extensions
- Mission Planner (Windows) and QGroundControl (cross-platform) handle setup, calibration, missions, and log review; MAVProxy is a command-line GCS popular with developers.
- pymavlink and MAVSDK script vehicles over MAVLink; companion computers send Guided-mode commands.
- Lua scripting runs sandboxed scripts on the flight controller for custom behaviors, checks, and peripheral drivers.
SITL, Logs, and Tuning
SITL builds the real vehicle code for a PC with a physics backend, usable with MAVProxy, Gazebo, or external simulators, and in CI. DataFlash logs (.bin) record sensors, estimator state, controller outputs, and events; review them with UAV Log Viewer, Mission Planner, or MAVExplorer. Autotune identifies rate controller gains on multicopters in flight, after a stable manual baseline. See Robot Simulation and Validation and Feedback Control Systems.
Best Practices
Version Parameters Like Code
Keep parameter files in version control with firmware versions and airframe notes.
Test Every Failsafe
Trigger RC loss, low battery, GCS loss, and fence breaches in SITL and then in controlled field tests.
Review Logs After Every Flight
Check vibration, EKF innovations, battery behavior, and tracking errors routinely, not only after incidents.
Follow a Preflight Checklist
Verify calibrations, arming checks, mode switches, failsafe settings, and the flight area every time.
Common Mistakes
Unmanaged Parameter Drift
Untested Failsafes
First Flight in Auto
FAQ
What vehicles does ArduPilot support?
Multicopters, traditional helicopters, fixed-wing aircraft and VTOLs, ground rovers, boats, submarines, and other vehicle types, each with its own firmware build.
How do I simulate ArduPilot?
Use SITL: build the vehicle code for your computer with sim_vehicle.py, connect a ground station or MAVProxy, and optionally connect simulators such as Gazebo for richer environments.
What is the difference between ArduPilot and PX4?
Both are open-source autopilots using MAVLink. ArduPilot (GPLv3) has very broad vehicle support and extensive parameters; PX4 (BSD) has a modular architecture favored by many commercial integrators and ROS 2 users.
How do I tune an ArduPilot multicopter?
Start with appropriate defaults for the frame size, verify stable manual flight and low vibration, then run autotune for rate controller gains and review logs.
What are DataFlash logs?
Onboard binary logs recording sensors, estimator state, control outputs, and events, used for tuning, debugging, and incident investigation.
Related Topics
- Drone Autopilot Systems — How autopilots work
- Robotics & Autonomous Systems — The robotics software stack
- Robot Simulation and Validation — SITL and validation ladders
- Feedback Control Systems — Rate and attitude control tuning
- Python — Scripting with pymavlink
- Embedded C — Firmware fundamentals