Skip to content

Message Reference

The SPRINT-Nav provides two methods for streaming output data:

  • Using the API (non-guaranteed latency).
  • Using the following proprietary Sonardyne navigation messages (for time-critical, low latency vehicle control).

This section defines output messages as implemented on SPRINT-Nav U. For additional message definitions, see the product manual.

Sonardyne Simple Binary Protocol

The Simple Binary Protocol provides a generic wrapper to output messages.

Data field LSB/(fixed value) Range Data type Size(Bytes) Notes
Header (0xAA 0xBF) 0 to 255 UINT8 2 Header to denote the start of the packet
Version (0) 0 to 255 UINT8 1 Version of protocol
ID (0) 0 to 65535 UINT16 2 Message ID (HNAV = 0), see Note 1
Size - 0 - 4096 - 2 Size of data field in bytes, see note 2
Counter - 0 to 255 - 1 Counter per message, increments before rolling over to 0. Allows detection of out of order receipt.
Spare - - - 2 Not Used
Payload - - - - Message data (e.g. HNAV)
CRC - - UINT16 2 CRC-16/X-25. Covers all bytes before and including data bytes.
Notes
  1. Each output message has its own message ID, the message ID of HNAV is 0
  2. Each output message has a fixed size, the HNAV is 55 bytes

HNAV

The Hybrid Navigation (HNAV) message includes all information required for the majority of vehicle guidance, control, and navigation applications. It utilises scaled fields to reduce size to allow for effective transmission on both Serial and Ethernet. All fields will be initialised to 0. Once a field has been assigned a value, it will retain that value until updated - unless specified otherwise in the definition below. The status bits should be used to determine when data is old/stale. The HNAV requires the Simple Binary Protocol to successfully decode the message. All data is transmitted LSB first.

A C++ HNAV Decoder is available on Sonardyne's Github.

Definition

Simple Binary Protocol ID = 0

Size = 55 bytes

Data field LSB/(fixed value) Range Data type Size(Bytes) Data Source (See Notes) Notes
Version 0 0 to 255 UINT8 1 Navigation Algorithm Version of message
Time of Validity (UTC) 10-6 seconds - UINT64 8 Always Available
Latitude 2-31×90 deg +/- 90 deg INT32 4 Navigation Algorithm
Longitude 2-31×180 deg +/- 180 deg INT32 4 Navigation Algorithm
Depth 1mm +/- 12,000m INT32 4 Navigation Algorithm & Sensor Depth at vehicle CRP, depth from pressure sensor during alignment
Altitude 0.01m 0 to 600m UINT16 2 DVL Altitude is referenced from SPRINT-Nav’s DVL reference point to the seabed and is the mean of all valid beams (not compensated for CRP measurements or pitch and roll).
Roll 0.0055 deg +/- 180 deg INT16 2 Navigation Algorithm Available within 60s of startup
Pitch 0.0055 deg +/- 90 deg INT16 2 Navigation Algorithm Available within 60s of startup
Heading 0.0055 deg 0 to 360 deg UINT16 2 Navigation Algorithm Available within 60s of startup
Fwd Velocity 1mm/s +/-30m/s INT16 2 Navigation algorithm Sourced from DVL during alignment, Hybrid velocities when in Hybrid mode
Stbd Velocity 1mm/s +/-30m/s INT16 2 Navigation algorithm Sourced from DVL during alignment, Hybrid velocities when in Hybrid mode
Dwn Velocity 1mm/s +/-30m/s INT16 2 Navigation algorithm Sourced from DVL during alignment, Hybrid velocities when in Hybrid mode
Fwd Ang Rate 0.011 deg/s +/-300deg/s INT16 2 Navigation Algorithm
Stbd Ang Rate 0.011 deg/s +/-300deg/s INT16 2 Navigation Algorithm
Dwn Ang Rate 0.011 deg/s +/-300deg/s INT16 2 Navigation Algorithm
Sound Velocity 0.03m/s 1375 to 1900 m/s UINT16 2 Calculated or Read As currently in use by the system
Temperature 0.01°C +/- 100°C INT16 2 Temperature sensor Sensor
Position Quality - - FLOAT32 4 Navigation Algorithm 2D Quality (CEP50)
Heading Quality 0.005° 0 to 180 deg UINT16 2 Navigation algorithm Set to 180 during alignment
Velocity Quality 1mm/s 0 to 30 m/s UINT16 2 Navigation algorithm 2D Quality, in vessel frame and based on DVL error velocity when in sensor mode
Status - - - - See Status table

Bit Fields

Status Bit Field name Notes/Bit Set
0 System Error No error reported by system = 0 System Error reported = 1
1 Mode Alignment mode = 0 Navigation mode = 1
2 Heading valid = 0 Invalid = 1
3 Altitude valid = 0 Invalid = 1
4 Velocity valid = 0 Invalid = 1
5 Depth valid = 0 Invalid = 1
6 Sound Velocity valid = 0 Invalid = 1
7 Temperature valid = 0 Invalid = 1
8 Spare Not Used
9 Position valid = 0 Invalid = 1
10 UTC Time valid = 0 Invalid = 1
11 Spare Not Used
12 Spare Not Used
13 Spare Not Used
14 Spare Not Used
15 Spare Not Used

Notes on HNAV Bit fields:

Navigation and Hybrid Mode:

  • The terms Navigation mode and Hybrid mode are used interchangeably in Sonardyne documentation and refer to the operation of the system once initial system startup and alignment are complete.

Invalid or old:

  • HNAV bit field for Altitude will be flagged as invalid (1) if data is invalid or if it is old. These data items are derived purely from the DVL sensor, which will often be configured to a slower update than the HNAV message, therefore the majority of Altitude flags will be marked as invalid.

Status fields:

  • Status fields indicate whether data (and associated quality metrics) are suitable for use e.g. as an input to a vehicle control system.

XLHNAV

The Extra Large Hybrid Navigation (XLHNAV) message includes all information required for the majority of vehicle guidance, control, and navigation applications. It has been designed to use native types that allow the full precision used internally to be output.
Integer fields will be initialised to 0 and floating point fields will be initialised to NaN (Not a Number). Once a field has been assigned a value, it will retain that value until updated - unless specified otherwise in the definition below. Single or logically grouped data values have a corresponding timestamp; this can be used from one message to the next to determine when data has been updated. The XLHNAV requires the Simple Binary Protocol to successfully decode the message. All data is transmitted LSB first.

Definition

Simple Binary Protocol ID = 1

Size = 595 bytes

Data Field Units Expected Range Data Source (see notes) Data Type Size(bytes) Notes
Version N/A 0 to 255 N/A UINT8 1 Currently version is 0
Time of Validity (UTC time) s - N/A Double 8 Relative to 1st Jan 1970
Time of Validity (Instrument time) s - N/A Double 8
UTC Time Source N/A Enum Time System UINT16 2 Last Used. (0 = None, 1 = ZDA, 2=ZDA+1PPS, 3=1PPS, 4=NTP)
UTC Time Sync Quality s - Time System Float 4
Time sync age s Time System Double 8 Time since last update applied
Latitude degs +/- 90deg Navigation Algorithm Double 8
Longitude degs +/- 180deg Navigation Algorithm Double 8
Depth m Navigation Algorithm Double 8
Orientation w Navigation Algorithm Double  8 Quaternion, available within 60s of startup
Orientation x Navigation Algorithm Double  8 Quaternion, available within 60s of startup
Orientation y Navigation Algorithm Double  8 Quaternion, available within 60s of startup
Orientation z Navigation Algorithm Double  8 Quaternion, available within 60s of startup
Velocity - Vehicle Forward m/s Navigation Algorithm Double 8 Sourced from and valid at DVL during alignment
Velocity - Vehicle Starboard m/s Navigation Algorithm Double 8 Sourced from and valid at DVL during alignment
Velocity - Vehicle Down m/s Navigation Algorithm Double 8 Sourced from and valid at DVL during alignment
Angular Rates - Vehicle Forward deg/s Navigation Algorithm Double 8
Angular Rates - Vehicle Starboard deg/s Navigation Algorithm Double 8
Angular Rates - Vehicle Down deg/s Navigation Algorithm Double 8
Acceleration - Vehicle Forward  m/s/s Navigation Algorithm Double 8 Valid at IMU measurement point, compensated for gravity
Acceleration - Vehicle Starboard  m/s/s Navigation Algorithm Double 8 Valid at IMU measurement point compensated for gravity
Acceleration - Vehicle Down m/s/s Navigation Algorithm Double 8 Valid at IMU measurement point compensated for gravity
Position Quality (1DRMS) m - Navigation Algorithm Float 4 2-D
Position Quality Error Ellipse Major Axis m Navigation Algorithm Float 4
Position Quality Error Ellipse Minor Axis m Navigation Algorithm Float 4
Position Quality Error Ellipse direction deg Navigation Algorithm Float 4
Depth Quality (std. dev). m Navigation Algorithm Float 4
2D Velocity Quality (1DRMS) m/s Navigation Algorithm Float 4
2D Velocity Error Ellipse Major Axis m/s Navigation Algorithm Float 4
2D Velocity Error Ellipse Minor Axis m/s Navigation Algorithm Float 4
2D Velocity Error Ellipse Direction deg Navigation Algorithm Float 4
Vertical Velocity Std Dev. m/s Navigation Algorithm Float 4
Heading Quality (std dev) deg Navigation Algorithm Float 4
Heave m Navigation Algorithm Float 4 Valid at vehicle CRP not affected by any configured remote point
IMU Bias Stability - Gyro X Navigation Algorithm Float 4 Mahalanobis distance on bias state update
IMU Bias Stability - Gyro Y Navigation Algorithm Float 4
IMU Bias Stability - Gyro Z Navigation Algorithm Float 4
IMU Bias Stability - Accel X Navigation Algorithm Float 4
IMU Bias Stability - Accel Y Navigation Algorithm Float 4
IMU Bias Stability - Accel Z Navigation Algorithm Float 4
Mode Status n/a Enum Navigation Algorithm UINT16 2 0 : Awaiting Position, 1 : Aligning, 2: : Navigating
DVL Beam 1 TOV (Instrument time) s DVL Double 8 Beam number using Sonardyne Beam number convention (note different from PD4) (see manual)
DVL Beam 1 Slant Range m DVL Float 4 Compensated for SV Note: Beam angles need to be taken into account and vary on different products (see manual)
DVL Beam 1 XC DVL Float 4 Cross Correlation is a measure of similarity between the expected and received signal. Excellent values are >90, good values >60 and acceptable values >40
DVL Beam 2 TOV (Instrument time) s DVL Double 8
DVL Beam 2 Slant Range m DVL Float 4
DVL Beam 2 XC DVL Float 4 Cross Correlation is a measure of similarity between the expected and received signal. Excellent values are >90, good values >60 and acceptable values >40
DVL Beam 3 TOV (Instrument time) s DVL Double 8
DVL Beam 3 Slant Range m DVL Float 4
DVL Beam 3 XC DVL Float 4 Cross Correlation is a measure of similarity between the expected and received signal. Excellent values are >90, good values >60 and acceptable values >40
DVL Beam 4 TOV (Instrument time) s DVL Double 8
DVL Beam 4 Slant Range m DVL Float 4
DVL Beam 4 XC DVL Float 4 Cross Correlation is a measure of similarity between the expected and received signal. Excellent values are >90, good values >60 and acceptable values >40
Altitude TOV (Instrument time) s DVL Double  8
Altitude m DVL Float 4 Mean of valid beams. Valid at DVL. Altitude only considered valid if the DVL observation has passed pre-filter (e.g. observation has / is being presented suitable for use in INS algorithm).
Sound Velocity TOV (Instrument Time) s System Double  8
Sound Velocity m/s System  Float 4 Sound speed source as configured by the system
Water Temperature TOV (Instrument Time) s System  Double 8
Water Temperature degC System Float 4 Best available sensor 
Error Status System UINT32 4 Bit 1: System Error, Bit 2: System Warning, Bit 3-32: Unused
Aiding Status TOV (Instrument Time) s Navigation Algorithm Double 8 Time the follow aiding status data was valid for.
DVL: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2 Kalman filter cycle runs at 1Hz
DVL: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
DVL: Last Observation TOV (Instrument time) s Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
DVL: Normalised Residual m/s Navigation Algorithm Float 4 Averaged normalised velocity residual for all accepted DVL observations in the last Kalman filter cycle
DVL: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all DVL observations in the last Kalman filter cycle
GNSS: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2 Kalman filter cycle runs at 1Hz
GNSS: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
GNSS: Last Observation TOV (Instrument time) s Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
GNSS: Normalised Residual m Navigation Algorithm Float 4 Averaged normalised position residual for all accepted GNSS observations in the last Kalman filter cycle
GNSS: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all GNSS observations in the last Kalman filter cycle
USBL: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2 Kalman filter cycle runs at 1Hz
USBL: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
USBL: Last Observation TOV (Instrument time) s Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
USBL: Normalised Residual m Navigation Algorithm Float 4 Averaged normalised position residual for all accepted USBL observations in the last Kalman filter cycle
USBL: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all USBL observations in the last Kalman filter cycle
XPOS: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2 Kalman filter cycle runs at 1Hz
XPOS: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
XPOS: Last Observation TOV (Instrument time) s Navigation Algorithm Double 8 Last observation accepted by INS  since start or most recent reset
XPOS: Normalised Residual m Navigation Algorithm Float 4 Averaged normalised position residual for all accepted XPOS observations in the last Kalman filter cycle
XPOS: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all XPOS observations in the last Kalman filter cycle
XVEL: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2 Kalman filter cycle runs at 1Hz
XVEL: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
XVEL: Last Observation TOV (Instrument time) s Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
XVEL: Normalised Residual m/s Navigation Algorithm Float 4 Averaged normalised velocity residual for all accepted XVEL observations in the last Kalman filter cycle
XVEL: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all XVEL observations in the last Kalman filter cycle
Depth: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2 Kalman filter cycle runs at 1Hz
Depth: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
Depth: Last Observation TOV (Instrument time) s Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
Depth: Normalised Residual m Navigation Algorithm Float 4 Averaged normalised depth residual for all accepted Depth observations in the last Kalman filter cycle
Depth: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all DEPTH observations in the last Kalman filter cycle
LBL1: Beacon Address Navigation Algorithm UINT16 2 LBL1-5 ordered by # of ranges
LBL1: SLAM Status Enum Navigation Algorithm UINT16 2 0: Off, 1: Depth SLAM, 2: 2-D SLAM, 3: 3-D SLAM
LBL1: Number of range observations in the last 60s Navigation Algorithm UINT16 2
LBL1: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL1: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL1: Last Observation TOV (Instrument time) Navigation Algorithm Double 8 Last observation accepted by INS  since start or most recent reset
LBL1: Range Residual m Navigation Algorithm Float 4 Averaged normalised residual for all accepted LBL1 range observations in the last Kalman filter cycle
LBL1: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all LBL1 range observations in the last Kalman filter cycle
LBL2: Beacon Address Navigation Algorithm UINT16 2 LBL1-5 ordered by # of ranges
LBL2: SLAM Status Enum Navigation Algorithm UINT16 2 0: Off, 1: Depth SLAM, 2: 2-D SLAM, 3: 3-D SLAM
LBL2: Number of range observations in the last 60s Navigation Algorithm UINT16 2
LBL2: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL2: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL2: Last Observation TOV (Instrument time) Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
LBL2: Range Residual m Navigation Algorithm Float 4 Averaged normalised residual for all accepted LBL2 range observations in the last Kalman filter cycle
LBL2: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all LBL2 range observations in the last Kalman filter cycle
LBL3: Beacon Address Navigation Algorithm UINT16 2 LBL1-5 ordered by # of ranges
LBL3: SLAM Status Enum Navigation Algorithm UINT16 2 0: Off, 1: Depth SLAM, 2: 2-D SLAM, 3: 3-D SLAM
LBL3: Number of range observations in the last 60s Navigation Algorithm UINT16 2
LBL3: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL3: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL3: Last Observation TOV (Instrument time) Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
LBL3: Range Residual m Navigation Algorithm Float 4 Averaged normalised residual for all accepted LBL3 range observations in the last Kalman filter cycle
LBL3: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all LBL3 range observations in the last Kalman filter cycle
LBL4: Beacon Address Navigation Algorithm UINT16 2 LBL1-5 ordered by # of ranges
LBL4: SLAM Status Enum Navigation Algorithm UINT16 2 0: Off, 1: Depth SLAM, 2: 2-D SLAM, 3: 3-D SLAM
LBL4: Number of range observations in the last 60s Navigation Algorithm UINT16 2
LBL4: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL4: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL4: Last Observation TOV (Instrument time) Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
LBL4: Range Residual m Navigation Algorithm Float 4 Averaged normalised residual for all accepted LBL4 range observations in the last Kalman filter cycle
LBL4: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all LBL4 range observations in the last Kalman filter cycle
LBL5: Beacon Address Navigation Algorithm UINT16 2 LBL1-5 ordered by # of ranges
LBL5: SLAM Status Enum Navigation Algorithm UINT16 2 0: Off, 1: Depth SLAM, 2: 2-D SLAM, 3: 3-D SLAM
LBL5: Number of range observations in the last 60s Navigation Algorithm UINT16 2
LBL5: Number of observations accepted in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL5: Number of observations rejected in last Kalman filter cycle Navigation Algorithm UINT16 2
LBL5: Last Observation TOV (Instrument time) Navigation Algorithm Double 8 Last observation accepted by INS since start or most recent reset
LBL5: Range Residual m Navigation Algorithm Float 4 Averaged normalised residual for all accepted LBL5 range observations in the last Kalman filter cycle
LBL5: Status Mask Navigation Algorithm UINT32 4 OR'd rejection status bits for all LBL5 range observations in the last Kalman filter cycle

Notes

Data Source

The following provides an overview of the different data sources identified in the table above. Where a note in the table above is available, this supersedes anything in these notes if there is a conflict.

Time System: The time system maintains the relationship between Instrument Time (time since start up) and UTC based on the user configuration. The time system is available and providing status from power on and is not impacted by any resets.

DVL: These data items are derived purely from the DVL sensor, the data parameters will be updated on each DVL observation, which depending on user configuration is either set at a requested frequency or set to use an external trigger.

System: These data items are collated at a system level for use within this and other messages.

Navigation Algorithm: These data items are available when the device has entered Hybrid Mode. If a fallback option is available from a secondary source (e.g. Pressure sensor for Depth), values may be provided when not in Navigation mode. Not all data will be available from the navigation algorithm immediately after a hard reset.

LBL Range Aiding

XLHNAV can accomodate information from up to 5 aiding LBL beacons. Information from the 5 beacons which have provided the most observations in the last 60 seconds will be shown.

Status Masks

The table below details the status masks for each sensor. Any blank field can be considered not used.

Bit Number DVL GNSS USBL XPOS XVEL Depth LBL
1 Zero Range Rate of change Rate of change Rate of change Rate of change Missing beacon info
2 Zero Velocity Quality Quality Quality Time Signal To Noise
3 Time Delta Time Time Time Invalid data Signal Level
4 Velocity Change Message Format Too few observations
5 Invalid Status Beacon ID Range exceeds min & max
6 Janus Error Predicted Range error
7 All Beams Invalid Correlation Score Limit exceeded
8 Range rate
9 Acoustic
10
11
12
13
14
15
16
17 Disabled Disabled Disabled Disabled Disabled Disabled
18 Sigma rejection Sigma rejection Sigma rejection Sigma rejection Sigma rejection sigma rejection
19 Time out Time out Time out Time out Time out Integrity
20 Navigation uncertainty too high Time out
21 Fix position rejected
22
23
24
25
26
27
28
29
30
31
32 Misc Misc Misc Misc Misc Misc Misc

The Long Navigation (LNAV) message is a generic navigation output from the SPRINT-Nav, populated by data from the Hybrid mode. All fields will be initialised to 0. Once a field has been assigned a value, it will retain that value until updated. The status bits should be used to determine when data is old/stale.

LNAV requires the Multiplex Protocol to seperate LNAV binary messages and is transmitted LSB first.

A Python LNAV Decoder is available on Sonardyne's Github

Definition

  • LNAV Multiplex Message ID (MID) = 224
  • LNAVUTC Multiplex Message ID (MID) = 232

Size = 97 bytes (99 bytes if COBS encoded)

Byte # (from 0) Field Name Units Data Source Data Type Notes
1–2 DLE STX 0x10 0x02 N/A See Multiplex Protocol
3–4 ID 0x10 0xE0 N/A See Multiplex Protocol
5–10 Time Tag 10⁻⁶ s (LNAV) / 10⁻⁵ s (LNAVUTC) System Uint48 LNAV is instrument time base (since power up), UTC for LNAVUTC (seconds since 1st Jan 1970, 0.01ms resolution
11–14 Latitude 2⁻³¹ × 90 deg Navigation Algorithm Int32 Latitude is north positive 0.5cm resolution, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
15–18 Longitude 2⁻³¹ × 180 deg Navigation Algorithm Int32 Longitude is east positive, 1cm resolution at equator, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
19–22 Depth 10⁻³ m Navigation Algorithm Int32 Depth below sea level, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Positive down.
23–24 Altitude 10⁻² m Navigation Algorithm Uint16 Height above seabed, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Altitude is calculated from the last received DVL message: valid beam ranges are averaged while accounting for their direction relative to DVL down. Vehicle roll/pitch and non-zero DVL mounting angles are not compensated for.
25–26 Roll 2⁻¹⁵ × 180 deg Navigation Algorithm Int16 Roll is the angle between the starboard axis and horizontal. Roll is positive when the starboard axis points below the horizontal (starboard down). Populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
27–28 Pitch 2⁻¹⁵ × 180 deg Navigation Algorithm Int16 Pitch is the angle between the forward axis and horizontal. Pitch is positive when the forward axis is pointed above the horizontal (bow up). Populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
29–30 Heading 2⁻¹⁵ × 180 deg Navigation Algorithm Uint16 Heading is the angle between North and the projection of the forward axis onto the horizontal, measured about the down direction (i.e. as seen from above). Populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
31–32 vN 10⁻³ m/s Navigation Algorithm Int16 Vehicle North velocity, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
33–34 vE 10⁻³ m/s Navigation Algorithm Int16 Vehicle East velocity, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
35–36 vDwn 10⁻³ m/s Navigation Algorithm Int16 Vehicle Down velocity, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
37–38 wFwd 10⁻² deg/s Navigation Algorithm Int16 Angular rate about forward axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Accelerations and angular rates are from the IMU, compensated for any gyro and accelerometer bias estimated by the system.
39–40 wStbd 10⁻² deg/s Navigation Algorithm Int16 Angular rate about starboard axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Accelerations and angular rates are from the IMU, compensated for any gyro and accelerometer bias estimated by the system.
41–42 wDwn 10⁻² deg/s Navigation Algorithm Int16 Angular rate about down axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Accelerations and angular rates are from the IMU, compensated for any gyro and accelerometer bias estimated by the system.
43–44 aFwd 10⁻³ m/s² Navigation Algorithm Int16 Forward acceleration, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Accelerations and angular rates are from the IMU, compensated for any gyro and accelerometer bias estimated by the system. Accelerations are valid at the IMU and are in vehicle frame if a SPRINT mounting angle has been configured. Compensated for gravity.
45–46 aStbd 10⁻³ m/s² Navigation Algorithm Int16 Starboard acceleration, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Accelerations and angular rates are from the IMU, compensated for any gyro and accelerometer bias estimated by the system. Accelerations are valid at the IMU and are in vehicle frame if a SPRINT mounting angle has been configured. Compensated for gravity.
47–48 aDwn 10⁻³ m/s² Navigation Algorithm Int16 Down acceleration, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Accelerations and angular rates are from the IMU, compensated for any gyro and accelerometer bias estimated by the system. Accelerations are valid at the IMU and are in vehicle frame if a SPRINT mounting angle has been configured. Compensated for gravity.
49–52 posMajor m Navigation Algorithm Float32 Horizontal position 1σ error ellipse, semi-major axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
53–56 posMinor m Navigation Algorithm Float32 Semi-minor axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
57–60 dirMajor deg Navigation Algorithm Float32 Direction of semi-major axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
61–64 stdDepth m Navigation Algorithm Float32 1σ depth error, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
65–68 stdLevN deg Navigation Algorithm Float32 1σ level error about North, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
69–72 stdLevE deg Navigation Algorithm Float32 1σ level error about East, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Roll and Pitch 1σ ≈ max(stdLevN, stdLevE) for roll/pitch ≪ 45°.
73–76 stdHeading deg Navigation Algorithm Float32 1σ heading error, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
77–80 velMajor m/s Navigation Algorithm Float32 Horizontal velocity 1σ error ellipse, semi-major axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Velocity RMS = `sqrt(velMajor² + velMinor²).
81–84 velMinor m/s Navigation Algorithm Float32 Semi-minor axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised. Velocity RMS = `sqrt(velMajor² + velMinor²).
85–88 dirVMajor deg Navigation Algorithm Float32 Direction of velocity semi-major axis, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
89–92 velDown m/s Navigation Algorithm Float32 1σ down velocity error, populated once hybrid mode has initialised, 0 if hybrid mode is not initialised.
93–94 Status N/A Navigation Algorithm Bit16 See LNAV Status Bit Fields
95 Checksum Navigation Algorithm Checksum: This is the byte-wise exclusive-OR of the pre-byte-stuffed fields: ID and Payload.
96–97 DLE ETX 0x10 0x03 Navigation Algorithm See Multiplex Protocol
  • Where a number is prepended by 0x, the following characters are a number in hexadecimal notation (e.g. 0x40 = 64).
  • Horizontal position statistics:
    • 1DRMS = sqrt(posMajor² + posMinor²)
    • CEP (50%) ≈ 0.589 × (posMajor + posMinor)
    • 1σ error ellipse represents 39.4% probability
    • 95% probability error ellipse = 2.447 × 1σ error ellipse.
  • The LNAV Roll, Pitch, and Heading are defined as Euler rotations.

Status Bit Fields

Status Bit Field Name Notes / Bit Set
0 bOrientationStatus Orientation invalid (e.g. AHRS not OK or unsettled).
1 bPosStatus Hybrid mode not OK or not initialised.
2 bAltitudeStatus 0 indicates that the altitude and DVL velocities have been updated in this message compared to the last time LNAV was sent.
1 indicates that the altitude and DVL velocities data are either old (no update from DVL since last LNAV message sent) or invalid.
3 Not Used
4 bOrientationSource 0 indicates orientation source = Aligning.
1 indicates orientation source = Hybrid mode.
5 bSubseaUSBLUsed 0 indicates data received and some or all used by the Hybrid mode within the last second; otherwise 1.
6 bDepthUsed 0 indicates data received and some or all used by the Hybrid mode within the last second; otherwise 1.
7 bDVLUsed 0 indicates data received and some or all used by the Hybrid mode within the last second; otherwise 1.
8 Not Used Reserved.
9 Not Used Reserved.
10 bXPOSUsed 0 indicates data received and some or all used by the Hybrid mode within the last second; otherwise 1.
11 bGPSUsed 0 indicates data received and some or all used by the Hybrid mode within the last second; otherwise 1. Includes GNSS height, if selected.
12 Not Used Reserved.
13 Not Used Reserved.
14 bEuler 1 indicates Roll, Pitch, and Heading are Euler rotations.
15 Not Used Reserved for future use.

Multiplex Protocol

The Multiplex Protocol uses the Byte Stuffing technique to separate binary messages. Byte stuffing ensures that unique control bytes (e.g. message delimiters) are not wrongly interpreted when they are part of a message payload.

In the Multiplex Protocol, the unique control byte is 0x10 - this is the 'Data Link Escape' (DLE). The DLE byte is used in the following cases: - For every DLE byte found within the message payload an extra DLE byte is inserted (stuffed). - When the DLE byte is placed before a 0x02 byte (the 'Start of Text' or STX byte), it is used to mark the start of the message. - When the DLE byte is placed before a 0x03 byte (the 'End of Text' or ETX byte), it is used to mark the end of the message.

Packet Format

Field DLE STX ID Payload Checksum DLE ETX
Size 2 Bytes 2 Bytes 0–2047 Bytes 1 Byte 2 Bytes

ID Field Format

Bit Field TS RES SID MID
Size 1 bit 1 bit 4 bits 10 bits (LSB)
Total Size: 2 Bytes

Example Message

The following example demonstrates data encoding using the Multiplex Protocol.

Data to encode:

0x00
0x01
0x02
0x03
0x04
0x0E
0x0F
0x10
0x11

Multiplex-Protocol-Encoded Message:

0x0A Packet Size

0x10 Message Start
0x02

0x00 ID
0x01

0x00 Message Payload 
0x01
0x02
0x03
0x04
0x0E
0x0F
0x10 < (Stuffed Byte)
0x10
0x11

0x00 Checksum

0x10 Message End
0x03