Skip to content

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:

TypeEffect
take_photoSingle still via takePhoto.
start_videoBegin recording via startRecord.
stop_videoEnd recording via stopRecord.
hoverHold position for param seconds (min 1).
gimbal_downPitch gimbal to -90 (nadir).
gimbal_forwardPitch gimbal to 0 (forward).
gimbal_angleAbsolute pitch param, yaw param2, roll param3.
rotate_headingYaw aircraft to param degrees; direction from sign of param2.
focusPoint-focus at normalised (param, param2) in [0..1].
zoomSet focalLength to param mm.
custom_dir_nameWrite subsequent captures into directory label.
customPlaceholder (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:

  1. Click a numbered waypoint on the preview.
  2. Open the Actions drawer.
  3. 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 every intervalDistance metres as the aircraft transits the outgoing leg.
  • multipleTiming — fire every intervalMs milliseconds.

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:

  • focusModeauto | manual.
  • meteringModeaverage | spot.
  • exposureModeauto | shutter_priority | aperture_priority | manual.
  • iso, aperture, shutterSpeed.
  • dewarpEnabled.
  • fileSuffix — appended to the captured-media directory name (emitted as <wpml:fileSuffix>).
  • lenses — any of wide, zoom, ir. Comma-joined at serialise time and emitted as <wpml:payloadLensIndex>.
  • useGlobalLens — when false, this action’s lenses override 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; towardPOI reuses the mission headingPoi.
  • 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 a gimbal_angle action 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.