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
- Inputs: (none)
- Outputs:
Imu
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).
| Key | Label | Type | Default | Description / Notes |
id | Sender ID | string | imu | Stream identifier that downstream nodes use to subscribe to this source’s IMU data. |
Subtypes
| Value | Display name | Extra properties |
hid | HID IMU | 9 field(s) |
xreal_air2_ultra | XREAL Air 2 Ultra | 8 field(s) |
xreal_one_pro | XREAL One Pro | 13 field(s) |
zed | ZED IMU | 5 field(s) |
Subtype: hid — HID IMU
| Key | Label | Type | Default | Description / Notes |
axisConfigAcc | Accelerometer Axis Config | string | +X+Y+Z | Per-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. |
axisConfigGyro | Gyroscope Axis Config | string | +X+Y+Z | Per-axis sign/swizzle for the gyroscope, same format as the accelerometer axis config. |
enableGyroAutocalibration | Enable Gyro Autocalibration | boolean | true | — |
gyroAutocalHeading | Gyro Autocalibration | heading | — | — |
steadyThresholdAverage | Steady motion threshold (deg/s) | number | 1.5 | — |
steadyThresholdRms | Steady RMS gate | number | 1.0 | — |
noiseRmsLimit | Noise RMS limit | number | 0.02 | — |
nSamplesForSteady | Steady-detection samples | number | 256 | — |
nSamplesForAutocalibration | Calibration samples | number | 500 | — |
Subtype: xreal_air2_ultra — XREAL Air 2 Ultra
| Key | Label | Type | Default | Description / Notes |
id | Sender ID | string | headsetImu | Stream identifier for the Xreal Air 2 Ultra IMU output. |
enableGyroAutocalibration | Enable Gyro Autocalibration | boolean | true | — |
gyroAutocalHeading | Gyro Autocalibration | heading | — | — |
steadyThresholdAverage | Steady motion threshold (deg/s) | number | 2.0 | — |
steadyThresholdRms | Steady RMS gate | number | 1.0 | — |
noiseRmsLimit | Noise RMS limit | number | 0.02 | — |
nSamplesForSteady | Steady-detection samples | number | 256 | — |
nSamplesForAutocalibration | Calibration samples | number | 500 | — |
Subtype: xreal_one_pro — XREAL One Pro
| Key | Label | Type | Default | Description / Notes |
id | Sender ID | string | headsetImu | Stream identifier for the Xreal One Pro IMU output. |
ip | Device IP | string | 169.254.2.1 | IPv4 address of the Xreal One Pro device. |
port | Device Port | number | 52998 | UDP port on the Xreal One Pro device for the IMU stream. |
connectTimeoutMs | Connect timeout (ms) | number | 1000 | Timeout when opening the connection to the device, in milliseconds. |
recvTimeoutMs | Receive timeout (ms) | number | 1000 | Timeout on each receive call, in milliseconds. |
imuTiltDeg | IMU Tilt (deg) | number | 30.0 | Mechanical tilt of the IMU inside the headset, in degrees; applied to the raw samples. |
enableGyroAutocalibration | Enable Gyro Autocalibration | boolean | true | — |
gyroAutocalHeading | Gyro Autocalibration | heading | — | — |
steadyThresholdAverage | Steady motion threshold (deg/s) | number | 2.0 | — |
steadyThresholdRms | Steady RMS gate | number | 1.0 | — |
noiseRmsLimit | Noise RMS limit | number | 0.02 | — |
nSamplesForSteady | Steady-detection samples | number | 256 | — |
nSamplesForAutocalibration | Calibration samples | number | 500 | — |
Subtype: zed — ZED IMU
| Key | Label | Type | Default | Description / Notes |
id | Sender ID | string | zedImu | Stream identifier that downstream nodes use to subscribe to this source’s IMU data. |
cameraSerial | Camera Serial | string | "" | Optional ZED serial number. Empty = first ZED MCU found. |
axisConfigAcc | Accelerometer Axis Config | string | +Z+Y-X | — |
axisConfigGyro | Gyroscope Axis Config | string | +Z+Y-X | — |
enableGyroAutocalibration | Enable Gyro Autocalibration | boolean | true | — |
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
| Field | Purpose |
outEndpoint | ZMQ / inproc endpoint this source binds to publish its output. The runtime auto-generates one if omitted. |
type | Subtype / backend selector. See the Subtypes section above for valid values. |
settings | All 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…