Dronecode SDK C++ Library

Slack Discuss jenkins build status travis-ci build status appveyor build status Coverage Status

The Dronecode SDK Core provides a simple C++ API for managing one or more vehicles via MAVLink. It enables programmatic access to vehicle information and telemetry, and control over missions, movement and other operations. The C++ library is very performant, and can be used to enable tasks like computer vision, obstacle avoidance, and route planning.

Developers can extend the SDK, using plugins to add any other required MAVLink API (for example, to integrate PX4 with custom cameras, gimbals, or other hardware over MAVLink).

The core library is used to provide the underlying implementation of the other Dronecode SDK libraries - e.g. DronecodeSDK-Swift.

Project Status

The Dronecode SDK C++ core is in beta development.

Getting Started

At time of writing all users will need to build the library in order to use it. In the near future we'll have binary releases for the wrapper APIs.

This Guide explains how to write Dronecode SDK apps using C++. A simple complete example can be found in Takeoff and Land.

Developers who want to create plugins and contribute to the API will need to build the C++ library (and other programming language wrappers) from source. For more information see the contributing section below.

API Overview

DronecodeSDK is the main library class. API consumers use DronecodeSDK to discover and access vehicles (System objects), which in turn provide access to all other drone information and control objects (e.g. Telemetry, Mission etc.).

The most important classes are:

  • DronecodeSDK: Discover and connect to vehicles (System).
  • System: Represents a connected vehicle (e.g. a copter or VTOL drone). It provides access to vehicle information and control through the classes listed below.
  • Info: Basic version information about the hardware and/or software of a system.
  • Telemetry: Get vehicle telemetry and state information (Battery, EulerAngle, GPSInfo, GroundSpeedNED, Health, Position, Quaternion, RCStatus) and set telemetry update rates.
  • Action: Simple drone actions including arming, taking off, and landing.
  • Mission: Waypoint mission creation and upload/download. Missions are created from MissionItem objects.
  • Offboard: Control a drone with velocity commands.
  • Gimbal: Control a gimbal.
  • Camera: Control a camera.
  • FollowMe: Drone tracks a position supplied by the SDK.
  • Calibration: Calibrate sensors (e.g.: gyro, accelerometer, and magnetometer).
  • LogFiles: Download log files from the vehicle.

The following APIs provide more direct access to underlying MAVLink messages/types. They should only be used where features are missing from the main APIs above.


The Contributing section contains everything you need to contribute to the C++ API, including topics about building the SDK from source code, running our integration and unit tests, and all other aspects of core development.

© Dronecode 2017-2019. License: CC BY 4.0            Updated: 2019-06-05 23:40:05

results matching ""

    No results matching ""