Skip to main content

PixhawkFamily

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 Family

History

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.

Pixhawk Hardware

The official website for the hardware is: http://pixhawk.org

Pixhawk

PX4 Native Stack

The official website for the PX4 “native stack” firmware which comes pre-installed on many boards is: http://px4.io

PX4

APM Firmware

There’s another major firmware that runs on top of PX4 native stack called ArduPilot. http://ardupilot.org

ArduPilot

ArduPilot Firmware Type

Dronecode

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

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.

http://dronecode.org

Key Components

As you can see in the diagram below, there are 3 major components to consider when selecting a flight-controller hardware and software, namely:

Overview

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.

MAVLink

Before we can talk about selecting the right FC hardware and software combinations for you, we need to cover MAVLink first, because it’s the hub that ties everything together. MAVLink is a communication protocol specifically designed for drones and can communicate over serial telemetry radios or TCP/UDP/IP networks. It defines a common set of standard telemetry parameters as well as command data types such as attitude, altitude, waypoints, flight mode commands, etc. In theory, systems that supports the same version of MAVLink can communicate with each other using the pre-defined parameters and commands. However, different software stack implements enough custom data types or operates differently enough so that only very basic functions are supported across different platforms.

MAVLink

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

Name Description
PX4FMUv1 PX4FMUv1 - PX4FMUv1 is the original PX4 hardware using 2 board design (FMU + IO)
- Short-lived and superseded by Pixhawk
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 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

Pixhawk Clones

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.

Name Description
Pixfalcon Pixfalcon - Holybro Smaller version of Pixhawk in a package comparable in size to the popular CC3D
Pixhack 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 HKPilot32 - HobbyKing Cheaper clone made by HobbyKing
Fixhawk 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.

Name Description
PXF 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 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 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
NAVIO2 NAVIO 2 - Based on Raspberry Pi 2
SnapDragon Flight 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 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.

APM

  • APM 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.

GCS

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.

QGroundControl

Mission Planner

APM Planner 2

Tower

MAVProxy

  • MAVProxy
  • A command line GCS written in Python.

Compatibility Chart

And here are very simple compatibility charts.

Hardware - Flight Stack Compatibility

Hardware PX4 Native Stack ArduPilot
Pixhawk & Clones (FMUv1, v2, v4) YES YES
PXF Partial YES
PXFmini Partial YES
ErleBrain 2 Partial YES
NAVIO2 NO YES
SnapDragon Flight YES Partial

Flight Stack - GCS Compatibility

Flight Stack QGroundControl Mission Planner APM Planner 2 MAVProxy Tower
PX4 Native Stack YES Partial Partial Partial Partial
APM Partial YES YES YES YES

For Developers

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