Introduction
ArduPilot is the most trusted open-source autopilot platform, powering everything from hobbyist quadcopters to commercial survey drones and research submarines. Its codebase has been in active development since 2010 and runs on a wide range of flight controllers.
What ArduPilot Does
- Controls multirotor, fixed-wing, helicopter, rover, boat, and submarine vehicles
- Executes autonomous missions with GPS waypoints, geofences, and return-to-launch
- Streams real-time telemetry to ground control stations over radio, Wi-Fi, or cellular links
- Supports companion computers for onboard image processing and obstacle avoidance
- Integrates with MAVLink protocol for interoperability with ground stations and payloads
Architecture Overview
ArduPilot runs a real-time control loop on STM32-based flight controllers (Pixhawk family and others). A hardware abstraction layer (AP_HAL) separates vehicle logic from board-specific drivers. The SITL (Software in the Loop) simulator lets developers test on a desktop without hardware. Vehicle types share common libraries for EKF navigation, PID control, and MAVLink communication.
Self-Hosting & Configuration
- Flash firmware via Mission Planner (Windows), QGroundControl (cross-platform), or
wafCLI build - SITL simulator runs entirely on Linux or macOS for testing without hardware
- Parameters are tuned through ground station software or MAVLink commands
- Supports Lua scripting for custom on-board logic and automation
- Log files (.bin) can be analyzed with MAVExplorer or the web-based UAV Log Viewer
Key Features
- Supports over 100 flight controller boards from various manufacturers
- Extended Kalman Filter (EKF3) fuses GPS, IMU, barometer, and compass data for accurate positioning
- Autonomous mission execution with conditional waypoints, do-commands, and spline paths
- Geofencing and failsafe actions (return to launch, land, continue mission)
- SITL and HITL simulation for safe development and regression testing
Comparison with Similar Tools
- PX4 — alternative open-source autopilot with Dronecode backing; ArduPilot supports more vehicle types and has a larger hobbyist community
- Betaflight — focused on FPV racing quads with low-latency control; ArduPilot targets autonomous missions and GPS navigation
- DJI SDK — proprietary; ArduPilot is fully open source and hardware-agnostic
- iNav — navigation firmware for fixed-wing and multirotor; ArduPilot offers richer mission planning and companion computer integration
- Mission Planner / QGroundControl — ground station software that pairs with ArduPilot firmware, not competitors
FAQ
Q: What hardware do I need to get started? A: A Pixhawk-compatible flight controller (starting around $50), a GPS module, and a radio telemetry link. For testing, SITL requires only a Linux or macOS machine.
Q: Can ArduPilot be used commercially? A: Yes. ArduPilot is licensed under GPLv3. Many commercial drone companies build products on ArduPilot firmware.
Q: How do I contribute code? A: Fork the repository, develop on a feature branch, test in SITL, and submit a pull request. The project has detailed developer documentation and an active Discord community.
Q: Does ArduPilot support obstacle avoidance? A: Yes, via companion computers running ROS or simple rangefinder-based avoidance. The BendyRuler and Dijkstra path planners are built in.