ADR-0007: Multi-domain scope (aerial, underwater, surface, ground)Link to the section ADR-0007: Multi-domain scope (aerial, underwater, surface, ground)

On this page

Status: Accepted 2026-10-14 (Option 2) — sponsor instruction "go with UNIVIP and start"; implemented in the rename commit Date: 2026-10-14 Profiles affected: all

ContextLink to the section Context

The sponsor wants the standard to cover uncrewed underwater vehicles (UUVs, ROVs) as well as uncrewed aerial vehicles, and the name to reflect that. The v0.1 draft is written for aircraft: the command family is vehicle.*, position uses altitude references (MSL, AGL), the flight-state enumeration is aviation-specific, link assumptions are radio/cellular, and GNSS is assumed available.

What changes if the scope is multi-domainLink to the section What changes if the scope is multi-domain

Area Aerial-only draft Multi-domain design
Command family vehicle.* vehicle.* core (hold, return_home, goto, move_relative, cancel, mission.*) with domain-specific additions (vehicle.takeoff/land for air, vehicle.surface/dive_to for underwater) gated by capability
Vertical axis altitude_msl_m, altitude_agl_m, altitude_rel_m Keep altitude members for air; add depth_m (positive below surface), altitude_above_seabed_m for underwater; exactly one vertical convention declared per device in capabilities
State enumeration vehicle_state vehicle_state with a shared core (IDLE, DEPLOYING, OPERATING, HOLDING, RETURNING, RECOVERING, DOCKED, EMERGENCY) and domain aliases (OPERATING = OPERATING for air)
Position source GNSS assumed position.source: GNSS, USBL, DVL_INS, DEAD_RECKONING, SURFACE_GNSS_LAST_FIX; uncertainty members become mandatory when source is not GNSS
Link Radio/cellular Add TETHER (already present), ACOUSTIC, OPTICAL; telemetry minimum rate relaxed for acoustic links by capability declaration
Media WebRTC live Unchanged for tethered ROVs; for untethered UUVs live video is often unavailable, so Profile S must allow "store-and-forward media" declared in capabilities
Geospatial extension Ground footprint Add seabed footprint and water-column depth
Profile names S / C / N (Navigation) Unchanged; "N" reads as navigation in both domains
Mappings MAVLink, ONVIF, MISB Add MAVLink ArduSub (uses the same message set), optional mapping to maritime standards (e.g. IEEE/OGC maritime, NMEA for surface vessels)

OptionsLink to the section Options

  1. Aerial first, multi-domain later. Ship v0.1 for air; introduce vehicle.* as a MAJOR version. Cheapest now, costs a breaking rename later.
  2. Rename to domain-neutral vocabulary now, implement air first. Adopt vehicle.*, vehicle_state, position.source, depth_m in the schemas now; mark underwater-specific members and states as "reserved, not yet testable". No breaking change later; small rework of the current draft.
  3. Full multi-domain v0.1. Specify underwater behavior fully before any implementation exists. Slowest; risks designing without implementers.

RecommendationLink to the section Recommendation

Option 2. The rename is mechanical while nothing is implemented yet, and it aligns the vocabulary with the sponsor's intended name. Underwater-specific test groups are added when an underwater implementer joins.

Consequences (if Option 2 is accepted)Link to the section Consequences (if Option 2 is accepted)

  • spec/07, spec/11, schemas/common, schemas/telemetry, schemas/command, schemas/capabilities, examples and Annex A are updated in one commit; tools/validate.py must pass.
  • Part 01 scope statement names uncrewed aerial, underwater, surface and ground vehicles, with aerial as the only domain with conformance tests in v0.1.
  • Naming (see docs/naming.md §2b) uses "vehicle" not "aerial".

Generated from docs/decisions/ADR-0007-multi-domain-scope.md.