mavlink/MAVSDK

API and library for MAVLink compatible systems written in C++

What it solves

MAVSDK provides a high-level, easy-to-use API for interacting with MAVLink, simplifying the process of controlling drones and other unmanned vehicles. It removes the complexity of raw MAVLink communication, offering a simpler interface for developers to implement vehicle control and monitoring.

How it works

The project is built around a C++ core library that handles the basic MAVLink communication and feature-specific plugin libraries. It uses a proto IDL to define the API across different languages.

Depending on the language, bindings are implemented in two ways:

  • Directly: C, Python, and Kotlin bindings call the C++ library through a C wrapper, avoiding the need for a separate process or gRPC.
  • Over gRPC: Other language clients (like Swift, Java, and Go) communicate with a mavsdk_server process that exposes the API on a local port.

Who it’s for

Developers building applications for unmanned vehicles that need a cross-platform (Linux, macOS, Windows, iOS, Android) and lightweight SDK to communicate with MAVLink-compliant hardware.

Highlights

  • Multi-language support: Provides idiomatic APIs for Python, C++, C, Kotlin, Swift, Java, and others.
  • Cross-platform: Works across desktop and mobile operating systems.
  • Flexible API: Supports both synchronous (blocking) and asynchronous (callback-based) calls.
  • Standard Compliant: Fully compliant with the MAVLink standard and definitions.

Related

  • Project
  • Project
  • Project
  • Project
  • Project