Leading Open Source Technologies

Dronecode aims to create a sustainable ecosystem and community for open source projects, everything needed for a complete UAV solution: flight-controller hardware, autopilot software, ground control station, and developer APIs for enhanced/advanced use cases
Roadmap

Current Projects

The platform encompasses a number of open source projects that deliver the platform software and hardware. Development is done at the project level with coordination and resource allocation performed by the Technical Steering Committee (TSC) and the Board.

Comms

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.

Member project

Flight Code

Dronecode’s flight code is provided by PX4. The autopilot provides guidance, navigation and control algorithms for autonomous fixed wing, multirotor and VTOL airframes, along with estimators for attitude and position.

Member project

Ground Control Station

QGroundControl is the Dronecode reference GCS. It can be used to install firmware, configure and tune an airframe, and plan and track missions.

Member project

Hardware

The flight code runs on flight controller hardware, including the Pixhawk, Qualcomm Snapdragon Flight, and Intel® Aero Ready to Fly Drone, and connects to various sensors, telemetry radios and other peripherals.

Simulation

Dronecode provides a flexible simulation framework that allows the easy addition of new simulation backends. These include the ROS Gazebo Simulator, JMavSim, AirSim and X-Plane.

Developer APIs

APIs allow developers to create advanced flight modes by sending commands to the flight stack. The two main APIs for use with the platform are Dronecode SDK and ROS (a complementary project).

Source code

Source code is stored in Github repositories belonging to component sub-projects. Project developer guides show how to set up a developer environment and build the software/firmware.

Documentation

Documentation is usually generated using Gitbook, and translated into a number of languages. You can find the main documents at the link below.

Discussion

Dronecode discussions are spread across a number of mailing lists, discussion forums and chat rooms. All of the important places for the community to meet are linked below.

Ground Control Station (GCS)

QGroundControl is the Dronecode reference GCS, which runs on Windows, Mac OS, Linux, Android and iOS. It can be used to install firmware, configure and tune an airframe, and plan and track missions. It can also be modified or extended and used as part of another product.

Flight code

The Dronecode platform’s flight code is provided by the PX4 project. The autopilot provides guidance, navigation and control algorithms for autonomous fixed wing, multirotor and VTOL airframes, along with estimators for attitude and position.
In addition to being a “core” Dronecode project, PX4 is supported by the Computer Vision and Geometry Lab of ETH Zurich (Swiss Federal Institute of Technology) and by the Autonomous Systems Lab and the Automatic Control Laboratory (along with a number of individuals and partners)

Comms 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).

Contribute

Dronecode Platform is an Open Source Software Project

How to participate