Leading open-source components for UAVs

Dronecode creates and sustains ecosystems around leading open-source projects

PX4 Autopilot

The PX4 Autopilot provides guidance, navigation, and control algorithms for autonomous fixed wing, multirotor and VTOL airframes, along with estimators for attitude and position.

QGroundControl

Feature complete and fully customizable control station for MAVLink based UAVs. It can be used to update, configure, and tune an airframe. The control station has a mighty mission planner and tracks missions. 

Communication protocols

Communications between the flight stack and ground control currently use MAVLink. In future protocols like RTPS are expected to provide more configurable messaging between the drone, GCS, cloud, and between processes running on the vehicle. Other comms protocols are used at different layers within the platform

MAVLink

The Micro Air Vehicle Communication Protocol (MAVLink) is a lightweight, header-only message marshalling library for micro air vehicles. It is widely used for communicating commands and telemetry between ground stations and autopilots (it is also the protocol used by DroneKit to communicate with vehicles). The protocol is currently being updated to support signing/authentication and other features that are becoming increasingly important.

Learn more

UAVCAN

UAVCAN is a lightweight protocol designed for reliable communication in aerospace and robotic applications via CAN bus. The specification and the reference implementation are open and free to use (MIT License).

Learn more

RTPS

The DroneCode Messaging Working Group is currently evaluating middleware solutions for communication between GCS, drone, cloud, and between processes running on the vehicle. At time of writing, the WG is enabling this via the RTPS protocol, which is also being used by the ROS2 efforts from the OSRF.

Learn more

Hardware

The Dronecode flight stack runs on flight controller hardware, and connects to various sensors, telemetry radios and other peripherals.  Some of the more important hardware is described below.

Flight Controllers

The Dronecode flight stack (PX4) is officially supported for the following flight controller hardware:

  • Pixhawk-compatible flight controllers, including the 3DR Pixhawk and Pixhawk Mini
  • Qualcomm Snapdragon Flight
  • Intel® Aero Ready to Fly Drone

Dronecode has improved interoperability by standardizing autopilot mechanical connectors: Dronecode Autopilot Connector Standard.

Find out more

Simulation

The Dronecode platform provides a flexible simulation framework allows the easy addition of new simulation backends

AirSim

AirSim is simulator from Microsoft, built on the Unreal Engine. It is open-source, cross platform and supports hardware-in-loop with Pixhawk (and other flight controllers) for physically and visually realistic simulations

ROS Gazebo Simulator

Gazebo is a PX4-compatible open source advanced robotics simulation environment that allows you to simulate the complete system to test new controllers or estimators. In addition to simulating avionics, Gazebo provides the capability to replicate cameras and laser sensors

jMAVSim

jMAVSim is a simple and lightweight multirotors simulator. It can work with the autopilot via serial port or UDP connection, directly using the MAVLink protocol, without any wrappers or ground control stations. Optional secondary port (e.g. UDP) can be configured for ground station connection

X-Plane

X-Plane is a accurate flight simulator which supports fixed wing models. Only XPlane 10 is officially supported and tested with PX4 but (untested) legacy support for XPlane 9 is available in QGroundControl

Developer APIs

Developer APIs enable developers to create advanced flight modes outside of the flight stack. The main developer APIs are discussed below.

Dronecode SDK

The DroneCode SDK is a MAVLink Library for PX4, with APIs for C++, Python, Android, and iOS (coming soon). It provides a simple API for managing one or more vehicles, providing programmatic access to vehicle information and telemetry, and control over missions, movement and other operations.

The SDK is the best way to integrate with PX4 over MAVLink! Developers can use it to connect PX4 with custom cameras, gimbals, or other hardware.

Robot Operating System (ROS)

ROS is a partner/complementary project of Dronecode that delivers a set of software libraries and developer tools for building and simulating robot applications.  PX4 can integrate with ROS via two different APIs — either where native PX4 applications are ROS nodes or where ROS nodes communicate with PX4 via MAVLink (using mavros, a MAVLink to ROS gateway, with UDP proxy for Ground Control Station).