Susi Server

IMU Source

Node ID: imu · Role: Source · Realtime config: yes

Description

Inertial measurement unit source supporting HID, XREAL Air 2 Ultra, XREAL One Pro, and Stereolabs ZED (ZED-M/ZED2/ZED2i) devices. Outputs ImuData (accelerometer, gyroscope, quaternion orientation).

Inputs / Outputs

Config aliases

ImuSource, imuSource, imu

Properties

The following fields are exposed in the node’s Properties panel in the UI. Types map to UI widgets (e.g. string → text input, number → numeric, boolean → toggle, select → dropdown, json → JSON editor).

KeyLabelTypeDefaultDescription / Notes
idSender IDstringimuStream identifier that downstream nodes use to subscribe to this source’s IMU data.

Subtypes

ValueDisplay nameExtra properties
hidHID IMU9 field(s)
xreal_air2_ultraXREAL Air 2 Ultra8 field(s)
xreal_one_proXREAL One Pro13 field(s)
zedZED IMU5 field(s)

Subtype: hid — HID IMU

KeyLabelTypeDefaultDescription / Notes
axisConfigAccAccelerometer Axis Configstring+X+Y+ZPer-axis sign/swizzle for the accelerometer, e.g. ‘+X+Y+Z’ or ‘-Y+X+Z’. Used to rotate raw sensor axes into the expected body frame.
axisConfigGyroGyroscope Axis Configstring+X+Y+ZPer-axis sign/swizzle for the gyroscope, same format as the accelerometer axis config.
enableGyroAutocalibrationEnable Gyro Autocalibrationbooleantrue
gyroAutocalHeadingGyro Autocalibrationheading
steadyThresholdAverageSteady motion threshold (deg/s)number1.5
steadyThresholdRmsSteady RMS gatenumber1.0
noiseRmsLimitNoise RMS limitnumber0.02
nSamplesForSteadySteady-detection samplesnumber256
nSamplesForAutocalibrationCalibration samplesnumber500

Subtype: xreal_air2_ultra — XREAL Air 2 Ultra

KeyLabelTypeDefaultDescription / Notes
idSender IDstringheadsetImuStream identifier for the Xreal Air 2 Ultra IMU output.
enableGyroAutocalibrationEnable Gyro Autocalibrationbooleantrue
gyroAutocalHeadingGyro Autocalibrationheading
steadyThresholdAverageSteady motion threshold (deg/s)number2.0
steadyThresholdRmsSteady RMS gatenumber1.0
noiseRmsLimitNoise RMS limitnumber0.02
nSamplesForSteadySteady-detection samplesnumber256
nSamplesForAutocalibrationCalibration samplesnumber500

Subtype: xreal_one_pro — XREAL One Pro

KeyLabelTypeDefaultDescription / Notes
idSender IDstringheadsetImuStream identifier for the Xreal One Pro IMU output.
ipDevice IPstring169.254.2.1IPv4 address of the Xreal One Pro device.
portDevice Portnumber52998UDP port on the Xreal One Pro device for the IMU stream.
connectTimeoutMsConnect timeout (ms)number1000Timeout when opening the connection to the device, in milliseconds.
recvTimeoutMsReceive timeout (ms)number1000Timeout on each receive call, in milliseconds.
imuTiltDegIMU Tilt (deg)number30.0Mechanical tilt of the IMU inside the headset, in degrees; applied to the raw samples.
enableGyroAutocalibrationEnable Gyro Autocalibrationbooleantrue
gyroAutocalHeadingGyro Autocalibrationheading
steadyThresholdAverageSteady motion threshold (deg/s)number2.0
steadyThresholdRmsSteady RMS gatenumber1.0
noiseRmsLimitNoise RMS limitnumber0.02
nSamplesForSteadySteady-detection samplesnumber256
nSamplesForAutocalibrationCalibration samplesnumber500

Subtype: zed — ZED IMU

KeyLabelTypeDefaultDescription / Notes
idSender IDstringzedImuStream identifier that downstream nodes use to subscribe to this source’s IMU data.
cameraSerialCamera Serialstring""Optional ZED serial number. Empty = first ZED MCU found.
axisConfigAccAccelerometer Axis Configstring+Z+Y-X
axisConfigGyroGyroscope Axis Configstring+Z+Y-X
enableGyroAutocalibrationEnable Gyro Autocalibrationbooleantrue

Example node definition

A full node definition in config.json looks like the block below. Paste it under the sources key of your config, keyed by the node’s instance name (any identifier; it doesn’t have to match the node ID).

{
  "sources": {
    "imu": {
      "outEndpoint": "inproc://imu_data",
      "type": "hid",
      "settings": {
        "id": "imu",
        "axisConfigAcc": "+X+Y+Z",
        "axisConfigGyro": "+X+Y+Z",
        "enableGyroAutocalibration": true,
        "gyroAutocalHeading": null,
        "steadyThresholdAverage": 1.5,
        "steadyThresholdRms": 1.0,
        "noiseRmsLimit": 0.02,
        "nSamplesForSteady": 256,
        "nSamplesForAutocalibration": 500
      }
    }
  }
}

Field reference

FieldPurpose
outEndpointZMQ / inproc endpoint this source binds to publish its output. The runtime auto-generates one if omitted.
typeSubtype / backend selector. See the Subtypes section above for valid values.
settingsAll user-configurable fields — see the Properties table above.

Connections can also be declared at the top-level connections array when settings.explicitConnections is true, as an alternative to filling inputEndpoints on each node.

Loading documentation…