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 consumers use the
DronecodeSDK class to discover and manage vehicles (
System objects). Using the
System object plugins such as e.g.
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.
This project is licensed under the permissive BSD 3-clause, see LICENSE.md.