K3-1-2

NovAtel SPAN on OEM6 — Firmware Reference Key Information

Created 2020-06-08Updated 2026-07-18robot

  • Description: Key-information digest of NovAtel's SPAN on OEM6 Firmware Reference Manual (OM-20000144) — GNSS+INS message formats (ASCII/binary), command responses, the important SPAN commands and INS logs, plus Variable Lever Arm and Relative INS. Reference for configuring/parsing a SPAN GNSS/INS receiver
  • My Notion Note ID: K3-1-2
  • Created: 2020-06-08
  • Updated: 2026-07-18
  • License: Free to share: please credit Yu Zhang and link back to yuzhang.io

Table of Contents


1. Introduction

  • GNSS — Global Navigation Satellite System (absolute accuracy).
  • INS — Inertial Navigation System (continuity through GNSS-denied gaps).
  • SPAN — NovAtel's technology combining GNSS + INS into one solution, more accurate and reliable than either alone: absolute accuracy from GNSS + continuity from INS through difficult GNSS conditions. ("SPAN" is a NovAtel product name, not spelled out as an acronym in the manual; the manual does not use "tightly-coupled" — that's general domain terminology, describing how SPAN fuses raw GNSS + IMU in one filter.)
  • Base OEM6 commands/logs live in the OEM6 Family Firmware Reference Manual (OM-20000129); this manual (OM-20000144) covers only the SPAN-specific additions.

2. Messages

2.1 Message Formats

Three formats, distinguished by a suffix on the log/command name:

  • Abbreviated ASCII — no suffix; human-readable, no CRC (viewing only).
  • ASCIIA suffix.
  • BinaryB suffix.

(For binary commands, the output format is set by the message-type bits in the binary header, not by a suffix.)

Field types (Table 1): Char/UChar 1 B, Short/UShort 2 B, Long/ULong 4 B, Float 4 B (IEEE-754), Double 8 B (IEEE-754), Enum 4 B, String (null-terminated, 4-byte aligned in binary). GPSec is dual-form: ASCII = seconds as float; Binary = milliseconds as long.

2.2 ASCII Structure

  • Full/long ASCII record leads with #; the short ASCII header leads with %; abbreviated-ASCII output leads with <, and abbreviated-ASCII input commands have no leading sync char.
  • Header fields comma-delimited; the last header field ends with ; (begins the data); data fields comma-delimited; end of data marked by *.
  • Terminator: * + 8 hex digits (32-bit CRC) + CR LF, e.g. *1234ABCD[CR][LF]. The CRC covers all bytes except the leading # and the * before the checksum.
  • Full ASCII header fields: Sync #, Message, Port, Sequence#, %IdleTime, TimeStatus, Week, Seconds (GPSec), ReceiverStatus, Reserved, S/W Version, ;.

2.3 Binary Structure

  • Layout: Header + Data (variable) + CRC (4-byte 32-bit CRC over header+data).
  • Sync bytes: 0xAA 0x44 0x12 (long header). The short binary header uses 0xAA 0x44 0x13.
  • Header length is variable → always read the HeaderLength field. Header (Table 4): 3 sync bytes, HeaderLength, MessageID (UShort), MessageType (Char: bits 5–6 = format, bit 7 = response flag), PortAddress, MessageLength (body only), Sequence, IdleTime, TimeStatus, Week, ms (GPSec/ULong), ReceiverStatus, Reserved, S/W Version.

3. Responses

  • By default every input message gets a response (can be disabled with INTERFACEMODE). The response mirrors the input format (binary in → binary out, etc.).
  • Abbreviated: < + response string, e.g. <OK.
  • ASCII: full header with the message name suffixed R; body is a response string, e.g. #BESTPOSR,COM1,…;"OK"*<crc>.
  • Binary: standard header with the Response bit (bit 7 of MessageType) set; adds Response ID (Enum) + response text in hex (e.g. 0x4F4B = "OK").

4. SPAN Commands

Most important SPAN-specific commands (base OEM6 commands are in OM-20000129):

  • ALIGNMENTMODE — alignment method: UNAIDED / AIDED_STATIC / AIDED_TRANSFER / AUTOMATIC (default).
  • SETIMUORIENTATION — declare which IMU axis is aligned with gravity (non-default mounting); resets the INS filter; required before kinematic alignment.
  • SETIMUTOANTOFFSET — IMU-to-primary-antenna lever arm (x,y,z)(x,y,z) + uncertainties; set before/during alignment. (SETIMUTOANTOFFSET2 for the secondary antenna.)
  • SETINITAZIMUTH — seed a known azimuth to speed/aid coarse alignment (roll/pitch still from averaged IMU); resets the filter.
  • SETINSOFFSET — offset (x,y,z)(x,y,z) from the IMU for the reported output position/velocity point.
  • VEHICLEBODYROTATION — angular offset between the vehicle frame (direction of travel) and the SPAN body frame; only applied to output when APPLYVEHICLEBODYROTATION is enabled.
  • LEVERARMCALIBRATE — in-motion calibration of the IMU-to-antenna lever arm (runs to a max time or a target std-dev); result in the BESTLEVERARM log.
  • INSCOMMAND — enable / disable / reset INS positioning (disabling stops all INS position/velocity/attitude output).
  • INSZUPT — manual Zero-Velocity Update request (advanced; SPAN normally does ZUPTs automatically; unsafe while moving).
  • RELINSCONFIG — recommended way to configure Relative INS; sent at both master and rover (role ROVER/MASTER, port, baud, rate).
  • RELINSAUTOMATION — simpler plug-and-play Relative INS enable, configured at the rover only.

The command SETINSTRANSLATION does not exist in this manual — the real commands are SETINSOFFSET (output point offset) and SETIMUTOANTOFFSET (antenna lever arm).

5. INS Logs

Core solution + supporting logs (most run up to 100/125/200 Hz depending on IMU; INSCOV/INSUPDATE are 1 Hz):

  • INSPVA — most recent position + velocity + attitude (the core INS solution). INSPVAX adds standard deviations; INSPVAS is the short-header variant.
  • INSATT — attitude (roll/pitch/azimuth); INSATTX adds std devs.
  • INSPOS / INSVEL — position-only / N-E-Up velocity; …X variants add std devs.
  • INSCOV — position/attitude/velocity covariance (local-level frame), 1 Hz.
  • INSUPDATE — most recent INS measurement-update info, 1 Hz. (The log is INSUPDATE, not "INSUPDATESTATUS".)
  • RAWIMU / RAWIMUX / RAWIMUSX — raw accel/gyro (sequential Δv/Δθ) + IMU status; only meaningful at the full IMU rate (not with an ONTIME trigger). CORRIMUDATA — RAWIMU corrected for gravity / earth-rotation / sensor errors.
  • BESTGNSSPOS — best GNSS-only position (no INS), at the antenna phase center. Key fields: Sol Status (SOL_COMPUTED, INSUFFICIENT_OBS, …); Pos Type; Lat / Lon (deg) and Hgt (m, MSL) as Doubles; Lat σ / Lon σ / Hgt σ (m) as Floats; Diff_age (s) — a value of 0 means no differential correction was used; #SVs = number of satellites tracked. (BESTGNSSVEL = GNSS-only velocity; BESTPOS = best combined GNSS+INS position.)
  • BESTLEVERARM / BESTLEVERARM2 — computed IMU-to-primary/secondary-antenna lever arm.
  • RELINSPVA — Relative INS PVA (see §7).

6. Variable Lever Arm

  • For an IMU on a gimballed mount (not rigidly fixed) — the antenna lever arm changes as the IMU rotates.
  • Gimbal rotation angles must be fed back to SPAN via the INPUTGIMBALANGLE command (mount-body frame) at 1–50 Hz; if none is received for > 1 s, SPAN reverts to the static lever arm.
  • VARIABLELEVERARM log — the computed variable lever arm (SPAN computation frame). GIMBALLEDPVA log — INSPVA-format PVA referenced to the camera/mount frame (vs INSPVA which tracks true IMU orientation).
  • Frame-relation commands: SETIMUORIENTATION, SETGIMBALORIENTATION, GIMBALSPANROTATION, VEHICLEBODYROTATION.

7. Relative INS

  • Computes the relative position/velocity/attitude vector between two SPAN systems — a Master and a Rover. Master transmits corrections; Rover computes the relative solution and fills RELINSPVA (ONNEW, 1–20 Hz) and SYNCRELINSPVA (ONTIME, up to 200 Hz, rover only); RELINSPVA is echoed back to the Master.
  • Method: positions/velocities differenced in ECEF then rotated to local-level; eccentric output offsets can be set via SETINSOFFSET.
  • Setup: (1) establish a data link (e.g. radios); (2) enable via RELINSCONFIG (both units — recommended) or RELINSAUTOMATION (rover-only, simpler). Set RTKTIMEOUT 5 (base OEM6 command; default 60 s) for Relative INS. A model option must be enabled on both units.
  • Data-link bandwidth needed ≈ 864+108×(# obs)864 + 108 \times (\text{\# obs}) bits per second.

References

  • NovAtel. SPAN on OEM6 Firmware Reference Manual (OM-20000144, Rev 8). — source manual; §2 (messages), §4 (SPAN commands), §5 (SPAN logs), Ch. 6 (Variable Lever Arm), Ch. 7 (Relative INS).
  • NovAtel. OEM6 Family Firmware Reference Manual (OM-20000129). — base (non-SPAN) commands and logs.