Geometry, from the planner
Planned by OpenDroneKit with these inputs: 40 x 20 m building, circuits at 25 and 40 m. The drawing is the planner’s actual output for that test site in Aukerman Park, Ohio, not an illustration.
How is the box mission laid out?
The path is the footprint's convex hull offset outward by the stand-off (15 m by default), which keeps the distance to each wall constant along that wall. A circle would hold the corners at the stand-off and leave the middle of each wall much further away.
One circuit is flown per altitude level. The camera stays on the centre of the building at an oblique pitch (-30 deg by default), bringing roof edges, vertical edges and side elevations into frame.
Also accepted by the planner as: box.
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 | -30 |
box_altitude_levels_m | Altitudes of the circuits | — |
facade_standoff_m | Distance from the wall (falls back to 8 m when unset) | — |
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; 104 of 104 have a CONDITION_YAW heading lock; 104 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: 104 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
- 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 _compile_box_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_dome_and_box_missions.pytests/test_exported_headings_face_the_subject.pytests/test_mission_exports_carry_the_plan.pytests/test_structure_missions_keep_clear.pytests/test_template_inventory_is_derived.py
Related templates
Camera aimed at a wall, a box, a tower, a turbine or a dome, from a stand-off distance.
- Facade: Columns and rows of photos across one wall, at stand-off, camera level and facing the wall.
- Facade mapping: A denser facade capture for photogrammetric 3D models of a wall.
- Multi-facade: A facade pass on every wall of a building, each wall with its own stand-off, heights and spacing.
- Tower: Stacked rings around a tower or mast, each ring photographing the section beside it.
- Wind turbine: Tower, nacelle and both faces of each blade of a parked wind turbine.
- Dome: Rings that follow a dome's curve, with the camera on the surface normal, for silo caps and domed roofs.
All 22 templates: mission templates · mission planning.