OpenDroneKit

Roof inspection (stop and shoot)

A stop-and-shoot grid over a roof: the aircraft halts at each point to photograph it.

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

Waypoints
12
Flight length
74.5 m
Estimated time
0.6 min
Altitude
35 m
Gimbal pitch
-90°
Est. GSD
0.82 cm/px

Geometry, from the planner

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

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

How is the roof inspection mission laid out?

The same line layout as the grid, but every point is a hover-and-capture stop (1.5 s by default, limited to 0-30 s) rather than a fly-through capture.

The camera can be locked to one heading for the whole roof, or follow the direction of travel.

Also accepted by the planner as: horizontal_inspection, inspection, roof.

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-90
flight_direction_degBearing of the survey lines0
camera_direction_degFixed camera heading when the camera direction is locked—
inspection_dwell_sHover time at each capture point—

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; 12 of 12 points are NAV_LOITER_TIME holds; no heading locks; 12 DO_DIGICAM_CONTROL captures.
  • DJI WPML .kmz: gimbalRotate on every waypoint; hover action and toPointAndStopWithDiscontinuityCurvature turns at hold points; headings use followWayline; takePhoto at capture points; speed limited to 1-15 m/s.
  • Litchi CSV: 12 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 2 of 12 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_roof_inspection_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_mission_constraints.py
  • tests/test_mission_exports_carry_the_plan.py
  • tests/test_standoff.py
  • tests/test_template_inventory_is_derived.py

Nadir or near-nadir lines over a drawn area, for orthomosaics, DSMs and coverage.

  • Grid: A nadir lawnmower survey of a drawn area, for orthomosaics and elevation models.
  • Double grid: A cross-hatched survey: the grid flown twice at crossing bearings, for 3D reconstruction of an area.
  • Corridor: Parallel lanes along the long axis of a drawn strip, for roads, rails, pipelines and riverbanks.
  • Solar: Row-aligned passes over a solar array, for RGB or thermal capture.
  • Magnetic: Main survey lines plus perpendicular tie lines at constant altitude, for magnetometer surveys.
  • Smart adaptive: A uniform grid plus a finer, lower, cross-hatched pass over regions that warrant a closer look.

All 22 templates: mission templates · mission planning.