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.
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
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.
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.
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.
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 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 is usually generated using Gitbook, and translated into a number of languages. You can find the main documents at the link below.
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.
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)
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
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.
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.
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.
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.
The Dronecode platform provides a flexible simulation framework allows the easy addition of new simulation backends
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 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 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 enable developers to create advanced flight modes outside of the flight stack. The main developer APIs are discussed below.
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).