IMU Data

Open in Claude

IMU output is selected with udp_profile_imu. Supported values are:

  • LEGACY - legacy IMU packet format. See IMU Data Legacy.
  • ACCEL32_GYRO32_NMEA - column-correlated IMU packet format for synchronous IMU output.

IMU packets are little-endian. By default, IMU UDP data is forwarded to port 7503; configure udp_port_imu to change the destination port or set it to 0 to disable IMU packet transmission.

ACCEL32_GYRO32_NMEA IMU Profile

Note: Supported in firmware v3.2 or later.

The ACCEL32_GYRO32_NMEA profile is intended for synchronous IMU output. It reports 32-bit accelerometer and gyroscope values with timing fields that correlate the IMU sample to lidar column/frame context.

Configure packet cadence with imu_packets_per_frame. Valid values are 1, 2, 4, and 8; the resulting IMU packet rate depends on lidar frame rate and the selected value. The number of IMU Data Blocks in each packet is reported by imu_measurements_per_packet in GET /api/v1/sensor/metadata/imu_data_format.

Each ACCEL32_GYRO32_NMEA packet contains a Packet Header, an NMEA Block, imu_measurements_per_packet IMU Data Blocks, and a Packet Footer. Each IMU Data Block contains one column-correlated IMU measurement.

ACCEL32_GYRO32_NMEA Packet Header

The packet header is 256 bits (8 words). It identifies the packet as IMU data and carries frame, initialization, serial number, alert, and thermal/shot-limiting status fields.

WordBitsFieldDescription
0[15:0]Packet Type0x02 for IMU packets.
0[31:16]Frame ID LowLow 16 bits of the lidar frame ID associated with the packet.
1[55:32]Init IDUpdates on every reinit or reboot. Also available via the sensor-info endpoint.
1[63:56]Serial No LowLow 8 bits of sensor serial number.
2[95:64]Serial No HighHigh 32 bits. Combined with Serial No Low = 40-bit serial number.
3[103:96]Alert Flagsbits[5:0] alert_cursors; bit[6] cursor_overflow; bit[7] alerts_active.
3[127:104]Reserved
4[135:128]Thermal Shutdown CountdownSeconds to thermal shutdown (30 when imminent, 0 otherwise).
4[143:136]Shot Limiting CountdownSeconds to shot limiting onset (30 when imminent, 0 otherwise).
4[151:144]Thermal Shutdown State0 = normal; 1 = shutdown imminent.
4[159:152]Shot Limiting Level0x00 = normal; 0x01 = imminent; 0x020x09 = active levels.
5–7[255:160]Reserved

ACCEL32_GYRO32_NMEA NMEA Block

The 100-byte NMEA Block carries an 8-byte timestamp, 88 bytes of timestamped NMEA sentence payload, and a 4-byte lock-status word. If no NMEA measurement is available for a packet, the NMEA sentence fields are zero-padded.

WordBitsFieldDescription
0[31:0]Timestamp LowLow 32 bits of NMEA timestamp
1[63:32]Timestamp HighUpper 32 bits of NMEA timestamp
2–23[767:64]NMEA Words 0–2122 words (88 bytes) of NMEA sentence bytes
24[768]PPS LockPPS lock status
24[769]NMEA LockNMEA lock status
24[799:770]ReservedReserved

ACCEL32_GYRO32_NMEA IMU Data Block

The IMU Data Block contains:

  • Timestamp [64 bit unsigned int] - timestamp for the IMU packet on the sensor time base.
  • Correlated Column ID [12 bit unsigned int] - lidar column ID associated with the IMU sample.
  • Result Valid [1 bit unsigned int] - indicates whether the correlated column/frame fields are valid.
  • Frame ID [8 bit unsigned int] - low 8 bits of the lidar frame ID.
  • Acceleration in X/Y/Z-axis [32 bit float] - acceleration in g.
  • Angular Velocity about X/Y/Z-axis [32 bit float] - angular velocity in degrees per second.
WordBitsFieldDescription
0–5[191:0]ReservedReserved
6[223:192]CRC64 LowLow 32 bits of packet CRC64
7[255:224]CRC64 HighUpper 32 bits of packet CRC64

Configurable IMU Scale

The full-scale range (fsr) of the accelerometer and gyroscope is configurable. Toggle each between the default NORMAL and the wider EXTENDED range via the Web UI or by issuing POST /api/v1/sensor/config with accel_fsr and/or gyro_fsr in the body. Query the current value with GET /api/v1/sensor/metadata/imu_data_format. See the API reference for full schemas.

  • accel_fsr — accelerometer measurement range.

    • NORMAL (default): X/Y/Z measurement range ± 2 g.
    • EXTENDED: X/Y/Z measurement range ± 16 g.
  • gyro_fsr — gyroscope measurement range.

    • NORMAL (default): X/Y/Z measurement range ± 250 dps (°/sec).
    • EXTENDED: X/Y/Z measurement range ± 2000 dps (°/sec).

Note: Switching to EXTENDED does not change the unit of measurements in IMU packets, but can result in a slight loss of measurement precision. Full IMU specifications are in the Sensor Datasheet.