ArduPilot and PX4 are the two leading open-source autopilots for drones and other uncrewed vehicles. Both run on the same Pixhawk-style flight controllers, both fly multirotors, planes, and VTOL aircraft autonomously, and both talk to ground stations over the same MAVLink protocol. The biggest practical difference is the licence: ArduPilot is GPLv3, PX4 is BSD. This guide compares them point by point and shows which one fits your project.
The Short Answer
- Choose ArduPilot if you want the widest vehicle and feature support out of the box, a large user community, mature tools such as Mission Planner, and you are happy to share any changes you make to the flight code.
- Choose PX4 if you are building a commercial product and want to keep your changes private, if you work in research with ROS 2, or if you want a modular code base that is easy to extend.
- Choose neither for pure FPV racing or freestyle. Betaflight is built for that. See our guide to drone flight controllers for how the firmware families differ.
Where They Came From
The two projects grew up side by side and still share a lot.
ArduPilot began in 2007, when Jordi Munoz wrote Arduino code to stabilise an RC helicopter. He and Chris Anderson, who had started the DIY Drones community, released ArduPilot 1.0 in 2009. It grew into a community-run project supporting copters, planes, rovers, boats, and submarines.
PX4 grew out of the Pixhawk research project that Lorenz Meier started at ETH Zurich in 2008. His student team won the indoor autonomy category of the European Micro Air Vehicle competition in 2009 and released its work as open source. The project produced the MAVLink protocol (first released in early 2009), the QGroundControl ground station, the Pixhawk hardware standard, and the PX4 flight software, which reached its first stable release around 2013.
ArduPilot adopted MAVLink, and both projects joined the Dronecode foundation under the Linux Foundation when it formed in 2014. ArduPilot left Dronecode in 2016 and has run as an independent project since. PX4 is still governed by Dronecode, and in 2017 Meier co-founded Auterion, a company that builds products on PX4.

ArduPilot vs PX4 Comparison Table
| ArduPilot | PX4 | |
|---|---|---|
| Licence | GPLv3 (copyleft) | BSD 3-clause (permissive) |
| Must you publish your changes? | Yes, if you distribute firmware based on it | No |
| Governance | Independent community project | Dronecode, under the Linux Foundation |
| Multicopters, planes, VTOL | Yes | Yes |
| Traditional helicopters | Yes | Experimental |
| Rovers and boats | Yes | Rovers; support has matured in recent releases |
| Submarines | Yes (ArduSub) | Experimental |
| Blimps, airships | Yes (Blimp) | Experimental |
| Antenna tracker | Yes | No |
| Main ground stations | Mission Planner, QGroundControl, MAVProxy, and others | QGroundControl |
| Communication protocol | MAVLink | MAVLink |
| Onboard scripting | Lua scripts on boards with enough memory | No built-in scripting; extend with modules or ROS 2 |
| ROS 2 integration | Yes, via DDS in recent releases | Yes, via uXRCE-DDS, closely integrated |
| Typical hardware | Pixhawk family and many other boards, including many F4/F7/H7 boards | Pixhawk-standard boards and a smaller list of others |
Support for some vehicle types changes from release to release. Check the current documentation of each project for the exact status before you commit.
The Licence Difference, and Why It Matters
For many teams the licence decides the question before any feature does.
- ArduPilot uses GPLv3. You can use it commercially, but if you sell or ship a product running modified ArduPilot firmware, you must tell customers it is open source and give them the source code, or a link to it. GPLv3 also gives buyers of consumer products the right to replace the firmware with another version.
- PX4 uses the BSD 3-clause licence. You can modify it and ship it inside a product without publishing your changes, as long as you keep the copyright notice.
This is why many drone companies that build their own products choose PX4: their flight code improvements stay private. Companies and integrators that are happy to contribute their changes back, or who do not change the flight code at all, often choose ArduPilot for its features and community.
This is a summary, not legal advice. If the licence matters to your business, have the licence text reviewed before you ship.
Features and Vehicle Support
ArduPilot covers more vehicle types as fully supported options: multicopters, traditional and tandem helicopters, fixed-wing planes, QuadPlane VTOL, rovers, boats, submarines, blimps, and antenna trackers. It also has a very large set of built-in features, such as many flight modes, terrain following, precision landing, and Lua scripting that lets you add custom behaviour without recompiling the firmware.
PX4 fully supports multicopters, fixed-wing planes, and VTOL, with rovers now well supported. Helicopters, submarines, airships, and balloons are marked experimental. Its strength is architecture: PX4 is built from independent modules that exchange data over an internal publish-subscribe bus called uORB, which makes it easier to add or replace components in code.
Hardware
Both run on Pixhawk-standard flight controllers, so the same board can usually run either one. You can switch firmware later without changing the hardware.
ArduPilot also runs on a wide range of lower-cost boards, including many designed originally for FPV, so it often has the larger choice of controllers. PX4 concentrates on Pixhawk-standard boards and a shorter list of others. Before buying, confirm that the board is listed as supported by the firmware you plan to use.
Ground Control Software
Both speak MAVLink, so a ground station built for one usually works, at least partly, with the other.
- ArduPilot is most often used with Mission Planner (Windows), which has deep, ArduPilot-specific setup and tuning screens. It also works with QGroundControl, MAVProxy, and several other ground stations, including mobile apps.
- PX4 is used with QGroundControl, which runs on Windows, macOS, Linux, Android, and iOS and was developed alongside PX4.
Setup and Tuning
Both need careful setup: sensor calibration, radio and flight mode setup, failsafes, and PID tuning for the specific frame. Both offer automatic tuning for multicopters, but neither replaces understanding what the parameters do. ArduPilot exposes a very large number of parameters, which is powerful but can be daunting. PX4 has fewer, grouped by module.
A custom frame almost always needs its own tuning, whichever firmware you choose. Our page on flight control system setup and tuning explains what is involved.
Which Should You Choose?
| Your project | Better fit | Why |
|---|---|---|
| Mapping or survey drone, flown by your own team | ArduPilot | Mature mission tools, large community, many proven setups |
| Commercial product with proprietary flight code | PX4 | BSD licence; no need to publish changes |
| University research with ROS 2 and computer vision | PX4 (often) | Modular code, close ROS 2 integration, used widely in research |
| VTOL fixed-wing for long-range missions | Either | Both support VTOL; ArduPilot’s QuadPlane is widely flown |
| Boat, rover, or underwater vehicle | ArduPilot | Fully supported Rover and ArduSub |
| Helicopter | ArduPilot | Traditional helicopters fully supported |
| Heavy-lift or payload drone with custom logic | ArduPilot | Lua scripting adds behaviour without a custom build |
| FPV racing or freestyle | Neither | Use Betaflight |
For most custom builds, the frame, payload, and mission decide more than the firmware does. See how to build a custom drone for the full process, and payload integration for adding cameras and sensors.
ArduPilot vs PX4 FAQ
Is ArduPilot better than PX4?
Neither is better for every project. ArduPilot has wider vehicle support, more built-in features, and a larger hobby and integrator community. PX4 has a permissive licence and a modular design that suits commercial products and research.
Can I switch from PX4 to ArduPilot on the same flight controller?
Usually yes. Most Pixhawk-standard boards support both. You flash the new firmware, then redo calibration and tuning, because settings do not carry over.
Can I use ArduPilot in a commercial product?
Yes. The GPLv3 licence allows commercial use, but if you distribute modified firmware you must make the source code available to your customers.
Which ground station should I use?
Mission Planner is the usual choice for ArduPilot on Windows. QGroundControl works with both and runs on Windows, macOS, Linux, Android, and iOS.
Do ArduPilot and PX4 support ROS 2?
Yes. PX4 connects to ROS 2 through its uXRCE-DDS bridge, which exposes its internal messages directly. ArduPilot has added DDS-based ROS 2 support in recent releases.
Building a Drone and Not Sure Where to Start?
RunTechEngineer designs custom airframes, selects and sets up the flight controller and firmware, and tunes the system for the mission. Explore our custom drone services or contact us with what your drone has to do.

