About DroneKit

DroneKit-Python allows developers to create apps that run on an onboard companion computer and communicate with the ArduPilot flight controller using a low-latency link. Onboard 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). DroneKit-Python can also be used for ground station apps, communicating with vehicles over a higher latency RF-link.

The API communicates with 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.

Compatibility

DroneKit-Python is compatible with vehicles that communicate 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.

Note

DroneKit-Python is validated against, and hence most compatible with, the ArduPilot UAV Platform. Vehicles running other autopilots may be be less compatible due to differences in adhererence/interpretation of the MAVLink specification. Please report any autopilot-specific issues on Github here.

API features

The API provides classes and methods to:

  • Connect to a vehicle (or multiple vehicles) from a script
  • Get and set vehicle state/telemetry and parameter information.
  • Receive asynchronous notification of state changes.
  • Guide a UAV to specified position (GUIDED mode).
  • Send arbitrary custom messages to control UAV movement and other hardware (GUIDED mode).
  • Create and manage waypoint missions (AUTO 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 the DroneKit-Python Forum. If your problem turns out to be a bug, then it should be posted on Github.