OpenDroneKit

Linked mission (saved missions)

Two or more saved missions joined into one sortie, with planned transitions between them.

Updated 2026-10-02generate_linked_mission · planned at 0ae10e4

Waypoints
135
Flight length
1,508.2 m
Estimated time
4.3 min
Altitude
32.5–55 m
Gimbal pitch
-90° to -35°
Est. GSD
1.64 cm/px

Geometry, from the planner

Planned by OpenDroneKit with these inputs: a saved 180 x 120 m grid at 55 m linked to a saved 30 m-radius orbit at 40 m, 8 m/s. The drawing is the planner’s actual output for that test site in Aukerman Park, Ohio, not an illustration.

Planner output · 135 waypointsLocal metres · north up
100 mN
Plan · blue: flight path · ring: first waypoint · dashed: drawn area
01020304050
Elevation, looking north · x: east–west position (m), y: altitude above take-off (m) · 32.5–55 m · gimbal -90° to -35°

How is the linked mission mission laid out?

The inputs are saved mission versions, not a drawn area. Each is compiled from its stored recipe, the order can be optimised, and the connecting legs are planned between them.

A dry run checks each transition leg against the no-fly zones and the altitude band; a failed dry run is returned as a warning.

Also accepted by the planner as: linked mission, linked_route.

Inputs

ParameterMeaningDefault
recipesTwo or more saved mission versions to join—
speed_m_sSpeed for the joined sortie5
optimize_orderReorder the missions to shorten the transitionstrue

Footprint, line spacing and GSD come from the camera profile; the GSD calculator uses the same formulas.

What survives each export?

  • QGroundControl .plan and .waypoints: every point carries a DO_MOUNT_CONTROL gimbal command; all points are NAV_WAYPOINT; 48 of 135 have a CONDITION_YAW heading lock; 133 DO_DIGICAM_CONTROL captures.
  • DJI WPML .kmz: gimbalRotate on every waypoint; heading-locked points use smoothTransition; takePhoto at capture points; speed limited to 1-15 m/s.
  • Litchi CSV: 135 waypoints exceed the exporter's 99-waypoint split, so the export is written as 2 consecutive files, each starting where the previous one ended.

Each format has known issues, listed on its page: QGC .plan · .waypoints · DJI WPML · Litchi CSV.

Limits

  • Cannot be planned from an area alone: it needs at least two saved missions.
  • Planned without a terrain model the plan assumes flat ground at the launch elevation, and it says so in a warning.
  • Not flight-tested on an aircraft as part of these pages; the numbers above are the planner’s estimates.

Source and tests

Compiled by generate_linked_mission in mission/planner.py. The function is on public main (1ef6351); this drawing was planned with the development branch (0ae10e4), whose planner is ahead of main.

Tests in the development branch that exercise it:

  • tests/test_exported_headings_face_the_subject.py
  • tests/test_mission_exports_carry_the_plan.py
  • tests/test_template_inventory_is_derived.py

Paths around or along something, single-point captures, and joined missions.

  • Orbit: Circles around a point of interest at one or more heights, camera aimed at the subject.
  • Closed loop: Continuous loops around a structure at one or more radii, without stopping at corners.
  • Linear: Captures along a drawn route line, heading locked along it, for pipelines, rail, power lines and rivers.
  • Lateral: Side-on photos of a linear asset from a parallel line at stand-off.
  • Waypoints: A route through drawn waypoints, with a choice of heading behaviour.
  • Panorama: A hover at one point, rotating to photograph the horizon for a stitched panorama.
  • 360 bubble: A hover at one point covering the whole sphere below the horizon, for a 360 photo sphere.

All 22 templates: mission templates · mission planning.