Geometry, from the planner
Planned by OpenDroneKit with these inputs: 180 x 120 m rectangle, 55 m, one 40 x 30 m interest region. The drawing is the planner’s actual output for that test site in Aukerman Park, Ohio, not an illustration.
How is the smart adaptive mission laid out?
The regions come from the operator: drawn interest polygons, or defect points from an earlier survey's defect layer (each drawn as a radius around the point).
With no interest input there is nothing to adapt to, so the template emits the plain grid and labels its poses grid_uniform_no_interest_input rather than claiming adaptivity.
Also accepted by the planner as: adaptive, smart.
Inputs
| Parameter | Meaning | Default |
|---|---|---|
altitude_m | Flight altitude in metres, relative to the take-off point unless an AMSL terrain model is loaded | 60 |
front_overlap_pct | Forward overlap between consecutive photos; with the camera footprint it sets the capture spacing | 80 |
side_overlap_pct | Overlap between neighbouring lines or rows; with the camera footprint it sets the line spacing | 70 |
speed_m_s | Planned cruise speed, written to every export | 5 |
camera | Camera profile used for footprint and ground-sample-distance estimates | mavic2pro |
gimbal_tilt_deg | Camera pitch; left blank, the template's own default is used | -90 |
adaptive_interest_regions_lonlat | Polygons that get the finer detail pass | — |
adaptive_prior_defects_lonlat | Defect points from an earlier survey that get the detail pass | — |
adaptive_density_factor | How much denser the detail pass is | 2.5 |
adaptive_region_radius_m | Radius drawn around each prior defect point | 12 |
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; 125 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: 125 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
- Adaptive only when given interest regions or prior defects; otherwise a uniform grid, labelled as such.
- Planned without a terrain model the plan assumes flat ground at the launch elevation, and it says so in a warning.
- In this example 5 of 125 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_smart_adaptive_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.pytests/test_mission_exports_carry_the_plan.pytests/test_template_inventory_is_derived.py
Related templates
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.
- 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.