You are here

Comms and APIs

Supported APIs

DroneKit
DroneKit by 3DR

 

ROS
ROS by OSRF

ROS: The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS is a partner project of Dronecode, with support for computer vision, navigation and  UAV simulation environments. PX4 can integrate via two different APIs with ROS: Either natively each application as a ROS node or when running exclusively on the embedded autopilot via MAVLink mavros (MAVLink to ROS gateway with UDP proxy for Ground Control Station). APM/ArduPilot can integrate with ROS via MAVLink mavros (MAVLink to ROS gateway with UDP proxy for Ground Control Station).

DroneKit SDK: Expands on DroneAPI to offer a toolkit to develop customized applications for cloud, mobile and pc based interaction with UAVs.  

DroneAPI: DroneAPI is the basis for Dronekit-Python maintained by 3D Robotics. The python language bindings and mavproxy module for the drone API.

 

Communication Protocol

MAVLink

MAVLink: As the diagram below shows, integrating MAVLink is non-intrusive. MAVLink does not need to become a central part of the onboard architecture. The provided missionlib handles parameter and mission / waypoint transmission, the autopilot only needs to read off the values from the appropriate data structures. MAVLink has a very stable message format, one of the primary reasons so many GCS and autopilots support it.

MAVLink Integration

(source: http://www.qgroundcontrol.org/dev/MAVLink_onboard_integration_tutorial)

 

 

UAVCAN

UAVCAN is a lightweight protocol designed for reliable communication in aerospace and robotic applications via CAN bus.

Key Features

  • Very low data overhead - suitable for high frequency distributed control loops.
  • Democratic network - no single point of failure.
  • Supports network-wide time synchronization with microsecond precision.
  • Allows to efficiently exchange long datagrams.
  • Publish/subscribe or request/response exchange semantics.
  • Doubly-redundant or triply-redundant CAN bus support.
  • Lightweight, easy to implement protocol.
  • Can be used in deeply embedded systems (the reference implementation runs on a 32K ROM, 8K RAM MCU).

The specification and the reference implementation are open and free to use (MIT License).