About DroneKit

DroneKit-Python is DroneKit’s main API for Air Computing — allowing developers to create apps that run on an onboard companion computer and communicate with the ArduPilot flight controller using a low-latency link. Air apps can significantly enhance the autopilot, adding greater intelligence to vehicle behaviour, and performing tasks that are computationally intensive or time-sensitive (for example, computer vision, path planning, or 3D modelling).

The API communicates with “locally connected” vehicles over MAVLink. It provides programmatic access to a connected vehicle’s telemetry, state and parameter information, and enables both mission management and direct control over vehicle movement and operations.

Open source community

DroneKit-Python is an open source and community-driven project.

You can find all the source code on Github here and check out our permissive Apache v2 Licence. If you want to join the community, then see our contributing section for lots of ideas on how you can help.


DroneKit-Python is compatible with all vehicles using the MAVLink protocol (including most vehicles made by 3DR and other members of the DroneCode foundation). It runs on Linux, Mac OS X, or Windows.

In addition to “Air apps”, it can be used to create apps that run on a desktop ground station and communicate with ArduPilot over a higher latency RF-link.

API features

The API provides classes and methods to:

  • Get a list of connected vehicles.
  • Get and set vehicle state/telemetry and parameter information.
  • Receive asynchronous notification of state changes.
  • Create and manage waypoint missions (AUTO mode).
  • Guide a UAV to specified position (GUIDED mode).
  • Send arbitrary custom messages to control UAV movement and other hardware (GUIDED mode).
  • Override RC channel settings.

A complete API reference is available here.

Technical support

This documentation is a great place to get started with developing DroneKit Python APIs.

If you run into problems, the best place to ask questions is Stack Overflow. If your problem turns out to be a bug, then it should be posted on Github.