OpenDroneKit

Flight over MAVLink

Mission, geofence and rally upload with the capture commands intact, live telemetry, and a simulator that has caught real bugs.

Updated 2026-10-02Checked against main@1ef6351

Which aircraft can it fly?

ArduPilot, over MAVLink 2. Missions, geofences and rally points upload directly from the app. DJI and Litchi aircraft are supported by export only: OpenDroneKit writes the DJI WPML or Litchi CSV file and their own apps fly it. Fence and rally upload need MAVLink 2 source.

What reaches the autopilot?

Each upload uses the MAVLink request/acknowledge transfer protocol and lands in the correct mission slot (mission, fence or rally). Gimbal, yaw, dwell and camera-trigger items survive a full upload/download round trip, checked against a MAVLink peer source. The command stream is the same one written to .waypoints files.

From the app: live telemetry, arm, start, pause, return to launch and abort source.

How is the flight code tested?

Against real ArduPilot Copter 4.5.7 firmware running in simulation (SITL). As of 2026-10-02, run locally in Docker, two of three SITL flight tests pass; the third, home-position reporting, exposed a bug that is being fixed.

That testing earned its keep: it caught missions putting the take-off at sequence 0, which MAVLink reserves for home, so ArduPilot overwrote it, after every mock-based test had passed source.

Related

Other parts of the pipeline: Mission planning · Photogrammetry · AI defect detection · Measurements · Reports · Offline and private