OpenDroneKit

Double grid (3D mapping)

A cross-hatched survey: the grid flown twice at crossing bearings, for 3D reconstruction of an area.

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

Waypoints
477
Flight length
3,542.4 m
Estimated time
11.4 min
Altitude
55 m
Gimbal pitch
-90°
Est. GSD
1.29 cm/px

Geometry, from the planner

Planned by OpenDroneKit with these inputs: 180 x 120 m rectangle, 55 m. The drawing is the planner’s actual output for that test site in Aukerman Park, Ohio, not an illustration. The plan has 477 waypoints; every point is counted above and an even subset is drawn.

Planner output · 477 waypoints (400 drawn)Local metres · north up
50 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) · 55 m · gimbal -90°

How is the double grid mission laid out?

Two grid passes over the same polygon, the second at a cross angle (90 deg by default, limited to 30-150 deg).

Overlap is raised to at least 85 % forward and 80 % side for this template, and the plan carries a locked-exposure camera policy (manual exposure, white balance and focus, ISO 200 maximum) so the two passes match photometrically.

Requesting it as mapping_3d, 3d_modelling or 3d_mapping adds oblique perimeter rings at -45 and -60 deg, because nadir imagery sees walls at a grazing angle or not at all. A plain double grid does not add them: the extra flight time is opt-in.

Also accepted by the planner as: 3d_mapping, 3d_modelling, mapping_3d.

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
terrain_follow_enabledFollow terrain from a loaded GeoTIFF, ESRI ASCII grid, CSV samples or fitted planefalse

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; no heading locks; 477 DO_DIGICAM_CONTROL captures.
  • DJI WPML .kmz: gimbalRotate on every waypoint; headings use followWayline; takePhoto at capture points; speed limited to 1-15 m/s.
  • Litchi CSV: 477 waypoints exceed the exporter's 99-waypoint split, so the export is written as 5 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

  • The oblique bands are only added when the 3D-modelling name is requested; a plain double grid has none.
  • Planned without a terrain model the plan assumes flat ground at the launch elevation, and it says so in a warning.
  • In this example 29 of 477 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_grid_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_mapping_3d_oblique.py
  • tests/test_mission_constraints.py
  • tests/test_mission_exports_carry_the_plan.py
  • tests/test_standoff.py
  • tests/test_template_inventory_is_derived.py
  • tests/test_terrain_following_is_exact.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.
  • 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.
  • Roof inspection: A stop-and-shoot grid over a roof: the aircraft halts at each point to photograph it.

All 22 templates: mission templates · mission planning.