PX4 is an open source flight controller hardware and software project that came out of ETH Zurich. PX4 Native Stack is the firmware and PX4v1, PX4v2(a.k.a. Pixhawk) etc. are the hardware. Both software AND hardware are open source. Usually, Pixhawk and clones come pre-installed with PX4 Native Stack.
Usually, most hardware that can run PX4 Native Stack can run ArduPilot and vise versa.
The license is BSD.
Pixhawk is definitely the most famous, but since the hardware is also open source, there are many clones with or without various improvements. However, be aware that there are low-quality cheap faux copies of both 3DR Pixhawks as well as clones.
There was a short-lived board called PX4 (PX4 FMU-v1) before Pixhawk v1 (PX4 FMUv2) came out.
- PX4FMUv1 + PX4IO
- Pixhawk (PX4FMUv2)
- Pixracer (PX4FMUv4)
- Pixhawk 2.1 - Community Version
- PX4FLOW (OpticalFlow Sensor)
NOTE: PX4 FMUv1, FMUv2 etc. are software designation, but used here to distinguish different generations of pixhawk hardware for convenience. Actually, FMUv2 firmware can be run on both FMUv2 (Pixhawk v1) as well as FMUv3 (3DR Pixhawk 2), thus there isn't a dedicated FMUv3 firmware. Pixracer needs a different firmware version (PX4 FMUv4) since the pinouts has been changed. Also, there are other differences between v2 and v4 firmware such as the size of usable memory.
PX4 Native Stack is comprised of a number of applications running on NuttX realtime OS made for 32bit ARM processors on Pixhawk and clones. The design and architecture is close to UNIX.
The firmware can control many frame types including multi-rotors, VTOL's without re-compile.
Usually, the firmware that comes pre-installed on Pixhawk and many clones is the PX4 Native Stack, but some products have ArduPilot pre-installed.
It is licenced under 3-clause BSD, as opposed to ArduPilot's GPLv3.
Since it's BSD, it's easier for corporations to incorporate into their products. Also since ArduPilot parted away from the DroneCode foundation, PX4 Native Stack is the only firmware available under DroneCode.
Since it came out of academia, it's better suited for use with motion capture cameras and simulations.
As a side note, since ArduPilot was initially implemented on Pixhawk as an application on top of PX4 Native Stack, usually if one firmware supports a particular hardware, then the other can also be used. However, there are a few exceptions, especially on Linux boards.
PX4 Native Stack is usually used with QGroundControl GCS software.
Other PX4 projects
- RaspberryPi is now officially supported
- SnapDragon Flight
- Intel Up-board + Realsense
- ETH Computer Vision and Geometry Lab
- PX4/Pixhawk Project/PX4 Native Stack lead developper
- Also the author of MAVLink
Prof. Marc Pollefeys
- Institute for Visual Computing, Computer Vision and Geometry Group
- Paul Risenborough is also the author of the EKF for ArduPilot
Source Code Repository
- Introduction | PX4 Development Guide
- Mac OS | PX4 Development Guide
- System Boot | PX4 Development Guide
- Circuit Breakers (in Software) - PX4 Autopilot Project
- Add a uORB topic - Pixhawk Flight Controller Hardware Project
- Create Custom Messages - Pixhawk Flight Controller Hardware Project
- uORB Messaging | PX4 Development Guide
- uORB - PX4 Autopilot Project
- pwm (Application) - PX4 Autopilot Project
- position_estimator_inav - Pixhawk Flight Controller Hardware Project
- Fixed Wing Vertical Takeoff and Landing Aircraft (VTOL) - Pixhawk Flight Controller Hardware Project (Tilt Rotor)
- Rangefinder - Pixhawk Flight Controller Hardware Project
Command to start SF0 LIDAR
- Debugging Overview - PX4 Autopilot Project
- NuttShell (NSH) via Serial Connection - PX4 Autopilot Project