Waypoints and actions
Once a pattern generates waypoints you can attach actions to any point — a photo, a
hover, a gimbal move, a heading change. Actions live in waypointActions[index] on
the DroneMission and in wp.actions on each DroneMissionWaypoint. On dispatch they
serialise into WPML <wpml:actionGroup> blocks inside each <Placemark>.
Action types
The DroneWaypointAction.type enum has twelve values:
| Type | Effect |
|---|---|
take_photo | Single still via takePhoto. |
start_video | Begin recording via startRecord. |
stop_video | End recording via stopRecord. |
hover | Hold position for param seconds (min 1). |
gimbal_down | Pitch gimbal to -90 (nadir). |
gimbal_forward | Pitch gimbal to 0 (forward). |
gimbal_angle | Absolute pitch param, yaw param2, roll param3. |
rotate_heading | Yaw aircraft to param degrees; direction from sign of param2. |
focus | Point-focus at normalised (param, param2) in [0..1]. |
zoom | Set focalLength to param mm. |
custom_dir_name | Write subsequent captures into directory label. |
custom | Placeholder (not emitted to WPML). |
gimbal_angle always emits gimbalRotateMode: absoluteAngle and
gimbalHeadingYawBase: aircraft — yaw is relative to the aircraft, not compass north.
For compass-absolute gimbal moves use a waypoint-level headingMode: fixed instead.
Attaching actions
In the planner:
- Click a numbered waypoint on the preview.
- Open the Actions drawer.
- Add any number of actions — they execute in order at the trigger point.
Each action carries an optional trigger that controls when the action group fires
relative to the waypoint (DroneActionTriggerType):
reachPoint(default) — fire the moment the aircraft reaches the waypoint.betweenAdjacentPoints— fire repeatedly everyintervalDistancemetres as the aircraft transits the outgoing leg.multipleTiming— fire everyintervalMsmilliseconds.
All actions in one waypoint share the trigger of the first action in the group.
Per-action camera overrides
Every photo/video action carries an optional cameraSettings (DroneCameraSettings)
that overrides the mission-level defaults for that single capture:
focusMode—auto|manual.meteringMode—average|spot.exposureMode—auto|shutter_priority|aperture_priority|manual.iso,aperture,shutterSpeed.dewarpEnabled.fileSuffix— appended to the captured-media directory name (emitted as<wpml:fileSuffix>).lenses— any ofwide,zoom,ir. Comma-joined at serialise time and emitted as<wpml:payloadLensIndex>.useGlobalLens— whenfalse, this action’slensesoverride the mission-level lens set (emits<wpml:useGlobalPayloadLensIndex>0</...>).
Dock firmware compatibility. Only fileSuffix, payloadLensIndex and
useGlobalPayloadLensIndex are emitted into WPML by the generator. The other
cameraSettings fields (focusMode, meteringMode, exposureMode, iso,
aperture, shutterSpeed, dewarpEnabled) are stored for forward-compatibility and
applied via live MQTT camera-control commands rather than via WPML. Dock firmware
≥ 1.6 rejects unknown elements inside actionActuatorFuncParam.
Per-waypoint overrides
Each DroneMissionWaypoint can override the mission defaults for the point it
represents and for the leg leaving it:
speedMps— segment cruise override.altitudeM,heightMode— altitude + reference-frame override.headingMode+headingAngleDeg— heading override;towardPOIreuses the missionheadingPoi.turnMode+turnDampingDistM— flatten or sharpen the turn through this point.gimbalPitchDeg— per-point pitch (takes precedence over the mission default).gimbalYawDeg,gimbalRollDeg— accepted on the model for forward-compat; they are not emitted as placemark children. To rotate gimbal yaw or roll at a point use agimbal_angleaction instead.
For bulk altitude edits without touching individual waypoint objects, write into
mission.pointAltOverrides — the planner applies the overrides on top of the
pattern-generated heights.