OpenDroneKit

Closed loop

Continuous loops around a structure at one or more radii, without stopping at corners.

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

Waypoints
72
Flight length
562 m
Estimated time
3.6 min
Altitude
22.5–38 m
Gimbal pitch
-20°
Est. GSD
0.71 cm/px

Geometry, from the planner

Planned by OpenDroneKit with these inputs: 40 x 20 m building, 30 m. The drawing is the planner’s actual output for that test site in Aukerman Park, Ohio, not an illustration.

Planner output · 72 waypointsLocal metres · north up
20 mN
Plan · blue: flight path · ring: first waypoint · dashed: drawn area · shaded: structure
010203040
Elevation, looking north · x: east–west position (m), y: altitude above take-off (m) · 22.5–38 m · gimbal -20°

How is the closed loop mission laid out?

The loop is centred on the footprint's area centroid (not the vertex mean, which on an L-shaped building is the inside corner). The default is 24 capture points per loop, with the camera at -20 deg.

Because the aircraft never stops at a corner, the capture cadence stays even and stop-start motion blur in wind is avoided.

Also accepted by the planner as: closed_loop_facade.

Inputs

ParameterMeaningDefault
altitude_mFlight altitude in metres, relative to the take-off point unless an AMSL terrain model is loaded60
front_overlap_pctForward overlap between consecutive photos; with the camera footprint it sets the capture spacing80
side_overlap_pctOverlap between neighbouring lines or rows; with the camera footprint it sets the line spacing70
speed_m_sPlanned cruise speed, written to every export5
cameraCamera profile used for footprint and ground-sample-distance estimatesmavic2pro
gimbal_tilt_degCamera pitch; left blank, the template's own default is used-20
closed_loop_radii_mLoop radii; empty means one loop sized from the footprint—
closed_loop_pointsCapture points per loop24
closed_loop_clockwiseLoop directiontrue

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; 72 of 72 points are NAV_LOITER_TIME holds; 72 of 72 have a CONDITION_YAW heading lock; 72 DO_DIGICAM_CONTROL captures.
  • DJI WPML .kmz: gimbalRotate on every waypoint; hover action and toPointAndStopWithDiscontinuityCurvature turns at hold points; heading-locked points use smoothTransition; takePhoto at capture points; speed limited to 1-15 m/s.
  • Litchi CSV: 72 waypoints fit in one file (the exporter splits at 99).

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

Limits

  • Planned without a terrain model the plan assumes flat ground at the launch elevation, and it says so in a warning.
  • In this example 18 of 72 points fell outside the geofence (the drawn area) and were projected back inside it; the plan reports that count.
  • Not flight-tested on an aircraft as part of these pages; the numbers above are the planner’s estimates.

Source and tests

Compiled by _compile_closed_loop_primitive 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_mission_types.py
  • tests/test_standoff.py
  • tests/test_structure_missions_keep_clear.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.
  • 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.
  • Linked mission: Two or more saved missions joined into one sortie, with planned transitions between them.

All 22 templates: mission templates · mission planning.