Skip to content

docs/schema: server-side GNSS lever-arm correction#680

Open
dirkwa wants to merge 3 commits into
SignalK:masterfrom
dirkwa:feat-gps-lever-arm-correction
Open

docs/schema: server-side GNSS lever-arm correction#680
dirkwa wants to merge 3 commits into
SignalK:masterfrom
dirkwa:feat-gps-lever-arm-correction

Conversation

@dirkwa

@dirkwa dirkwa commented May 31, 2026

Copy link
Copy Markdown

Summary

Document the data-model contract for server-corrected navigation.position when GNSS antenna offsets are configured.

  • sensors.<id>.$source (new, optional) links a sensor instance to the source of its data stream — needed when multiple sensors of the same class are present (e.g. multi-GNSS). Named per the $-prefix reference convention established by $source in deltas.
  • navigation.position description expanded to define the Common Coordinate Reference Point (CCRP) as center-of-vessel on the centerline (body coordinates (design.length.value.overall / 2, 0) measured from the bow), matching the NMEA 2000 / radar / AIS industry convention.
  • Documents the meta.gnssOffsetCorrection entry that travels with corrected navigation.position deltas so history-recording consumers can preserve both the corrected value and the raw antenna measurement (with full provenance: $sensor referencing the sensor instance, fromBow, fromCenter, lengthOverall, headingTrue, rawValue).
  • New section in mdbook/src/data_model.md explaining the lever-arm correction model end-to-end.

Motivation

This is the specification side of SignalK/signalk-server#2399, which adds the multi-GNSS configuration UI and the in-server lever-arm corrector. Source priorities mean the active position source can flip between antennas with different offsets, which is fragile to correct client-side; the server has the active-source resolution and the heading, so it applies the correction in-process and emits the raw value plus correction provenance in meta for downstream history.

Document the data-model contract for server-corrected navigation.position
when GPS antenna offsets are configured. Adds sensors.<id>.sourceRef so
sensor metadata can be linked to its data stream; describes
navigation.position as the Common Coordinate Reference Point (CCRP) at
center-of-vessel on the centerline (body coordinates (length/2, 0)
measured from the bow) when correction is active; documents the
meta.gpsOffsetCorrection entry that preserves the raw value and the
correction provenance.

Motivated by SignalK/signalk-server#2399, which adds the multi-GPS
configuration UI and the in-server lever-arm corrector.
Rename the linkage field on the sensor object to $source per the
$-prefix reference convention, the correction meta to
gnssOffsetCorrection with $sensor referencing the sensor instance,
and the surrounding prose from GPS to GNSS. Matches the server
implementation in SignalK/signalk-server#2399.
@dirkwa dirkwa changed the title docs/schema: server-side GPS lever-arm correction docs/schema: server-side GNSS lever-arm correction Jul 3, 2026
Update the spec to match the server implementation: correction is an opt-in
server option (replace or both modes) rather than always-on, and is not
signalled in-band. Drop the meta.gnssOffsetCorrection description - position
deltas are high volume so no per-delta marker is added; the 'both' mode keeps
the raw antenna value as a separate <id>.ccrp source instead. Document the
notifications.navigation.gnss.headingUnavailable notification raised when
correction is active but heading is missing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant