Choosing a Pixhawk Flight Controller
When you are trying to select an open-source flight controller / autopilots / robot controller for your vehicle, it feels like there are just too many options out there. While it's generally a good to have options, the information you need to make an informed decision is usually scattered across the internet and since the technology and industry is evolving very very rapidly, what you find tends to be often outdated. Case in point, something probably changed while we were writing this article and we are already outdated even before we publish. Needless to say, it could be a confusing and daunting task for most of us. In this article, we'll focus on Pixhawk Family of flight controllers and give you the lowdown on the current situation and help you pick the right one for you.
Pixhawk project was started at ETH Zurich as both opensource hardware and software project to create a flight controller. It's also an evolution of APM 2.0 hardware in a way. It started out with a 2 board design consisting of PX4FMUv1 and PX4IOv1 which quickly were merged to create PX4FMUv2 that we call Pixhawk 1. 3D Robotics was chosen as the prominent manufacturer, but since it is an opensource hardware, meaning schematics and PCB design files are available for anyone to modify, improve, and manufacture, there are many "clones" and descendants out there now.
The official website for the hardware is: http://pixhawk.org
PX4 Native Stack
The official website for the PX4 "native stack" firmware which comes pre-installed on many boards is: http://px4.io
There's another major firmware that runs on top of PX4 native stack called ArduPilot. http://ardupilot.org
ArduPilot Firmware Type
- Multirotor, Single Rotor Traditional Helicopter
- Fixed Wing, Quad Plane (VTOL)
- Antenna Tracker
In 2015, DroneCode was formed to consolidate software development efforts surrounding Pixhawk. However, in 2016, ArduPilot spun out of it sighting overreaching control from the few Platinum members (Intel, Qualcomm, 3D Robotics). Apparently, Chris Anderson decided to cut ArduPilot loose because of GPL v3 licensing which is not welcome in corporate software development environment.
Current DroneCode projects
- PX4 https://github.com/PX4
- Pixhawk https://github.com/Pixhawk
- MAVLink https://github.com/mavlink
- UAVCAN https://github.com/uavcan
- DroneKit https://github.com/dronekit
With addition of ROS, you have a full stack needed to develop a drone control system.
Above software, except for ArduPilot and ROS are now all under the Dronecode foundation, but are independent projects.
ArduPilot has been hardware independent for some time now and will continue to be developed for Pixhawk family of hardware.
As you can see in the diagram below, there are 3 major components to consider when selecting a flight-controller hardware and software, namely:
1. Flight Controller Hardware
This is what you mount on your vehicle and connect various sensors, actuators, and communication devices. Basically, we can divide these boxes into 2 major categories, namely, traditional micro-controller based boxes running embedded realtime OS, and single board computers running Linux. We'll give you a break down below.
2. Flight Controller Software
You need to pick the right one for your hardware and load it. Basically, there are 2 camps here. PX4 Native Stack, and APM. Details below.
3. GCS (Ground Control Station|Software|System)
This is needed for setup, configuration, mission editing, monitoring, logging, and analysis. Choice of GCS largely depends on which on-board stack you go with, and the device you want to run it on. For example, if you want to run a nice GUI GCS for APM on Linux PC, currently, there is only 1 realistic option.
PX4 Family of Hardware
Generally, flight controllers can be divided into 2 categories: Micro-controller based, and Linux SBC based variants.
Microcontroller Based Controller
These are essentially application specific embedded computer boards that runs MHz class embedded CPUs.
Official PX4 Boards
|PX4FMUv1||- PX4FMUv1 is the original PX4 hardware using 2 board design (FMU + IO)
- Short-lived and superseded by Pixhawk
|Pixhawk == PX4FMUv2||- It is based on a 168MHz 32bit STM32F427 Cortex M4 processor with 256KB of RAM
- Pixhawk hardware project was started at ETH Zurich and it was being manufactured by 3D Robotics (3DR has stopped manufacturing Pixhawk in 2016)
- It is an open source hardware, so there are many clones and copies available on the market
- Pixhawk is essentially a single board version of PX4FMU + PX4IO module, and thus it's also know as PX4FMUv2 (FMU = Flight Management Unit)
- There's a version of PX4IO called PX4IOAR which is specifically designed for AR.Drone
- Pixhawk uses Hirose DF13 connectors which is designed as a surface mount connector and not meant to be plugged/unplugged frequently. Since it's prone to connector/socket/wire breakage, and difficult to handle, a lot of people dislike it
|Pixhawk 2 (3DR Version) == PX4FMUv3||- 3D Robotics developed version 2 of Pixhawk for it's SOLO drone
- It's not available as a standalone unit
- Hardware is still opensource
- More or less a smaller version of Pixhawk 1 with carrier board, better connector, etc.
|Pixhawk 2 (Community Version)||- Since 3DR didn't want to sell Pixhawk 2 as a stand alone module, developers decided to create a community version manufactured by multiple vendors spread across the globe
- To be released in early November 2016
- It's a small cube form factor unit with DF17 connecter which will enable easy customization and expansion via carrier board
|Pixracer == XRacer V1 == PX4FMUv4||- Manufactured by AUAV, designed by Nick Arsov & Phillip Kocmoud
- Officially selected as PX4FMUv4
- Small form factor comparable to CC3D, NAZE, etc.
- Fits easily on 250 class racing quads
- General improvements over Pixhawk (Faster CPU, more RAM, better sensors, etc.)
- Uses JST GH connectors with locking tabs. Much easier to handle than DF13
- Includes tiny WiFi card
|Pixhawk Mini||- Developed by Holybro and HobbyKing, sold by 3D Robotics as a replacement for the original Pixhawk (PX4FMUv2)
- Same size as PixFalcon and with improved sensors and other components
- Inherited Micro JST (JST SH 1.0) connector from PixFalcon, unlike all other modern Dronecode Pixhawk variants which use JST GH connectors
- Released in Octobor 2016
Since PX4 series of hardware is open source, meaning the schematics and board layout files are freely available, there are many clones and alternative designs which may or may not incorporate additional improvements or modifications.
|Pixfalcon - Holybro||Smaller version of Pixhawk in a package comparable in size to the popular CC3D|
|Pixhack - CUAV||Pixhawk in a nice aluminum casing and builtin anti-vibration for IMU sensor. All connectors are located on the side of the body, allowing cleaner mounting on some frames. Uses JST GH series connectors instead of Hirose DF13|
|HKPilot32 - HobbyKing||Cheaper clone made by HobbyKing|
|Fixhawk - RCTimer||Another clone|
Other Pixhawk Clones
Single Board Linux Computer Based Controller
Pixhawk and their clones are essentially a microcontroller running basic realtime OS called NuttX. While they are great for single purpose embedded applications such as flight controllers, they are nowhere near as powerful or flexible as modern single board computers. It was inevitable that people soon began mounting GHz class single board computers such as BeagleBone, Raspberry Pi, etc. on their vehicles. These boards run Linux and the flight stack just runs as regular processes, along side other software such as ROS. ArduPilot was a little ahead on this race to Linux, but PX4 gained Linux support with SnapDragon port and there's a lot of Linux development going on there too.
|Pixhawk Fire (PXF)||- Designed as a cape for BeagleBone Black and sold by Erle Robotics
- Erle Robotics sells ErleBrain which is BeagleBone Black + PXF in a custom designed case
|PXF 2.0||- Only sold as part of ErleBrain 2
- Erle migrated from BeagleBone Black to Raspberry Pi with the release of Erle Brain 2
- While ErleBrain 2 is based on Raspberry Pi 2, PXF 2.0 is apparently compatible with many boards: BeagleBone Black, Raspberry Pi, Raspberry Pi 2, BananaPi, Orange Pi, Odroid-C1, Odroid-C1+
|PXFmini||- A smaller version of PXF for Raspberry Pi Zero
- Comes with JST GH Connectors
Initial version has the pins on JST connector reversed, so they are not compatible with other DroneCode equipments
|NAVIO 2||- Based on Raspberry Pi 2|
|SnapDragon Flight||- Based on Qualcomm Snapdragon CPU
- GPU, WiFi
- If you have SnapDragon, go with PX4 Native Stack for the time being
Onboard Flight Control Software
There are 2 major camps when it comes to the software that runs on-board the vehicles: PX4 Native Stack, and APM. Both PX4 Native Stack and APM, as well as MAVLink are now under DroneCode Project.
PX4 Native Stack
- PX4 Native Stack
- Works on Pixhawk and clones.
- Compatibility being worked on for Linux boards.
- Mainly developed by ETH Zurich.
- It's built on top of NuttX realtime OS and runs as bunch of apps on top of the PX4 Middleware (driver layer).
- Go with QGroundControl on any platform.
- BSD License.
- ArduPilot - APM
- Works on Pixhawk, clones and Linux boards.
- Evolved out of an Arduino based FC hardware/software developed by DIYDrones (from which 3D Robotics came about).
- APM runs as an application on top of PX4 Native Stack (PX4Firmware).
- Slightly different version for different vehicle and frame types (APM:Copter, APM:Plane, APM:Rover, etc.)
- Go with Mission Planner if you are on Windows.
- Go with APM Planner 2 if you are on other platforms.
- Use Tower on tablet.
- GPLv3 License.
In theory, you could use any GCS with any flight stack as long as they can speak MAVLink, but GCS's are usually tightly coupled to a specific flight stack catering to specific features or design goals of respective flight stack.
- Mainly designed to work with PX4 Native Stack.
- Mission Planner
- Most feature rich GCS for use with ArduPilot.
APM Planner 2
- APM Planner 2
- Mainly for ArduPilot.
- Android App.
- A command line GCS written in Python.
And here are very simple compatibility charts.
Hardware - Flight Stack Compatibility
|Hardware||PX4 Native Stack||ArduPilot|
|Pixhawk & Clones (FMUv1, v2, v4)||YES||YES|
Flight Stack - GCS Compatibility
|Flight Stack||QGroundControl||Mission Planner||APM Planner 2||MAVProxy||Tower|
|PX4 Native Stack||YES||Partial||Partial||Partial||Partial|
If you want more processing power on board (e.g. computer vision, etc.) or if you want ROS on board
- Go with Linux SBC based boards.
- OR use one of the Pixhawk clones IN ADDITION to a Linux SBC as a companion computer, connected via MAVLink and MAVROS.
If you want to use ROS on ground PC
- Use MAVLink and MAVROS