Leading open-source components for UAVs
Dronecode creates and sustains ecosystems around leading open-source projects
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.
UAVCAN is an open lightweight protocol designed for reliable intravehicular communication in aerospace and robotic applications over CAN bus, Ethernet, and other robust transports. It is created to address the challenge of deterministic on-board data exchange between systems and components of next-generation intelligent vehicles: manned and unmanned aircraft, spacecraft, robots, and cars.
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).