sbgECom Library
5.2.590-stable
Interface SBG Systems IMU/AHRS/INS
|
The SBG_ECOM_CLASS_LOG_ECOM_0 (0x01)
message class encompasses all binary messages that can be output by the device.
In addition to outputting data, some messages can also be used to input aiding information, such as the SBG_ECOM_LOG_AIR_DATA (36).
The sbgECom binary logs are designed for high data rates with minimal payload size.
This protocol is ideal for both real-time stabilization/navigation and post-processing applications.
Each message encapsulates a coherent set of data and status information that can be fully interpreted without requiring additional context. Users can configure the output rate for each message based on their specific requirements, optimizing the management of transmission bandwidth.
Each log includes a monotonic timestamp in microseconds, representing the time since the sensor was powered up.
This timestamp can be converted to GPS Time of Week (ToW) or UTC time using the SBG_ECOM_LOG_UTC_TIME message.
When valid GPS time is available from a GNSS receiver, the SBG_ECOM_LOG_UTC_TIME
message provides both the timestamp and the corresponding GPS/UTC time.
This allows for straightforward conversion of any message timestamp to GPS/UTC time.
The following code sample demonstrates how to convert a message timestamp (msgTimeStampUs
) to absolute GPS Time of Week in milliseconds.
The variable lastUtcMsg
holds the latest valid SBG_ECOM_LOG_UTC_TIME
information received.
sbgBasicLogger
CLI tool. CLoggerContext
C++ implementation.The following list, provides a quick overview of all available logs for this message class.
It briefly describe which parameters are contained in each output log.
Name (Msg ID) | Description |
---|---|
SBG_ECOM_LOG_STATUS (01) | Status general, clock, com aiding, solution, heave |
SBG_ECOM_LOG_UTC_TIME (02) | Provides UTC time reference |
SBG_ECOM_LOG_IMU_DATA (03) | DEPRECATED: Synchronous body IMU rates and accelerations |
SBG_ECOM_LOG_IMU_SHORT (44) | Body IMU rates and accelerations. Synchronous or asynchronous depending of the INS. |
SBG_ECOM_LOG_EKF_EULER (06) | Includes roll, pitch, yaw and their accuracies on each axis |
SBG_ECOM_LOG_EKF_QUAT (07) | Includes the 4 quaternions values |
SBG_ECOM_LOG_EKF_NAV (08) | Position and velocities in NED coordinates with the accuracies on each axis |
SBG_ECOM_LOG_EKF_VEL_BODY (54) | INS velocity expressed in body/vehicle frame. |
SBG_ECOM_LOG_EKF_ROT_ACCEL_BODY (52) | Corrected Earth rate and gravity free rates and accelerations in body/vehicle frame. |
SBG_ECOM_LOG_EKF_ROT_ACCEL_NED (53) | Corrected Earth rate and gravity free rates and accelerations in NED navigation frame. |
SBG_ECOM_LOG_SHIP_MOTION (09) | Real time heave, surge, sway, accelerations and velocity |
SBG_ECOM_LOG_SHIP_MOTION_HP (32) | Delayed heave, surge, sway, accelerations and velocity |
SBG_ECOM_LOG_MAG (04) | Magnetic data with associated accelerometer on each axis |
SBG_ECOM_LOG_MAG_CALIB (05) | Magnetometer calibration data (raw buffer) |
SBG_ECOM_LOG_GPS1_VEL (13) | GNSS velocity from primary receiver |
SBG_ECOM_LOG_GPS1_POS (14) | GNSS position from primary receiver |
SBG_ECOM_LOG_GPS1_HDT (15) | GNSS true heading from primary receiver |
SBG_ECOM_LOG_GPS1_RAW (31) | GNSS raw data from primary receiver |
SBG_ECOM_LOG_GPS1_SAT (50) | GNSS satellite in view information from primary receiver |
SBG_ECOM_LOG_GPS2_VEL (16) | GNSS velocity from secondary receiver |
SBG_ECOM_LOG_GPS2_POS (17) | GNSS position from secondary receiver |
SBG_ECOM_LOG_GPS2_HDT (18) | GNSS true heading from secondary receiver |
SBG_ECOM_LOG_GPS2_RAW (38) | GNSS raw data from secondary receiver |
SBG_ECOM_LOG_GPS2_SAT (51) | GNSS satellite in view information from secondary receiver |
SBG_ECOM_LOG_ODO_VEL (19) | Provides odometer velocity measured by the device |
SBG_ECOM_LOG_AIR_DATA (36) | Barometric altimeter input/output for airdata support |
SBG_ECOM_LOG_DEPTH (47) | Depth sensor measurement log used for subsea navigation |
SBG_ECOM_LOG_DVL_BOTTOM_TRACK (29) | Doppler Velocity Log for bottom tracking data |
SBG_ECOM_LOG_DVL_WATER_TRACK (30) | Doppler Velocity log for water layer data |
SBG_ECOM_LOG_USBL (37) | Raw USBL position data for subsea navigation |
SBG_ECOM_LOG_EVENT_A (24) | Event marker sent when a signal is detected on Sync In A pin |
SBG_ECOM_LOG_EVENT_B (25) | Event marker sent when a signal is detected on Sync In B pin |
SBG_ECOM_LOG_EVENT_C (26) | Event marker sent when a signal is detected on Sync In C pin |
SBG_ECOM_LOG_EVENT_D (27) | Event marker sent when a signal is detected on Sync In D pin |
SBG_ECOM_LOG_EVENT_E (28) | Event marker sent when a signal is detected on Sync In E pin |
SBG_ECOM_LOG_EVENT_OUT_A (45) | Event marker used to timestamp each generated Sync Out A signal |
SBG_ECOM_LOG_EVENT_OUT_B (46) | Event marker used to timestamp each generated Sync Out B signal |
SBG_ECOM_LOG_DIAG (48) | Returns error, warning, info and debug messages |
SBG_ECOM_LOG_RTCM_RAW (49) | RTCM/NTRIP RAW data stream that can be used in post-processing |
SBG_ECOM_LOG_SESSION_INFO (55) | Session information, including device information and current settings. |
SBG_ECOM_LOG_PTP_STATUS (57) | Precise Time Protocol (PTP) status and metric values. |
In each message definition, you'll find details about the availability of the message for specific products and the firmware version in which it was introduced.
Some messages are specific to certain product capabilities, such as INS-only features or marine options.
For devices running up-to-date firmware, the new sbgInsRestApi can be used to easily query the list of supported output logs.
This can be done using a GET request to the following endpoint:
SBG Systems continuously improves its products by adding new features and outputs.
This includes introducing new sbgECom binary messages and updating existing ones with additional fields and data.
Each message payload definition specifies whether new fields have been added in various sbgECom releases.
It is essential to determine the sbgECom version implemented by your device, as described here.
For example, the SBG_ECOM_LOG_STATUS output log has been updated with two new fields over time, as shown below:
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since sensor is powered up | µs | uint32 | 4 | 0 |
GENERAL_STATUS | General device status (see STATUS_GENERAL_STATUS) | - | uint16 | 2 | 4 |
COM_STATUS_2 | Additional communication status (see STATUS_COM_STATUS_2) | - | uint16 | 2 | 6 |
COM_STATUS | Communication status (see STATUS_COM_STATUS) | - | uint32 | 4 | 8 |
AIDING_STATUS | Aiding equipment status (see STATUS_AIDING_STATUS) | - | uint32 | 4 | 12 |
RESERVED_2 | Reserved status field for future use | - | uint32 | 4 | 16 |
RESERVED_3 | Reserved field for future use | - | uint16 | 2 | 20 |
UP_TIME | System up time since the power on - 0 if N/A (added v1.7) | s | uint32 | 4 | 22 |
CPU_USAGE | Main CPU usage in percent - 0xFF if N/A (added v5.0) | % | uint8 | 1 | 23 |
Each new field addition corresponds to a specific sbgECom version, allowing developers to understand the evolution of the message and implement backward compatibility when necessary.
New fields may be added to the end of a message payload over time, but fields are never removed to maintain backward binary compatibility.
If a field becomes obsolete, it will be marked as reserved or deprecated.
If you use an older sbgECom implementation to parse messages from a firmware with a newer sbgECom protocol, the parsing should still function correctly.
However, you will not have access to any new fields or features introduced in the latest firmware.
The sbgECom protocol implementation ensures compatibility by checking if a message payload meets the minimum required size.
Any additional fields beyond this size are parsed optionally, based on the remaining payload data.
For reference on this mechanism, you can review the SBG_ECOM_LOG_STATUS
message parsing implementation in the sbgECom C library.
This sections covers output logs used to report device information, settings and for troubleshooting.
This log is sent by the device whenever an internal error, warning, or informational message is generated.
SBG_ECOM_LOG_DIAG (48)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
TYPE | Type of message reported (see TYPE) | - | uint8 | 1 | 4 |
ERROR_CODE | Error code, if applicable (see SbgErrorCode) | - | uint8 | 1 | 5 |
MESSAGE | Detailed message as a NULL-terminated C string | - | char[] | [0-4080] | 6 |
Value | Name | Description |
---|---|---|
0 | SBG_DEBUG_LOG_TYPE_ERROR | Indicates an error; should not occur during normal operation |
1 | SBG_DEBUG_LOG_TYPE_WARNING | Indicates a warning; may occur during normal operation |
2 | SBG_DEBUG_LOG_TYPE_INFO | Provides informational content, useful for troubleshooting |
3 | SBG_DEBUG_LOG_TYPE_DEBUG | Debug information, available only with specific firmware |
This log stores the RTCM raw data stream received by the INS/GNSS module for RTK/DGPS positioning modes.
The RTCM data stream may originate from a serial/Ethernet interface or be retrieved via the built-in NTRIP client.
The data is stored as received, without modification, allowing Qinertia to use it for post-processing workflows and debugging.
Each message can contain up to 4086 bytes of data to fit within a standard sbgECom protocol frame.
The RTCM messages may be fragmented across multiple log entries depending on their length.
SBG_ECOM_LOG_RTCM_RAW (49)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
RAW_BUFFER | Bytes containing raw RTCM data received by the INS. | - | void | [0-4086] | 0 |
This log periodically streams device information and settings as a JSON string.
Since the JSON string can be large, it is split into smaller chunks to prevent delays in data transmission and avoid serial port saturation.
Each chunk is sent using the frame structure below, and the host is responsible for reassembling the chunks to reconstruct the full JSON message.
A new session info message is transmitted every minute, allowing the host to retrieve and log the latest device information and settings at any time.
SBG_ECOM_LOG_SESSION_INFO (55)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
PAGE_INDEX | Zero-based index of the current chunk. | - | uint16 | 2 | 0 |
PAGE_COUNT | Total number of chunks in the current transmission. | - | uint16 | 2 | 2 |
DATA_SIZE | Size in bytes for the DATA field. | - | uint16 | 2 | 4 |
DATA | JSON data chunk, part of the full JSON message. | - | char[] | [0-64] | 6 |
In this section you can find all sbgECom logs related to status reporting.
This output combines all system status data, divided into several categories: General, Communications, Aiding.
This log is useful for advanced status information.
SBG_ECOM_LOG_STATUS (01)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since sensor is powered up | µs | uint32 | 4 | 0 |
GENERAL_STATUS | General device status (see STATUS_GENERAL_STATUS) | - | uint16 | 2 | 4 |
COM_STATUS_2 | Additional communication status (see STATUS_COM_STATUS_2) | - | uint16 | 2 | 6 |
COM_STATUS | Communication status (see STATUS_COM_STATUS) | - | uint32 | 4 | 8 |
AIDING_STATUS | Aiding equipment status (see STATUS_AIDING_STATUS) | - | uint32 | 4 | 12 |
RESERVED_2 | Reserved status field for future use | - | uint32 | 4 | 16 |
RESERVED_3 | Reserved field for future use | - | uint16 | 2 | 20 |
UP_TIME | System up time since the power on - 0 if N/A (added v1.7) | s | uint32 | 4 | 22 |
CPU_USAGE | Main CPU usage in percent - 0xFF if N/A (added v5.0) | % | uint8 | 1 | 23 |
COM_STATUS_2
field has been introduced in sbgECom version 4.0. In previous versions, this field was reserved and not used. Provides general device status and information such as the power supplies (main, IMU, GNSS), settings, temperature and data-logger.
Bit | Name | Type | Description |
---|---|---|---|
0 | SBG_ECOM_GENERAL_MAIN_POWER_OK | Mask | Set if main power supply is OK. |
1 | SBG_ECOM_GENERAL_IMU_POWER_OK | Mask | Set if IMU power supply is OK. |
2 | SBG_ECOM_GENERAL_GPS_POWER_OK | Mask | Set if GPS power supply is OK. |
3 | SBG_ECOM_GENERAL_SETTINGS_OK | Mask | Set if settings are correctly loaded. |
4 | SBG_ECOM_GENERAL_TEMPERATURE_OK | Mask | Set if temperature is within specified limits. |
5 | SBG_ECOM_GENERAL_DATALOGGER_OK | Mask | Set if the data-logger is working correctly. |
6 | SBG_ECOM_GENERAL_CPU_OK | Mask | Set if the CPU headroom is correct. |
Provide information on ports, tells is they are valid or saturated.
Bit | Name | Type | Description |
---|---|---|---|
0 | SBG_ECOM_PORTA_VALID | Mask | Set to 0 in case of low level communication error. |
1 | SBG_ECOM_PORTB_VALID | Mask | Set to 0 in case of low level communication error. |
2 | SBG_ECOM_PORTC_VALID | Mask | Set to 0 in case of low level communication error. |
3 | SBG_ECOM_PORTD_VALID | Mask | Set to 0 in case of low level communication error. |
4 | SBG_ECOM_PORTE_VALID | Mask | Set to 0 in case of low level communication error. |
5 | SBG_ECOM_PORTA_RX_OK | Mask | Set to 0 in case of saturation on PORT A input. |
6 | SBG_ECOM_PORTA_TX_OK | Mask | Set to 0 in case of saturation on PORT A output. |
7 | SBG_ECOM_PORTB_RX_OK | Mask | Set to 0 in case of saturation on PORT B input. |
8 | SBG_ECOM_PORTB_TX_OK | Mask | Set to 0 in case of saturation on PORT B output. |
9 | SBG_ECOM_PORTC_RX_OK | Mask | Set to 0 in case of saturation on PORT C input. |
10 | SBG_ECOM_PORTC_TX_OK | Mask | Set to 0 in case of saturation on PORT C output. |
11 | SBG_ECOM_PORTD_RX_OK | Mask | Set to 0 in case of saturation on PORT D input. |
12 | SBG_ECOM_PORTD_TX_OK | Mask | Set to 0 in case of saturation on PORT D output. |
13 | SBG_ECOM_PORTE_RX_OK | Mask | Set to 0 in case of saturation on PORT E input. |
14 | SBG_ECOM_PORTE_TX_OK | Mask | Set to 0 in case of saturation on PORT E output. |
15 | SBG_ECOM_ETH0_VALID | Mask | Set to 0 if the ETH 0 interface is either closed or in error. |
16 | SBG_ECOM_ETH1_VALID | Mask | Set to 0 if the ETH 1 interface is either closed or in error. |
17 | SBG_ECOM_ETH2_VALID | Mask | Set to 0 if the ETH 2 interface is either closed or in error. |
18 | SBG_ECOM_ETH3_VALID | Mask | Set to 0 if the ETH 3 interface is either closed or in error. |
19 | SBG_ECOM_ETH4_VALID | Mask | Set to 0 if the ETH 4 interface is either closed or in error. |
25 | SBG_ECOM_CAN_VALID | Mask | Set to 0 in case of low level communication error. |
26 | SBG_ECOM_CAN_RX_OK | Mask | Set to 0 in case of saturation on CAN Bus input buffer. |
27 | SBG_ECOM_CAN_TX_OK | Mask | Set to 0 in case of saturation on CAN Bus output buffer. |
28-30 | SBG_ECOM_CAN_BUS | Enum | CAN Bus status (see SBG_ECOM_CAN_BUS). |
Reports CAN bus status:
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_CAN_BUS_OFF | Bus OFF operation due to too many errors. |
1 | SBG_ECOM_CAN_BUS_TX_RX_ERR | Transmit or receive error. |
2 | SBG_ECOM_CAN_BUS_OK | The CAN bus is working correctly. |
3 | SBG_ECOM_CAN_BUS_ERROR | A general error has occurred on the CAN bus. |
Provide additional status on interfaces such as Ethernet.
Bit | Name | Type | Description |
---|---|---|---|
0 | SBG_ECOM_COM2_ETH0_RX_OK | Mask | Set to 0 in case of error on ETH0 input such as saturation. |
1 | SBG_ECOM_COM2_ETH0_TX_OK | Mask | Set to 0 in case of error on ETH0 output such as saturation. |
2 | SBG_ECOM_COM2_ETH1_RX_OK | Mask | Set to 0 in case of error on ETH1 input such as saturation. |
3 | SBG_ECOM_COM2_ETH1_TX_OK | Mask | Set to 0 in case of error on ETH1 output such as saturation. |
4 | SBG_ECOM_COM2_ETH2_RX_OK | Mask | Set to 0 in case of error on ETH2 input such as saturation. |
5 | SBG_ECOM_COM2_ETH2_TX_OK | Mask | Set to 0 in case of error on ETH2 output such as saturation. |
6 | SBG_ECOM_COM2_ETH3_RX_OK | Mask | Set to 0 in case of error on ETH3 input such as saturation. |
7 | SBG_ECOM_COM2_ETH3_TX_OK | Mask | Set to 0 in case of error on ETH3 output such as saturation. |
8 | SBG_ECOM_COM2_ETH4_RX_OK | Mask | Set to 0 in case of error on ETH4 input such as saturation. |
9 | SBG_ECOM_COM2_ETH4_TX_OK | Mask | Set to 0 in case of error on ETH4 output such as saturation. |
Tells which aiding data is received.
Bit | Name | Type | Description |
---|---|---|---|
0 | SBG_ECOM_AIDING_GPS1_POS_RECV | Mask | Set to 1 when valid GPS 1 position data is received |
1 | SBG_ECOM_AIDING_GPS1_VEL_RECV | Mask | Set to 1 when valid GPS 1 velocity data is received |
2 | SBG_ECOM_AIDING_GPS1_HDT_RECV | Mask | Set to 1 when valid GPS 1 true heading data is received |
3 | SBG_ECOM_AIDING_GPS1_UTC_RECV | Mask | Set to 1 when valid GPS 1 UTC time data is received |
4 | SBG_ECOM_AIDING_GPS2_POS_RECV | Mask | Set to 1 when valid GPS 2 position data is received |
5 | SBG_ECOM_AIDING_GPS2_VEL_RECV | Mask | Set to 1 when valid GPS 2 velocity data is received |
6 | SBG_ECOM_AIDING_GPS2_HDT_RECV | Mask | Set to 1 when valid GPS 2 true heading data is received |
7 | SBG_ECOM_AIDING_GPS2_UTC_RECV | Mask | Set to 1 when valid GPS 2 UTC time data is received |
8 | SBG_ECOM_AIDING_MAG_RECV | Mask | Set to 1 when valid Magnetometer data is received |
9 | SBG_ECOM_AIDING_ODO_RECV | Mask | Set to 1 when Odometer pulse is received |
10 | SBG_ECOM_AIDING_DVL_RECV | Mask | Set to 1 when valid DVL data is received |
11 | SBG_ECOM_AIDING_USBL_RECV | Mask | Set to 1 when valid USBL data is received |
12 | SBG_ECOM_AIDING_DEPTH_RECV | Mask | Set to 1 when valid Depth sensor data is received |
13 | SBG_ECOM_AIDING_AIR_DATA_RECV | Mask | Set to 1 when valid altitude and/or airspeed is received |
Provides UTC time reference and internal clock estimation metrics.
This message provides a time correspondence between the device TIME_STAMP
value and the actual UTC Time.
You should use this information to timestamp data to an absolute UTC or GPS time reference.
SBG_ECOM_LOG_UTC_TIME (02)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since sensor is powered up | µs | uint32 | 4 | 0 |
TIME_STATUS | UTC time and clock sync status (see TIME_STATUS) | - | uint16 | 2 | 4 |
YEAR | Year | year | uint16 | 2 | 6 |
MONTH | Month in Year [1 ... 12] | month | uint8 | 1 | 8 |
DAY | Day in Month [1 … 31] | d | uint8 | 1 | 9 |
HOUR | Hour in day [0 … 23] | h | uint8 | 1 | 10 |
MIN | Minute in hour [0 … 59] | min | uint8 | 1 | 11 |
SEC | Second in minute [0 … 60] | s | uint8 | 1 | 12 |
NANOSEC | Nanosecond of second | ns | uint32 | 4 | 13 |
GPS_TOW | GPS Time of week | ms | uint32 | 4 | 17 |
CLK_BIAS_STD | Estimated clock bias 1-σ standard deviation – Added in v4.0 | s | float | 4 | 21 |
CLK_SF_ERROR_STD | Estimated scale factor 1-σ standard deviation – Added in v4.0 | % | float | 4 | 25 |
CLK_RESIDUAL_ERR | Measured error between GNSS PPS and internal clock – Added in v4.0 | s | float | 4 | 29 |
SEC
field can report 60 seconds only when a leap second is inserted.Provide information on the internal clock estimation and UTC status.
Bit | Name | Type | Description |
---|---|---|---|
0 | HAS_CLOCK_INPUT | Mask | Set if a valid input clock signal (PPS) is detected. |
[1-4] | CLOCK_STATE | Enum | Define the internal clock estimation status (see CLOCK_STATE) |
5 | UTC_IS_ACCURATE | Mask | Set if the reported UTC time is accurate (i.e., aligned with PPS). |
[6-9] | UTC_STATUS | Enum | Define the UTC validity status (see UTC_STATUS) |
List internal clock alignment and correction state values:
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_CLOCK_STATE_ERROR | An error has occurred on the clock estimation. |
1 | SBG_ECOM_CLOCK_STATE_FREE_RUNNING | The clock is based on the internal crystal using latest estimated clock bias/sf. |
2 | SBG_ECOM_CLOCK_STATE_STEERING | A PPS has been detected and the clock is converging to it. |
3 | SBG_ECOM_CLOCK_STATE_VALID | The clock has converged to the PPS or is still considered to be accurate. |
List available UTC enum status:
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_UTC_STATUS_INVALID | The UTC time is not known and invalid. The firmware initial date time is used. |
1 | SBG_ECOM_UTC_STATUS_NO_LEAP_SEC | UTC time initialized but leap second is not known. Firmware leap second is used. |
2 | SBG_ECOM_UTC_STATUS_INITIALIZED | UTC time initialized with a fully resolved leap second information. |
Message that provides status and metrics regarding the embedded Precise Time Protocol (PTP) service.
It can report the time difference between the local INS time and an external GrandMaster clock.
The PTP service can operate in two different modes:
Master
: If the INS is the best available clock, it will broadcast PTP messages and act as a Grandmaster clock.Passive
: Only listen for a PTP Grandmaster clock and reports the time delta between internal INS clock and PTP Grandmaster clock.The message reporting the PTP status and accuracy is detailed below:
SBG_ECOM_LOG_PTP_STATUS (57)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since sensor is powered up. | µs | uint32 | 4 | 0 |
STATUS | State, transport and time scale status (see PTP_STATUS). | - | uint16 | 2 | 4 |
TIME_SCALE_OFFSET | Internal time scale offset, in seconds. | s | double | 8 | 6 |
LOCAL_CLOCK_IDENTITY | Local clock identity, UINT64_MAX if invalid. | - | uint64 | 4 | 14 |
LOCAL_CLOCK_PRIORITY1 | Local clock priority1 attribute. | - | uint8 | 4 | 22 |
LOCAL_CLOCK_PRIORITY2 | Local clock priority2 attribute. | - | uint8 | 4 | 23 |
LOCAL_CLOCK_CLASS | Local clock class attribute. | - | uint8 | 4 | 24 |
LOCAL_CLOCK_ACCURACY | Local clock accuracy. | - | uint8 | 4 | 25 |
LOCAL_CLOCK_LOG2_VARIANCE | Local clock variance expressed as an exponential (base 2). | - | uint16 | 4 | 26 |
LOCAL_CLOCK_TIME_SOURCE | Local clock time source. | - | uint8 | 4 | 28 |
MASTER_CLOCK_IDENTITY | Master clock identity, UINT64_MAX if invalid. | - | uint64 | 4 | 29 |
MASTER_CLOCK_PRIORITY1 | Master clock priority1 attribute. | - | uint8 | 4 | 37 |
MASTER_CLOCK_PRIORITY2 | Master clock priority2 attribute. | - | uint8 | 4 | 38 |
MASTER_CLOCK_CLASS | Master clock class attribute. | - | uint8 | 4 | 39 |
MASTER_CLOCK_ACCURACY | Master clock accuracy. | - | uint8 | 4 | 40 |
MASTER_CLOCK_LOG2_VARIANCE | Master clock variance expressed as an exponential (base 2). | - | uint16 | 4 | 41 |
MASTER_CLOCK_TIME_SOURCE | Master clock time source. | - | uint8 | 4 | 43 |
MASTER_IP_ADDRESS | Master clock IP address, UINT32_MAX if invalid. | - | uint32 | 4 | 44 |
MEAN_PATH_DELAY | Mean path delay to/from the master clock, NaN if not available. | s | float | 4 | 48 |
MEAN_PATH_DELAY_STD_DEV | Mean path delay standard deviation, NaN if not available. | s | float | 4 | 52 |
CLOCK_OFFSET | Offset between the local and master clocks, NaN if not available. | s | double | 8 | 56 |
CLOCK_OFFSET_STD_DEV | Master clock offset standard deviation, NaN if not available. | s | float | 4 | 64 |
CLOCK_FREQ_OFFSET | Offset between the frequency of the local and master clocks, NaN if not available. | Hz | float | 4 | 68 |
CLOCK_FREQ_OFFSET_STD_DEV | Frequency offset standard deviation, NaN if not available. | Hz | float | 4 | 72 |
MASTER_MAC_ADDRESS | Master clock MAC address, all fields to UINT32_MAX if invalid (added in v5.2). | - | uint8 | 6 | 76 |
The PTP_STATUS
field provides status details, including the main PTP mode, transport and internal time scale.
The field encodes several enumerations as described below:
Bits | Type | Name | Description |
---|---|---|---|
[0-2] | Enum | SBG_ECOM_LOG_PTP_STATE | Main PTP state. (see PTP_STATE). |
[3-5] | Enum | SBG_ECOM_LOG_PTP_TRANSPORT | PTP transport (added in v5.2). (see PTP_TRANSPORT). |
[6-7] | Reserved | Reserved for future use. | |
[8-10] | Enum | SBG_ECOM_LOG_PTP_TIME_SCALE | Internal time scale. (see PTP_TIME_SCALE). |
[11-15] | Reserved | Reserved for future use. |
Main PTP operating mode and status.
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_LOG_PTP_STATE_DISABLED | PTP is disabled. |
1 | SBG_ECOM_LOG_PTP_STATE_FAULTY | The device is in the faulty state. |
2 | SBG_ECOM_LOG_PTP_STATE_MASTER | The device is the domain master. |
3 | SBG_ECOM_LOG_PTP_STATE_PASSIVE | The device is passive. |
The transport defines how PTP messages are sent between devices. The main options are:
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_LOG_PTP_TRANSPORT_UDP | Transport is UDP. |
1 | SBG_ECOM_LOG_PTP_TRANSPORT_ETHERNET | Transport is Ethernet (IEEE 802.3). |
This enumeration specifies the time scale used as the reference for broadcasting PTP time. The reference time can also include a positive or negative offset value specified by TIME_SCALE_OFFSET
.
The IEEE 1588 standard specifies TAI (International Atomic Time) as the standard time scale for PTP (Precision Time Protocol).
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_LOG_PTP_TIME_SCALE_TAI | Reference time is TAI (International Atomic Time). |
1 | SBG_ECOM_LOG_PTP_TIME_SCALE_UTC | Reference time is UTC (Coordinated Universal Time). |
2 | SBG_ECOM_LOG_PTP_TIME_SCALE_GPS | Reference time is GPS (Global Positioning System Time). |
This section details the messages used to report Inertial Measurement Unit (IMU) data as measured by the device's accelerometers and gyroscopes.
IMU measurements represent physical quantities, specifically accelerations in (m/s²) and angular rates in (rad/s) expressed in the device's body frame (X, Y, Z axes).
All IMU measurements are factory-calibrated to compensate for thermal drift, alignment errors, scale factors, and non-linearity.
The IMU data is ready for use in an Inertial Navigation System (INS) filter to compute the device's orientation and navigation solution.
Additionally, if any sensor frame alignment adjustments are made (such as rotating the device within a vehicle's frame), these will affect the reported IMU data.
Inertial Measurement Unit (IMU) data can be processed either synchronously or asynchronously, depending on the product series.
The synchronization method determines how IMU data is collected, processed, and output in relation to the main INS computation loop.
For products like the ELLIPSE series and IMUs such as the PULSE-40, IMU data is synchronized with the main computation loop of the device.
Users can configure the output rate down to 1 Hz, with the device automatically downsampling the data using a moving average filter.
For instance, if the main sampling loop runs at 1 kHz and the output is set to 200 Hz, the device averages 5 samples to produce each output value.
Consequently, if 200 Hz is requested for both IMU and Extended Kalman Filter (EKF) data, exactly 200 messages per second for both IMU and EKF will be received.
High Performance INS products, such as the Navsight, Quanta, Ekinox, and Apogee series, operate with asynchronous IMU data.
In these systems, the IMU and INS do not share a common clock.
The IMU runs on its own clock, typically sampling at 200 Hz, while the INS operates its main processing loop also at 200 Hz but aligned with the GNSS time.
During each INS processing cycle, the latest IMU data messages are transmitted.
Depending on the timing discrepancies between the IMU and INS clocks, there may be 0, 1, or 2 IMU messages per INS processing cycle.
For example, if the system is set to output 200 Hz EKF data and IMU data triggered on a new data event, exactly 200 EKF messages per second will be received, while the number of IMU messages may slightly vary, influenced by the IMU clock's offset relative to the INS clock.
The message is deprecated and should not be used anymore.
It returns calibrated IMU data expressed in body frame as well as the IMU temperature.
SBG_ECOM_LOG_IMU_DATA (03)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since sensor is powered up | µs | uint32 | 4 | 0 |
IMU_STATUS | IMU status (see IMU_DATA_STATUS) | - | uint16 | 2 | 4 |
ACCEL_0_X | Acceleration along the X axis in the body frame. | m/s² | float | 4 | 6 |
ACCEL_0_Y | Acceleration along the Y axis in the body frame | m/s² | float | 4 | 10 |
ACCEL_0_Z | Acceleration along the Z axis in the body frame | m/s² | float | 4 | 14 |
GYRO_0_X | Rotation rate along the X axis in the body frame | rad/s | float | 4 | 18 |
GYRO_0_Y | Rotation rate along the Y axis in the body frame | rad/s | float | 4 | 22 |
GYRO_0_Z | Rotation rate along the Z axis in the body frame | rad/s | float | 4 | 26 |
TEMPERATURE | IMU internal average temperature. | °C | float | 4 | 30 |
ACCEL_1_X | Acceleration along the X axis in the body frame | m/s² | float | 4 | 34 |
ACCEL_1_Y | Acceleration along the Y axis in the body frame | m/s² | float | 4 | 38 |
ACCEL_1_Z | Acceleration along the Z axis in the body frame | m/s² | float | 4 | 42 |
GYRO_1_X | Rotation rate along the X axis in the body frame | rad/s | float | 4 | 46 |
GYRO_1_Y | Rotation rate along the Y axis in the body frame | rad/s | float | 4 | 50 |
GYRO_1_Z | Rotation rate along the Z axis in the body frame | rad/s | float | 4 | 54 |
ACCEL_0_*
and ACCEL_1_*
as well as GYRO_0_*
and GYRO_1_*
provide identical values. They are maintained for backward compatibility purposes.The IMU_DATA_STATUS field is a bitmask that indicates the health and status of the IMU.
Each bit represents a specific status flag, providing detailed information on various components of the IMU system.
Bit | Name | Description |
---|---|---|
0 (LSB) | SBG_ECOM_IMU_COM_OK | Set to 1 if communication with the IMU is working properly. |
1 | SBG_ECOM_IMU_STATUS_BIT | Set to 1 if the IMU passes internal BIT, including calibration and CPU checks. |
2 | SBG_ECOM_IMU_ACCEL_X_BIT | Set to 1 if the X-axis accelerometer passes PBIT and CBIT. |
3 | SBG_ECOM_IMU_ACCEL_Y_BIT | Set to 1 if the Y-axis accelerometer passes PBIT and CBIT. |
4 | SBG_ECOM_IMU_ACCEL_Z_BIT | Set to 1 if the Z-axis accelerometer passes PBIT and CBIT. |
5 | SBG_ECOM_IMU_GYRO_X_BIT | Set to 1 if the X-axis gyroscope passes PBIT and CBIT. |
6 | SBG_ECOM_IMU_GYRO_Y_BIT | Set to 1 if the Y-axis gyroscope passes PBIT and CBIT. |
7 | SBG_ECOM_IMU_GYRO_Z_BIT | Set to 1 if the Z-axis gyroscope passes PBIT and CBIT. |
8 | SBG_ECOM_IMU_ACCELS_IN_RANGE | Set to 1 if all accelerometers are operating within the specified range. |
9 | SBG_ECOM_IMU_GYROS_IN_RANGE | Set to 1 if all gyroscopes are operating within the specified range. |
The SBG_ECOM_LOG_IMU_SHORT
message reports IMU data, including accelerations and rotation rates expressed in the IMU body frame, in a compact and efficient format.
For High Performance INS, this log is asynchronous and can only be triggered on a New Data event.
For ELLIPSE v3 and IMUs like the PULSE-40, this log is synchronous ans can be output at any rate from 1 Hz up to the maximum rate supported by the device.
Typically 1 kHz for ELLIPSE v3 and up to 2 kHz for IMU-only products like the PULSE-40.
To ensure the best dynamic range and LSB accuracy, measurements are provided using int32 integers with a fixed scaling.
For high rotation rates above ~1833°/s, a different high range scaling is applied.
SBG_ECOM_LOG_IMU_SHORT (44)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since sensor is powered up | µs | uint32 | 4 | 0 |
IMU_STATUS | IMU status (see IMU_STATUS) | - | uint16 | 2 | 4 |
ACCELERATION_X | Acceleration along the X axis in the body frame (in LSB). | m/s² | int32 | 4 | 6 |
ACCELERATION_Y | Acceleration along the Y axis in the body frame (in LSB). | m/s² | int32 | 4 | 10 |
ACCELERATION_Z | Acceleration along the Z axis in the body frame (in LSB). | m/s² | int32 | 4 | 14 |
RATE_X | Rotation rate along the X axis in the body frame (in LSB). | rad/s | int32 | 4 | 18 |
RATE_Y | Rotation rate along the Y axis in the body frame (in LSB). | rad/s | int32 | 4 | 22 |
RATE_Z | Rotation rate along the Z axis in the body frame (in LSB). | rad/s | int32 | 4 | 26 |
TEMPERATURE | IMU internal average temperature (in LSB). | °C | int16 | 2 | 30 |
The temperature is using a fixed scaling of 256 LSB for 1°C: temperature = temperatureLSB / 256
The accelerations are using a fixed scaling of 1048576 LSB for 1 m/s²: acceleration = accelerationLSB / 1048576
The rotation rates are using two different scaling:
SBG_ECOM_IMU_GYROS_USE_HIGH_SCALE
flag is not set.SBG_ECOM_IMU_GYROS_USE_HIGH_SCALE
flag is set.The device automatically switches to high range scaling when any rotation rate component exceeds approximately 1833°/s.
The following code snippet illustrates how to convert rotation rates from LSB to rad/s:
The IMU_STATUS field is a bitmask that indicates the health and status of the IMU.
Each bit represents a specific status flag, providing detailed information on various components of the IMU system.
Bit | Name | Description |
---|---|---|
0 (LSB) | SBG_ECOM_IMU_COM_OK | Set if communication with the IMU is working properly. |
1 | SBG_ECOM_IMU_STATUS_BIT | Set if the IMU passes internal BIT, including calibration and CPU checks. |
2 | SBG_ECOM_IMU_ACCEL_X_BIT | Set if the X-axis accelerometer passes PBIT and CBIT. |
3 | SBG_ECOM_IMU_ACCEL_Y_BIT | Set if the Y-axis accelerometer passes PBIT and CBIT. |
4 | SBG_ECOM_IMU_ACCEL_Z_BIT | Set if the Z-axis accelerometer passes PBIT and CBIT. |
5 | SBG_ECOM_IMU_GYRO_X_BIT | Set if the X-axis gyroscope passes PBIT and CBIT. |
6 | SBG_ECOM_IMU_GYRO_Y_BIT | Set if the Y-axis gyroscope passes PBIT and CBIT. |
7 | SBG_ECOM_IMU_GYRO_Z_BIT | Set if the Z-axis gyroscope passes PBIT and CBIT. |
8 | SBG_ECOM_IMU_ACCELS_IN_RANGE | Set if all accelerometers are operating within the specified range. |
9 | SBG_ECOM_IMU_GYROS_IN_RANGE | Set if all gyroscopes are operating within the specified range. |
10 | SBG_ECOM_IMU_GYROS_USE_HIGH_SCALE | Set if the high scale scale factor is being used for rotation rates. |
The following logs present the output of the navigation unit, vehicle attitude (represented by Euler angles and quaternions), velocity, and position data.
These logs share common status flags and enumerations, which are detailed in the subsequent sections.
Additionally, this section includes logs that provide compensated vehicle accelerations and rotation rates.
Unlike raw IMU data, these measurements have been processed by the INS Extended Kalman Filter to correct for sensor biases and scale factors.
Furthermore, the effects of Earth's gravity and rotation rate are also removed, providing data that accurately reflects the vehicle's true dynamics.
This status provides information about the Extended Kalman Filter (EKF), indicating which aiding data is used and the current solution mode.
Bit | Name | Description |
---|---|---|
[0-3] | SBG_ECOM_SOLUTION_MODE | Indicates the Kalman filter computation mode (see SOLUTION_MODE) |
4 | SBG_ECOM_SOL_ATTITUDE_VALID | Set if attitude data is reliable (Roll/Pitch error within defined criteria). |
5 | SBG_ECOM_SOL_HEADING_VALID | Set if heading data is reliable (Heading error within defined criteria). |
6 | SBG_ECOM_SOL_VELOCITY_VALID | Set if velocity data is reliable (Velocity error within defined criteria). |
7 | SBG_ECOM_SOL_POSITION_VALID | Set if position data is reliable (Position error within defined criteria). |
8 | SBG_ECOM_SOL_VERT_REF_USED | Set if the vertical reference is used in the solution. |
9 | SBG_ECOM_SOL_MAG_REF_USED | Set if magnetometer is used in the solution. |
10 | SBG_ECOM_SOL_GPS1_VEL_USED | Set if GNSS 1 velocity is used in the solution. |
11 | SBG_ECOM_SOL_GPS1_POS_USED | Set if GNSS 1 position is used in the solution. |
13 | SBG_ECOM_SOL_GPS1_HDT_USED | Set if GNSS 1 true heading is used in the solution. |
14 | SBG_ECOM_SOL_GPS2_VEL_USED | Set if GNSS 2 velocity is used in the solution. |
15 | SBG_ECOM_SOL_GPS2_POS_USED | Set if GNSS 2 position is used in the solution. |
17 | SBG_ECOM_SOL_GPS2_HDT_USED | Set if GNSS 2 true heading is used in the solution. |
18 | SBG_ECOM_SOL_ODO_USED | Set if odometer velocity is used in the solution. |
19 | SBG_ECOM_SOL_DVL_BT_USED | Set if DVL bottom tracking velocity is used in the solution. |
20 | SBG_ECOM_SOL_DVL_WT_USED | Set if DVL water layer velocity is used in the solution. |
24 | SBG_ECOM_SOL_USBL_USED | Set if USBL position is used in the solution. |
25 | SBG_ECOM_SOL_AIR_DATA_USED | Set if altitude or true airspeed is used in the solution. |
26 | SBG_ECOM_SOL_ZUPT_USED | Set if a Zero Velocity Update (ZUPT) is is used in the solution. |
27 | SBG_ECOM_SOL_ALIGN_VALID | Set if sensor alignment and residual sensors errors have fully converged. |
28 | SBG_ECOM_SOL_DEPTH_USED | Set if depth sensor is used in the solution (subsea navigation). |
29 | SBG_ECOM_SOL_ZARU_USED | Set if a Zero Angular Rate Update (ZARU) is used in the solution. |
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_SOL_MODE_UNINITIALIZED | Kalman filter is not initialized; data is invalid. |
1 | SBG_ECOM_SOL_MODE_VERTICAL_GYRO | Computes roll and pitch; heading and position drift freely. |
2 | SBG_ECOM_SOL_MODE_AHRS | Full orientation with heading reference; navigation data may drift. |
3 | SBG_ECOM_SOL_MODE_NAV_VELOCITY | Deprecated. Not in use. |
4 | SBG_ECOM_SOL_MODE_NAV_POSITION | Full computation of attitude, velocity, and position. |
This log provides the Euler angles (roll, pitch, yaw) and their associated accuracies, along with the AHRS/INS solution status.
SBG_ECOM_LOG_EKF_EULER (06)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
ROLL | Roll angle | rad | float | 4 | 4 |
PITCH | Pitch angle | rad | float | 4 | 8 |
YAW | Yaw angle (geographic heading) | rad | float | 4 | 12 |
ROLL_ACC | 1σ standard deviation of roll angle accuracy | rad | float | 4 | 16 |
PITCH_ACC | 1σ standard deviation of pitch angle accuracy | rad | float | 4 | 20 |
YAW_ACC | 1σ standard deviation of yaw angle accuracy | rad | float | 4 | 24 |
SOLUTION_STATUS | INS solution status (see SOLUTION_STATUS) | - | uint32 | 4 | 28 |
MAG_DECL | Local magnetic declination, positive East. | rad | float | 4 | 32 |
MAG_INCL | Local magnetic inclination, positive Down. | rad | float | 4 | 36 |
This log provides the INS orientation using quaternions which avoid gimbal lock and are valid for all orientations.
It also includes the standard deviation accuracies for roll, pitch, and yaw angles, along with the AHRS/INS solution status.
SBG_ECOM_LOG_EKF_QUAT (07)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
Q0 | First quaternion parameter (W component) | - | float | 4 | 4 |
Q1 | Second quaternion parameter (X component) | - | float | 4 | 8 |
Q2 | Third quaternion parameter (Y component) | - | float | 4 | 12 |
Q3 | Fourth quaternion parameter (Z component) | - | float | 4 | 16 |
ROLL_ACC | 1σ standard deviation of roll angle accuracy | rad | float | 4 | 20 |
PITCH_ACC | 1σ standard deviation of pitch angle accuracy | rad | float | 4 | 24 |
YAW_ACC | 1σ standard deviation of yaw angle accuracy | rad | float | 4 | 28 |
SOLUTION_STATUS | INS solution status (see SOLUTION_STATUS) | - | uint32 | 4 | 32 |
MAG_DECL | Local magnetic declination, positive East. | rad | float | 4 | 36 |
MAG_INCL | Local magnetic inclination, positive Down. | rad | float | 4 | 40 |
This log provides the INS velocity in the North-East-Down (NED) coordinate system and position in Latitude, Longitude, and Altitude.
It also includes accuracy parameters for each measurement along with the INS solution status.
SBG_ECOM_LOG_EKF_NAV (08)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
VELOCITY_N | Velocity in the North direction | m/s | float | 4 | 4 |
VELOCITY_E | Velocity in the East direction | m/s | float | 4 | 8 |
VELOCITY_D | Velocity in the Down direction | m/s | float | 4 | 12 |
VELOCITY_N_ACC | 1σ standard deviation of velocity accuracy in North direction | m/s | float | 4 | 16 |
VELOCITY_E_ACC | 1σ standard deviation of velocity accuracy in East direction | m/s | float | 4 | 20 |
VELOCITY_D_ACC | 1σ standard deviation of velocity accuracy in Down direction | m/s | float | 4 | 24 |
LATITUDE | Geographic latitude, positive North. | ° | double | 8 | 28 |
LONGITUDE | Geographic longitude, positive East. | ° | double | 8 | 36 |
ALTITUDE | Altitude above Mean Sea Level (MSL), positive upward. | m | double | 8 | 44 |
UNDULATION | Difference between geoid and ellipsoid altitude | m | float | 4 | 52 |
LATITUDE_ACC | 1σ standard deviation of latitude accuracy | m | float | 4 | 56 |
LONGITUDE_ACC | 1σ standard deviation of longitude accuracy | m | float | 4 | 60 |
ALTITUDE_ACC | 1σ standard deviation of vertical position accuracy | m | float | 4 | 64 |
SOLUTION_STATUS | INS solution status (see SOLUTION_STATUS) | - | uint32 | 4 | 68 |
This log provides the INS velocity expressed in the body/vehicle frame.
When the INS is correctly configured, the body frame aligns with the vehicle frame.
For instance, in a car, the X-axis points forward, and the Y-axis points to the right.
SBG_ECOM_LOG_EKF_VEL_BODY (54)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
SOLUTION_STATUS | INS solution status (see SOLUTION_STATUS) | - | uint32 | 4 | 4 |
VELOCITY_X | Velocity along the X-axis (forward direction in vehicle frame) | m/s | float | 4 | 8 |
VELOCITY_Y | Velocity along the Y-axis (right direction in vehicle frame) | m/s | float | 4 | 12 |
VELOCITY_Z | Velocity along the Z-axis (downward direction in vehicle frame) | m/s | float | 4 | 16 |
VELOCITY_X_ACC | 1σ standard deviation of velocity accuracy along the X-axis | m/s | float | 4 | 20 |
VELOCITY_Y_ACC | 1σ standard deviation of velocity accuracy along the Y-axis | m/s | float | 4 | 24 |
VELOCITY_Z_ACC | 1σ standard deviation of velocity accuracy along the Z-axis | m/s | float | 4 | 28 |
This log provides the corrected rotation rates and accelerations in the INS body/vehicle frame.
The data is compensated by the Navigation Filter for sensor bias, scale factor, earth rotation, and gravity.
SBG_ECOM_LOG_EKF_ROT_ACCEL_BODY (52)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
SOLUTION_STATUS | INS solution status (see SOLUTION_STATUS) | - | uint32 | 4 | 4 |
RATE_X | Rotation rate around the X axis | rad/s | float | 4 | 8 |
RATE_Y | Rotation rate around the Y axis | rad/s | float | 4 | 12 |
RATE_Z | Rotation rate around the Z axis | rad/s | float | 4 | 16 |
ACCELERATION_X | Acceleration along the X axis | m/s² | float | 4 | 20 |
ACCELERATION_Y | Acceleration along the Y axis | m/s² | float | 4 | 24 |
ACCELERATION_Z | Acceleration along the Z axis | m/s² | float | 4 | 28 |
This log provides the corrected rotation rates and accelerations in the North, East, Down (NED) navigation frame.
The data is compensated by the Navigation Filter for sensor bias, scale factor, earth rotation, and gravity.
This log is particularly useful for determining a vehicle's turn rate, such as the down rotation rate.
SBG_ECOM_LOG_EKF_ROT_ACCEL_NED (53)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
SOLUTION_STATUS | INS solution status (see SOLUTION_STATUS) | - | uint32 | 4 | 4 |
RATE_N | Rotation rate around the North axis in the navigation frame | rad/s | float | 4 | 8 |
RATE_E | Rotation rate around the East axis in the navigation frame | rad/s | float | 4 | 12 |
RATE_D | Rotation rate around the Down axis in the navigation frame | rad/s | float | 4 | 16 |
ACCELERATION_N | Acceleration along the North axis in the navigation frame | m/s² | float | 4 | 20 |
ACCELERATION_E | Acceleration along the East axis in the navigation frame | m/s² | float | 4 | 24 |
ACCELERATION_D | Acceleration along the Down axis in the navigation frame | m/s² | float | 4 | 28 |
This section covers output measurements specific to marine applications, including Surge, Sway, and Heave.
High-performance INS units with marine options support both real-time and delayed heave measurements.
The ELLIPSE Series, however, offers real-time heave measurements only, without surge or sway channels.
Real-time heave delivers immediate data, whereas delayed heave offers higher accuracy with a 150-second time delay.
Real-time and delayed ship motion outputs share common conventions, message structures, status flags, and enumerations, as detailed below.
Ship motion measurements are defined in a vessel-specific coordinate frame:
The heave measurements are affected by the selected output monitoring point and will be re-located accordingly.
However, surge/sway/velocity and accelerations values are only valid when output at the IMU monitoring point.
The status field indicates the validity and availability of the ship motion output fields.
It is crucial to check this status to determine which fields are active and if the data is valid.
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_HEAVE_VALID | Set if heave has stabilized (see SBG_ECOM_HEAVE_VALID) |
1 | SBG_ECOM_HEAVE_VEL_AIDED | Set if the heave output is compensated for transient accelerations |
2 | SBG_ECOM_HEAVE_SURGE_SWAY_INCLUDED | Set if surge and sway components are included in this output |
3 | SBG_ECOM_HEAVE_PERIOD_INCLUDED | Set if the swell period is provided |
4 | SBG_ECOM_HEAVE_PERIOD_VALID | Set if the swell period data is valid |
5 | SBG_ECOM_HEAVE_SWELL_MODE | Set if real-time heave uses swell mode computations |
The SBG_ECOM_HEAVE_VALID
flag indicates whether the heave measurement is valid and stable, as it relies on high-pass filtering that requires convergence.
This flag is cleared under the following conditions:
This log provides real-time ship motion data, including main heave period, surge, sway, heave, velocity, and accelerations.
SBG_ECOM_LOG_SHIP_MOTION (09)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
HEAVE_PERIOD | Main heave period | s | float | 4 | 4 |
SURGE | Surge longitudinal displacement (positive forward) | m | float | 4 | 8 |
SWAY | Sway lateral displacement (positive right) | m | float | 4 | 12 |
HEAVE | Heave vertical displacement (positive down) | m | float | 4 | 16 |
ACCEL_X | Longitudinal acceleration (positive forward) | m/s² | float | 4 | 20 |
ACCEL_Y | Lateral acceleration (positive right) | m/s² | float | 4 | 24 |
ACCEL_Z | Vertical acceleration (positive down) | m/s² | float | 4 | 28 |
VEL_X | Longitudinal velocity (positive forward) | m/s | float | 4 | 32 |
VEL_Y | Lateral velocity (positive right) | m/s | float | 4 | 36 |
VEL_Z | Vertical velocity (positive down) | m/s | float | 4 | 40 |
STATUS | Ship motion output status (see SHIP_MOTION_STATUS) | - | uint32 | 4 | 28 |
STATUS
bitmask.This log provides delayed heave measurements, offering higher accuracy compared to real-time at the cost of approximately 150 seconds of delayed output.
The timestamp reported in the message reflects the actual time of data validity.
The data corresponds to conditions roughly 150 seconds earlier than other logs transmitted at the same time.
SBG_ECOM_LOG_SHIP_MOTION_HP (32)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
HEAVE_PERIOD | Reserved for future use. Always reported as 0 | s | float | 4 | 4 |
SURGE | Reserved for future use. Always reported as 0 | m | float | 4 | 8 |
SWAY | Reserved for future use. Always reported as 0 | m | float | 4 | 12 |
HEAVE | Heave vertical displacement (positive down) | m | float | 4 | 16 |
ACCEL_X | Reserved for future use. Always reported as 0 | m/s² | float | 4 | 20 |
ACCEL_Y | Reserved for future use. Always reported as 0 | m/s² | float | 4 | 24 |
ACCEL_Z | Vertical acceleration (positive down) | m/s² | float | 4 | 28 |
VEL_X | Reserved for future use. Always reported as 0 | m/s | float | 4 | 32 |
VEL_Y | Reserved for future use. Always reported as 0 | m/s | float | 4 | 36 |
VEL_Z | Vertical velocity (positive down) | m/s | float | 4 | 40 |
STATUS | Ship motion output status (see SHIP_MOTION_STATUS) | - | uint32 | 4 | 28 |
SBG_ECOM_LOG_SHIP_MOTION_HP
message only computes and outputs delayed heave, vertical velocity and acceleration. STATUS
bitmask is set accordingly.The following logs provide the navigation unit's output, including Euler angles, quaternions, velocity and position.
These logs share common status flags and enumerations, detailed below.
This section details the velocity and course information from the primary or secondary GNSS receiver.
The timestamp reflects the actual time of the GNSS velocity data, independent of the main processing loop.
SBG_ECOM_LOG_GPS1_VEL (13)
, SBG_ECOM_LOG_GPS2_VEL (16)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since sensor was powered up | µs | uint32 | 4 | 0 |
STATUS_TYPE | Velocity solution type and status (see GPS_VEL_STATUS_TYPE) | - | uint32 | 4 | 4 |
TOW | GPS Time of Week | ms | uint32 | 4 | 8 |
VEL_N | Velocity in North direction | m/s | float | 4 | 12 |
VEL_E | Velocity in East direction | m/s | float | 4 | 16 |
VEL_D | Velocity in Down direction | m/s | float | 4 | 20 |
VEL_ACC_N | 1σ Accuracy in North direction | m/s | float | 4 | 24 |
VEL_ACC_E | 1σ Accuracy in East direction | m/s | float | 4 | 28 |
VEL_ACC_D | 1σ Accuracy in Down direction | m/s | float | 4 | 32 |
COURSE | True direction of motion over ground | ° | float | 4 | 36 |
COURSE_ACC | 1σ course accuracy | ° | float | 4 | 40 |
The STATUS_TYPE
field provides both the GNSS velocity solution status and the type of computed velocity, encoded as two separate enumerations.
Bits | Type | Name | Description |
---|---|---|---|
[0-5] | Enum | SBG_ECOM_GPS_VEL_STATUS | The GPS velocity status (see GPS_VEL_STATUS). |
[6-11] | Enum | SBG_ECOM_GPS_VEL_TYPE | The GPS velocity type (see GPS_VEL_STATUS). |
Indicates the general status of the GNSS regarding velocity computation.
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_VEL_SOL_COMPUTED | A valid solution has been computed. |
1 | SBG_ECOM_VEL_INSUFFICIENT_OBS | Not enough valid SVs to compute a solution. |
2 | SBG_ECOM_VEL_INTERNAL_ERROR | An internal error has occurred. |
3 | SBG_ECOM_VEL_LIMIT | Velocity limit exceeded. |
Specifies the type of the computed velocity solution.
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_VEL_NO_SOLUTION | No valid velocity solution available. |
1 | SBG_ECOM_VEL_UNKNOWN_TYPE | An unknown solution type has been computed. |
2 | SBG_ECOM_VEL_DOPPLER | A Doppler velocity has been computed. |
3 | SBG_ECOM_VEL_DIFFERENTIAL | A velocity has been determined by calculating the difference between two sequential position measurements. |
This section provides position information from the primary or secondary GNSS receiver.
The timestamp indicates the actual GPS position data time, not synchronized with the main processing loop.
SBG_ECOM_LOG_GPS1_POS (14)
, SBG_ECOM_LOG_GPS2_POS (17)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
STATUS_TYPE | Position solution type and status (see GPS_POS_STATUS_TYPE) | - | uint32 | 4 | 4 |
TOW | GNSS Time of Week | ms | uint32 | 4 | 8 |
LATITUDE | Latitude, positive North | ° | double | 8 | 12 |
LONGITUDE | Longitude, positive East | ° | double | 8 | 20 |
ALTITUDE | Altitude Above Mean Sea Level | m | double | 8 | 28 |
UNDULATION | Altitude difference between the geoid and the Ellipsoid | m | float | 4 | 36 |
LAT_ACC | 1σ Latitude Accuracy | m | float | 4 | 40 |
LONG_ACC | 1σ Longitude Accuracy | m | float | 4 | 44 |
ALTI_ACC | 1σ Altitude Accuracy | m | float | 4 | 48 |
NUM_SV_USED | Number of space vehicles used in GNSS solution - 0xFF if N/A (since v1.4) | - | uint8 | 1 | 52 |
BASE_STATION_ID | ID of the DGPS/RTK base station in use - 0xFFFF if N/A (since v1.4) | - | uint16 | 2 | 53 |
DIFF_AGE | Differential data age - 0xFFFF if N/A (since v1.4) | 0.01s | uint16 | 2 | 55 |
NUM_SV_TRACKED | Number of tracked SV - 0xFF if N/A (since v4.0) | - | uint8 | 1 | 57 |
STATUS_EXT | Interference/spoofing status (see GPS_POS_STATUS_EXT). (since v4.0) | - | uint32 | 4 | 58 |
The STATUS_TYPE
field provides both the GNSS position solution status and the type of computed position, encoded as two separate enumerations.
It also includes bitmasks to reports which signals are being used to compute the solution.
Bits | Type | Name | Description |
---|---|---|---|
[0-5] | Enum | SBG_ECOM_GPS_POS_STATUS | GNSS position status (see GPS_POS_STATUS) |
[6-11] | Enum | SBG_ECOM_GPS_POS_TYPE | GNSS position type (see GPS_POS_TYPE) |
12 | Mask | SBG_ECOM_GPS_POS_GPS_L1_USED | Set if GPS L1CA/L1P is used in the solution |
13 | Mask | SBG_ECOM_GPS_POS_GPS_L2_USED | Set if GPS L2P/L2C is used in the solution |
14 | Mask | SBG_ECOM_GPS_POS_GPS_L5_USED | Set if GPS L5 is used in the solution |
15 | Mask | SBG_ECOM_GPS_POS_GLO_L1_USED | Set if GLONASS L1CA is used in the solution |
16 | Mask | SBG_ECOM_GPS_POS_GLO_L2_USED | Set if GLONASS L2C/L2P is used in the solution |
17 | Mask | SBG_ECOM_GPS_POS_GLO_L3_USED | Set if GLONASS L3 is used in the solution |
18 | Mask | SBG_ECOM_GPS_POS_GAL_E1_USED | Set if Galileo E1 is used in the solution |
19 | Mask | SBG_ECOM_GPS_POS_GAL_E5A_USED | Set if Galileo E5a is used in the solution |
20 | Mask | SBG_ECOM_GPS_POS_GAL_E5B_USED | Set if Galileo E5b is used in the solution |
21 | Mask | SBG_ECOM_GPS_POS_GAL_E5ALT_USED | Set if Galileo E5 AltBoc is used in the solution |
22 | Mask | SBG_ECOM_GPS_POS_GAL_E6_USED | Set if Galileo E6 is used in the solution |
23 | Mask | SBG_ECOM_GPS_POS_BDS_B1_USED | Set if BeiDou B1 is used in the solution |
24 | Mask | SBG_ECOM_GPS_POS_BDS_B2_USED | Set if BeiDou B2 is used in the solution |
25 | Mask | SBG_ECOM_GPS_POS_BDS_B3_USED | Set if BeiDou B3 is used in the solution |
26 | Mask | SBG_ECOM_GPS_POS_QZSS_L1_USED | Set if QZSS L1CA is used in the solution |
27 | Mask | SBG_ECOM_GPS_POS_QZSS_L2_USED | Set if QZSS L2C is used in the solution |
28 | Mask | SBG_ECOM_GPS_POS_QZSS_L5_USED | Set if QZSS L5 is used in the solution |
29 | Mask | SBG_ECOM_GPS_POS_QZSS_L6_USED | Set if QZSS L6 is used in the solution |
Specifies the type of the computed velocity solution.
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_POS_SOL_COMPUTED | A valid solution has been computed |
1 | SBG_ECOM_POS_INSUFFICIENT_OBS | Not enough valid SV to compute a solution |
2 | SBG_ECOM_POS_INTERNAL_ERROR | An internal error has occurred |
3 | SBG_ECOM_POS_HEIGHT_LIMIT | The height limit has been exceeded |
Specifies the type of the computed velocity solution.
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_POS_NO_SOLUTION | No valid solution available |
1 | SBG_ECOM_POS_UNKNOWN_TYPE | An unknown solution type has been computed |
2 | SBG_ECOM_POS_SINGLE | Single point solution position |
3 | SBG_ECOM_POS_PSRDIFF | Standard Pseudorange Differential Solution (DGPS) |
4 | SBG_ECOM_POS_SBAS | SBAS satellite used for differential corrections |
5 | SBG_ECOM_POS_OMNISTAR | Omnistar VBS Position (L1 sub-meter) |
6 | SBG_ECOM_POS_RTK_FLOAT | Floating RTK ambiguity solution (20 cm RTK) |
7 | SBG_ECOM_POS_RTK_INT | Integer RTK ambiguity solution (2 cm RTK) |
8 | SBG_ECOM_POS_PPP_FLOAT | Precise Point Positioning with float ambiguities |
9 | SBG_ECOM_POS_PPP_INT | Precise Point Positioning with fixed ambiguities |
10 | SBG_ECOM_POS_FIXED | Fixed location solution position |
The STATUS_EXT
field provides additional status details, including interference monitoring and spoofing detection. The field encodes several enumerations as described below:
Bits | Type | Name | Description |
---|---|---|---|
[0-3] | Enum | SBG_ECOM_GNSS_IFM_STATUS | GNSS interference monitoring and mitigation (see GNSS_IFM_STATUS). |
[4-7] | Enum | SBG_ECOM_GNSS_SPOOFING_STATUS | GNSS spoofing monitoring and mitigation (see GNSS_SPOOFING_STATUS). |
[8-11] | Enum | SBG_ECOM_GNSS_OSNMA_STATUS | Galileo OSNMA authentication status (see GNSS_OSNMA_STATUS). |
Value | Name | Description |
---|---|---|
0 | IFM_STATUS_ERROR | The interference monitoring system is in error and not operational |
1 | IFM_STATUS_UNKNOWN | Interference monitoring is disabled or not available |
2 | IFM_STATUS_CLEAN | Interference monitored and the environment is clean |
3 | IFM_STATUS_MITIGATED | Interference detected and mitigated, PVT is valid |
4 | IFM_STATUS_CRITICAL | Interference detected and not mitigated, PVT is invalid |
Value | Name | Description |
---|---|---|
0 | SPOOFING_STATUS_ERROR | Spoofing detection system error, not operational |
1 | SPOOFING_STATUS_UNKNOWN | Spoofing detection disabled or not available |
2 | SPOOFING_STATUS_CLEAN | Spoofing detection enabled, no spoofing detected |
3 | SPOOFING_STATUS_SINGLE | Probable spoofing detected by one method |
4 | SPOOFING_STATUS_MULTIPLE | Confirmed spoofing detected by multiple methods (Galileo OSNMA, RAIM). |
Value | Name | Description |
---|---|---|
0 | OSNMA_STATUS_ERROR | OSNMA is in error state and doesn't work. |
1 | OSNMA_STATUS_DISABLED | OSNMA is either disabled or not available. |
2 | OSNMA_STATUS_INITIALIZING | OSNMA initialization in progress. |
3 | OSNMA_STATUS_WAITING_NTP | Awaiting valid time from NTP server for strict mode operation. |
4 | OSNMA_STATUS_VALID | Actively authenticating Galileo signals, no spoofing. |
5 | OSNMA_STATUS_SPOOFED | Spoofing detected on Galileo signals. |
Provides true heading data from the primary or secondary dual antenna GNSS receiver.
The timestamp represents the actual time of the GPS true heading data.
SBG_ECOM_LOG_GPS1_HDT (15)
, SBG_ECOM_LOG_GPS2_HDT (18)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
STATUS | GNSS True Heading status (see GPS_HDT_STATUS_BIT) | - | uint16 | 2 | 4 |
TOW | GPS Time of Week | ms | uint32 | 4 | 6 |
TRUE_HEADING | True heading angle (0 to 360°) | ° | float | 4 | 10 |
TRUE_HEADING_ACC | 1σ True heading estimated accuracy (0 to 360°) | ° | float | 4 | 14 |
PITCH | Pitch angle from the master to the rover (-90 to +90°) | ° | float | 4 | 18 |
PITCH_ACC | 1σ pitch estimated accuracy (0 to 90°) | ° | float | 4 | 22 |
BASELINE | Distance between main and auxiliary antenna (since v1.11) | m | float | 4 | 26 |
NUM_SV_TRACKED | Number of space vehicles tracked for true heading - 0xFF if N/A (since v4.0) | - | uint8 | 1 | 30 |
NUM_SV_USED | Number of SV used in true heading solution - 0xFF if N/A (since v4.0) | - | uint8 | 1 | 31 |
The STATUS
field indicates the status of the GNSS true heading solution along with additional validity information.
Bits | Type | Name | Description |
---|---|---|---|
[0-5] | Enum | SBG_ECOM_GPS_HDT_STATUS | GNSS true heading status (see GPS_HDT_STATUS) |
6 | Mask | SBG_ECOM_GPS_HDT_BASELINE_VALID | Set if the baseline length field is valid |
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_HDT_SOL_COMPUTED | A valid solution has been computed |
1 | SBG_ECOM_HDT_INSUFFICIENT_OBS | Not enough valid SV to compute a solution |
2 | SBG_ECOM_HDT_INTERNAL_ERROR | An internal error has occurred |
3 | SBG_ECOM_HDT_HEIGHT_LIMIT | The height limit has been exceeded |
This log is used to store raw GPS data for post-processing purposes.
It directly stores untouched binary messages from the GNSS receiver, relevant for post-processing.
Each message can contain up to 4086 bytes of raw GNSS data to fit within a standard sbgECom protocol frame.
SBG_ECOM_LOG_GPS1_RAW (31)
, SBG_ECOM_LOG_GPS2_RAW (38)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
RAW_BUFFER | Buffer storing GNSS raw data as returned by the receiver | - | void | [0-4086] | 0 |
List of all space vehicles in view by the primary or secondary GNSS receiver antenna.
This message is typically sent every second with the latest information from the GNSS receiver.
It includes details on the constellation, identifier/PRN, elevation, azimuth, and health status of each satellite, along with tracked signals.
SBG_ECOM_LOG_GPS1_SAT (50)
, SBG_ECOM_LOG_GPS2_SAT (51)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
timeStamp | Time since sensor is powered up | µs | uint32 | 4 | 0 |
reserved | Reserved, do not use | - | uint32 | 4 | 4 |
nrSatellites | Number of reported satellites 0 to 64 (see SatData) | - | uint8 | 1 | 8 |
This block provides information for a satellite such as elevation, satellite id etc.
It is repeated nrSatellites
times.
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
satelliteId | RINEX Satellite number (see GNSS_SAT_ID) | - | uint8 | 1 | - |
elevation | Satellite elevation (-90 to +90°) | ° | int8 | 1 | - |
azimuth | Satellite azimuth (0 to 359°) | ° | uint16 | 2 | - |
satFlags | Satellite status flags (see satFlags) | - | uint16 | 2 | - |
nrSignals | Number of reported signals 0 to 8 (see SignalData) | - | uint8 | 1 | - |
Bits | Type | Name | Description |
---|---|---|---|
[0-2] | Enum | Tracking status | Tracking Status (see SAT_TRACKING_STATUS). |
[3-4] | Enum | Health status | Health Status (see SAT_HEALTH_STATUS). |
[5-6] | Enum | Elevation status | Elevation Status (see SAT_ELEVATION_STATUS). |
[7-10] | Enum | Constellation | Satellite constellation (see GNSS_CONSTELLATION). |
This block provides information for a specific signal of a satellite.
It is repeated nrSignals
for a satellite.
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
signalId | Signal unique identifier (see GNSS_SAT_ID) | - | uint8 | 1 | - |
sigFlags | Signal status flags (see sigFlags) | - | uint8 | 1 | - |
snr | Signal-to-Noise ratio | dB | uint8 | 1 | - |
Bits | Type | Name | Description |
---|---|---|---|
[0-2] | Enum | Tracking status | Tracking Status (see SAT_TRACKING_STATUS). |
[3-4] | Enum | Health status | Health Status (see SAT_HEALTH_STATUS). |
5 | Mask | SNR valid | Set if the Signal-to-Noise Ratio information is available. |
The definitions below are shared across SatData and SignalData blocks.
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_SAT_TRACKING_STATUS_UNKNOWN | Unknown tracking status (e.g., no signal or idle) |
1 | SBG_ECOM_SAT_TRACKING_STATUS_SEARCHING | Signal being searched, not yet usable |
2 | SBG_ECOM_SAT_TRACKING_STATUS_TRACKING_UNKNOWN | Signal tracked, use in solution unknown |
3 | SBG_ECOM_SAT_TRACKING_STATUS_TRACKING_NOT_USED | Signal tracked, not used in the solution |
4 | SBG_ECOM_SAT_TRACKING_STATUS_TRACKING_REJECTED | Signal tracked but rejected (e.g., due to jamming) |
5 | SBG_ECOM_SAT_TRACKING_STATUS_TRACKING_USED | Signal tracked and used in the GNSS solution |
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_SAT_HEALTH_STATUS_UNKNOWN | Satellite or signal health is unknown |
1 | SBG_ECOM_SAT_HEALTH_STATUS_HEALTHY | The satellite or signal is healthy |
2 | SBG_ECOM_SAT_HEALTH_STATUS_UNHEALTHY | The satellite or signal is unhealthy |
Value | Name | Description |
---|---|---|
0 | SBG_ECOM_SAT_ELEVATION_STATUS_UNKNOWN | Elevation status unknown |
1 | SBG_ECOM_SAT_ELEVATION_STATUS_SETTING | The satellite elevation is setting |
2 | SBG_ECOM_SAT_ELEVATION_STATUS_RISING | The satellite elevation is rising |
The following logs provide the navigation unit's output, including Euler angles, quaternions, velocity and position.
These logs share common status flags and enumerations, detailed below.
This log provides calibrated magnetometer data along with associated accelerometer readings.
When an internal magnetometer is used, the accelerometer data is sourced from the internal IMU.
SBG_ECOM_LOG_MAG (04)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
MAG_STATUS | Magnetometer status bitmask (see MAG_STATUS) | - | uint16 | 2 | 4 |
MAG_X | Magnetic field along the X axis in the body frame. | a.u | float | 4 | 6 |
MAG_Y | Magnetic field along the Y axis in the body frame. | a.u | float | 4 | 10 |
MAG_Z | Magnetic field along the Z axis in the body frame. | a.u | float | 4 | 14 |
ACCEL_X | Acceleration along the X axis in the body frame. | m/s² | float | 4 | 18 |
ACCEL_Y | Acceleration along the Y axis in the body frame. | m/s² | float | 4 | 22 |
ACCEL_Z | Acceleration along the Z axis in the body frame. | m/s² | float | 4 | 26 |
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_MAG_MAG_X_BIT | Set if the magnetometer X-axis passes the self-test |
1 | SBG_ECOM_MAG_MAG_Y_BIT | Set if the magnetometer Y-axis passes the self-test |
2 | SBG_ECOM_MAG_MAG_Z_BIT | Set if the magnetometer Z-axis passes the self-test |
3 | SBG_ECOM_MAG_ACCEL_X_BIT | Set if the accelerometer X-axis passes the self-test |
4 | SBG_ECOM_MAG_ACCEL_Y_BIT | Set if the accelerometer Y-axis passes the self-test |
5 | SBG_ECOM_MAG_ACCEL_Z_BIT | Set if the accelerometer Z-axis passes the self-test |
6 | SBG_ECOM_MAG_MAGS_IN_RANGE | Set if the magnetometer is not saturated |
7 | SBG_ECOM_MAG_ACCELS_IN_RANGE | Set if the accelerometer is not saturated |
8 | SBG_ECOM_MAG_CALIBRATION_OK | Set if the magnetometer appears to be calibrated |
This log provides a raw buffer for magnetic calibration procedures, such as those performed using the sbgCenter software.
SBG_ECOM_LOG_MAG_CALIB (05)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
RESERVED | Reserved field for future use | - | uint16 | 2 | 4 |
BUFFER | Raw magnetic calibration data buffer | - | uint8[] | 16 | 6 |
This log provides the external velocity aiding expressed in meters per second, measured along the IMU/vehicle X axis (direction of travel).
This velocity can be sourced from various speed sensors, such as a quadrature/pulse odometer or integrated CAN bus vehicles odometer.
The log is asynchronous and is sent whenever new velocity aiding information is available, such as when an odometer pulse is detected.
SBG_ECOM_LOG_ODO_VEL (19)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
ODO_STATUS | Odometer velocity status (see ODO_STATUS) | - | uint16 | 2 | 4 |
ODO_VEL | Velocity along the odometer direction | m/s | float | 4 | 6 |
Timestamp Considerations:
This log is asynchronous, with the timestamp indicating the actual time of the velocity data, rather than the time when the log was generated.
Consequently, the timestamp may slightly precede other data, such as IMU readings, that are sent simultaneously.
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_ODO_REAL_MEAS | Set if the log is from a real pulse measurement, 0 for virtual ZUPT. |
1 | SBG_ECOM_ODO_TIME_SYNC | Set if the velocity information is correctly time-synchronized. |
The airdata log provides barometric altitude above a reference level and true airspeed.
The altitude is typically measured using a barometer, while the true airspeed is obtained from a pitot tube.
By default, the altitude is referenced to a standard 1013.25 hPa zero level pressure.
This log serves both as an input and output.
It is sent by the unit when new internal airdata information is available.
It can also be used to inject external altitude and true airspeed aiding information.
Timestamp Considerations:
This log is asynchronous, with the timestamp indicating the actual time of the altitude/airspeed measurement, rather than the time when the log was generated.
When used as an input for external altitude aiding, the TIME_STAMP
field may either represent an absolute time or a measurement delay, depending on the status flags.
The measurement delay allows the INS to calculate an absolute timestamp based on the reception time, transmission delay, and the specified delay.
SBG_ECOM_LOG_AIR_DATA (36)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP / DELAY | Time since sensor was powered up or measurement delay | µs | uint32 | 4 | 0 |
AIRDATA_STATUS | Airdata information status (see AIRDATA_STATUS) | - | uint16 | 2 | 4 |
PRESSURE_ABS | Raw absolute pressure measured by the barometer sensor | Pa | float | 4 | 6 |
ALTITUDE | Altitude computed from barometric altimeter | m | float | 4 | 10 |
PRESSURE_DIFF | Raw differential pressure measured by the pitot tube | Pa | float | 4 | 14 |
TRUE_AIRSPEED | True airspeed measured by the pitot tube | m/s | float | 4 | 18 |
AIR_TEMPERATURE | Outside air temperature used for airspeed computations | °C | float | 4 | 22 |
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_AIR_DATA_TIME_IS_DELAY | Set if TIME_STAMP represents a measurement delay instead of absolute time. |
1 | SBG_ECOM_AIR_DATA_PRESSURE_ABS_VALID | Set if the absolute pressure field is filled and valid. |
2 | SBG_ECOM_AIR_DATA_ALTITUDE_VALID | Set if the barometric altitude field is filled and valid. |
3 | SBG_ECOM_AIR_DATA_PRESSURE_DIFF_VALID | Set if the differential pressure field is filled and valid. |
4 | SBG_ECOM_AIR_DATA_AIRSPEED_VALID | Set if the true airspeed field is filled and valid. |
5 | SBG_ECOM_AIR_DATA_TEMPERATURE_VALID | Set if the outside air temperature field is filled and valid. |
This log records velocity data from a Doppler Velocity Log (DVL), either from bottom tracking or water tracking.
The timestamp indicates the actual time of the DVL velocity data, rather than being synchronized with the main loop.
SBG_ECOM_LOG_DVL_BOTTOM_TRACK (29)
, SBG_ECOM_LOG_DVL_WATER_TRACK (30)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
DVL_STATUS | DVL velocity status bitmask (see DVL_STATUS) | - | uint16 | 2 | 4 |
VELOCITY_X | Velocity in the X direction, DVL instrument frame | m/s | float | 4 | 6 |
VELOCITY_Y | Velocity in the Y direction, DVL instrument frame | m/s | float | 4 | 10 |
VELOCITY_Z | Velocity in the Z direction, DVL instrument frame | m/s | float | 4 | 14 |
VELOCITY_QUALITY_X | Quality of the X velocity measurement | m/s | float | 4 | 18 |
VELOCITY_QUALITY_Y | Quality of the Y velocity measurement | m/s | float | 4 | 22 |
VELOCITY_QUALITY_Z | Quality of the Z velocity measurement | m/s | float | 4 | 26 |
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_DVL_VELOCITY_VALID | Set if the DVL measured a valid velocity |
1 | SBG_ECOM_DVL_TIME_SYNC | Set if the data is accurately timestamped using Sync In/Out |
This log captures pressure and depth information from a subsea depth sensor.
The timestamp reflects the actual time of the depth measurement, rather than being synchronized with the main loop.
SBG_ECOM_LOG_DEPTH (47)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up or measurement delay | µs | uint32 | 4 | 0 |
DEPTH_STATUS | Depth sensor status bitmask (see DEPTH_STATUS) | - | uint16 | 2 | 4 |
PRESSURE_ABS | Absolute water pressure measured | Pa | float | 4 | 6 |
DEPTH | Measured depth, positive upward | m | float | 4 | 10 |
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_DEPTH_TIME_IS_DELAY | Set if the timestamp represents a delay instead of absolute time |
1 | SBG_ECOM_DEPTH_PRESSURE_ABS_VALID | Set if the pressure field is valid |
2 | SBG_ECOM_DEPTH_ALTITUDE_VALID | Set if the depth field is valid |
This log retrieves the position information as determined by a USBL (Ultra-Short Baseline) beacon.
The timestamp indicates the actual time of the positioning data, rather than being synchronized with the main loop.
SBG_ECOM_LOG_USBL (37)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
USBL_STATUS | USBL system status bitmask (see USBL_STATUS) | - | uint16 | 2 | 4 |
LATITUDE | Latitude in degrees, positive north | ° | double | 8 | 6 |
LONGITUDE | Longitude in degrees, positive east | ° | double | 8 | 14 |
DEPTH | Depth below mean sea level, positive down | m | float | 4 | 22 |
LATITUDE_STD | 1σ standard deviation of latitude accuracy | m | float | 4 | 26 |
LONGITUDE_STD | 1σ standard deviation of longitude accuracy | m | float | 4 | 30 |
DEPTH_STD | 1σ standard deviation of depth accuracy | m | float | 4 | 34 |
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_USBL_TIME_SYNC | Set if the USBL data is accurately time-synchronized |
1 | SBG_ECOM_USBL_POSITION_VALID | Set if the USBL data represents a valid 2D position |
2 | SBG_ECOM_USBL_DEPTH_VALID | Set if the USBL data has valid depth information |
SBG Systems products support multiple input and output events, facilitating precise timestamping and synchronization of various equipment.
For example, an electrical signal can timestamp the exact moment a picture is taken.
SBG Systems' INS can align their internal clock with GPS time, providing a reliable solution for synchronizing devices and measurements to a common clock.
The Event In/Out log is designed to efficiently timestamp events at up to 1 kHz, while being transmitted at a maximum rate of 200 Hz.
This log can report up to five events detected in the last 5 ms, minimizing transmission overhead.
Depending on the product options, input/output signals such as Sync A, B, C, D, and E may be available, each associated with a corresponding message.
The TIME_STAMP field marks the time of the first event received in the last 5 ms.
Subsequent events in this window are recorded with time offsets, optimizing log size.
Additionally, SBG Systems products can generate output event markers, providing both an electrical sync out signal and a corresponding output log for precise timing.
Example:
If three events occur within 5 ms:
TIME_STAMP
.TIME_STAMP + TIME_OFFSET_0
.TIME_STAMP + TIME_OFFSET_1
.Unused time offset fields are set to 0, and EVENT_STATUS
indicates which fields are valid.
SBG_ECOM_LOG_EVENT_A (24)
, SBG_ECOM_LOG_EVENT_B (25)
, SBG_ECOM_LOG_EVENT_C (26)
, SBG_ECOM_LOG_EVENT_D (27)
, SBG_ECOM_LOG_EVENT_E (28)
, SBG_ECOM_LOG_EVENT_OUT_A (45)
, SBG_ECOM_LOG_EVENT_OUT_B (46)
Field | Description | Unit | Format | Size | Offset |
---|---|---|---|---|---|
TIME_STAMP | Time since the sensor was powered up | µs | uint32 | 4 | 0 |
EVENT_STATUS | Status bitmask (see EVENT_STATUS) | - | uint16 | 2 | 4 |
TIME_OFFSET_0 | Time offset for the second received event | µs | uint16 | 2 | 6 |
TIME_OFFSET_1 | Time offset for the third received event | µs | uint16 | 2 | 8 |
TIME_OFFSET_2 | Time offset for the fourth received event | µs | uint16 | 2 | 10 |
TIME_OFFSET_3 | Time offset for the fifth received event | µs | uint16 | 2 | 12 |
Bit | Name | Description |
---|---|---|
0 | SBG_ECOM_EVENT_OVERFLOW | Set if events are received at a rate higher than 1 kHz |
1 | SBG_ECOM_EVENT_OFFSET_0_VALID | Set if at least two events have been received |
2 | SBG_ECOM_EVENT_OFFSET_1_VALID | Set if at least three events have been received |
3 | SBG_ECOM_EVENT_OFFSET_2_VALID | Set if at least four events have been received |
4 | SBG_ECOM_EVENT_OFFSET_3_VALID | Set if five events have been received |