Susi Server

SteamVR HMD

Node ID: steamvrHmd · Role: Filter · Realtime config: yes

Description

Bidirectional ZMQ bridge to the LPVR SteamVR HMD driver for lighthouse headsets (HTC Vive Pro, Vive Pro 2, Valve Index) and their controllers. Receives the headset and controller IMUs from the SteamVR lighthouse driver (factory calibration applied, head frame) and forwards FusedPose back as the SteamVR tracking override. Includes gyro autocalibration.

Inputs / Outputs

Inputs:

Outputs:

Config aliases

steamvrHmd, SteamvrHmd, vivePro

Properties

Each row shows the setting’s label in the node’s Properties panel and, in code, its key in the node’s settings object in the config file. A setting omitted from the config file uses the default shown here.

PropertyTypeDefaultDescription
Driver IMU Endpoint imuEndpointstringtcp://127.0.0.1:9926ZMQ SUB endpoint of the LPVR SteamVR HMD driver’s IMU publisher (e.g. ‘tcp://127.0.0.1:9926’).
FusedPose Publish Endpoint fusedPoseEndpointstringtcp://*:9925ZMQ PUB endpoint the driver subscribes to for head and controller poses (e.g. ‘tcp://*:9925’).
Head IMU Sender ID senderIdstringheadsetImuSender ID stamped on the headset IMU output.
Left Controller Serial leftControllerSerialstring""Lighthouse serial (LHR-…) of the controller used for the left hand. Its IMU is output as ‘leftControllerImu’ and the Left Controller pose input overrides it in SteamVR.
Right Controller Serial rightControllerSerialstring""Lighthouse serial (LHR-…) of the controller used for the right hand. Its IMU is output as ‘rightControllerImu’ and the Right Controller pose input overrides it in SteamVR.
Enable Gyro Autocalibration enableGyroAutocalibrationbooleantrueEstimate and subtract the gyro zero-rate bias of every device while it rests.

Gyro Autocalibration

PropertyTypeDefaultDescription
Steady motion threshold (deg/s) steadyThresholdAveragenumber0.5
Steady RMS gate steadyThresholdRmsnumber1.0
Noise RMS limit noiseRmsLimitnumber0.02
Steady-detection samples nSamplesForSteadynumber256
Calibration samples nSamplesForAutocalibrationnumber1500

Example node definition

A minimal entry in config.json looks like the block below. Paste it under the sinks key, keyed by an instance name of your choice. All settings are optional: anything not listed under settings uses the default from the Properties table above. See The configuration file for how the sections and endpoint wiring work.

{
  "sinks": {
    "steamvrHmd": {
      "dataEndpoint": "inproc://steamvrHmd_data",
      "inputEndpoints": [
        "inproc://fusedPose_data",
        "inproc://leftController_data",
        "inproc://rightController_data"
      ],
      "inputDataFilter": [
        "FusedPose",
        "FusedPose",
        "FusedPose"
      ],
      "settings": {}
    }
  }
}
Loading documentation…