API and library for PX4 Autopilot using MAVLink written in C++11
Clone or download
julianoes Merge pull request #596 from Dronecode/fix-calibration-default-state
calibration: state should be initialized to NONE
Latest commit 55c851d Nov 19, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
backend action: Move ActionResult back into Action::Result Nov 19, 2018
cmake build_system: delete unused file Aug 19, 2018
core core: promise don't need to be pointers Nov 14, 2018
debug_helpers Renamed DroneCore to DronecodeSDK Jul 5, 2018
docker docker: looks like su is not in /usr/bin but /bin Sep 28, 2018
example example: fix after ActionResult -> Action::Result Nov 19, 2018
external_example external_example: fix paths Oct 3, 2018
integration_tests action: Move ActionResult back into Action::Result Nov 19, 2018
plugins calibration: state should be initialized to NONE Nov 19, 2018
third_party Add orex/cpp_rsc submodule to embed files in bin Aug 2, 2018
.clang-format Added .clang-format matching our current style May 30, 2018
.doxygen Added script to generate docs (#166) Nov 20, 2017
.gitignore update grpc implementations according to new plugin architecture Feb 1, 2018
.gitmodules Add orex/cpp_rsc submodule to embed files in bin Aug 2, 2018
.ignore Add .ignore file to ignore everything third_party Apr 3, 2018
.travis.yml travis: only run this check on develop branch Oct 4, 2018
.ycm_extra_conf.py ycm_extra_conf: get includes right Jul 26, 2018
CMakeLists.txt cmake: inject version using define Oct 29, 2018
Jenkinsfile Jenkins: build all examples at once Oct 1, 2018
LICENSE.md Add initial docs Sep 5, 2016
Makefile Makefile: fix `make clean` on macOS Oct 29, 2018
README.md Fix README (#532) Sep 4, 2018
appveyor.yml appveyor: boost is not required anymore Aug 17, 2018
ci-git-release.sh ci-git-release.sh: we should get the branch only Oct 3, 2018
create_packages.sh travis: don't build examples for now Sep 25, 2018
fix_style.sh scripts: change shebang Jul 24, 2018
generate_docs.sh scripts: change shebang Jul 24, 2018
generate_markdown_from_doxygen_xml.py Fix pub in namespace docs generation Jul 9, 2018
iOS.cmake Changed iOS toolchain for iOS SDK 10.0 Jun 15, 2017
run-docker.sh run-docker.sh: we should pass the local user ID Sep 30, 2018
start_px4_sitl.sh scripts: change shebang Jul 24, 2018
stop_px4_sitl.sh scripts: change shebang Jul 24, 2018
travis-docker-build.sh travis: don't build examples for now Sep 25, 2018
version version: 0.8.0 Nov 16, 2018


Dronecode SDK

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


The Dronecode SDK (previously known as "DroneCore") is an API and library for the PX4 flight stack using MAVLink.

It is written in C++ and aiming to be:

  • Easy to use with a simple API.
  • Fast and lightweight.
  • Cross-platform (Linux, Mac, Windows, iOS, Android).
  • Extensible (using compile-time plugins).


The next steps will be:

  • Add language bindings for Android, iOS, and Python


The SDK currently takes care of the MAVLink messaging. Connections over serial, UDP, and TCP are supported on Linux, macOS, and Windows.

The library provides both synchronous (blocking) API calls, as well as asynchronous API calls using callbacks.

API Overview

API consumers use the DronecodeSDK class to discover and manage vehicles (System objects). Using the System object plugins such as e.g. Action, Telemetry, or Mission can be instantiated which provide information about the state of the drone and allow to interact with it.

The links below take you to the respective header files:

  • dronecode_sdk: set up connection, discover devices
  • system: an class representing one drone which can consist of multiple components
  • info: general info about a device
  • telemetry: to receive telemetry data
  • action (and action_result.h): to send commands such as arm, disarm, takeoff, land to drone
  • mission/mission_item: to upload a waypoint mission
  • offboard: for velocity control
  • gimbal: control a gimbal
  • camera: capture images, videos, and set camera settings
  • follow_me: drone tracks a position supplied by the Dronecode SDK.
  • calibration: calibrate drone sensors including gyro, accelerometer, and magnetometer.
  • logging: (not implemented) data logging and streaming from the vehicle.

For more information see the API Overview in the Dronecode SDK Guide.

Docs (Build instructions etc.)

Instructions for how to use the library can be found in the SDK Guide.

Quick Links:


This project is licensed under the permissive BSD 3-clause, see LICENSE.md.