Susi Server

ALVR Bridge

Node ID: alvr · Role: Filter · Realtime config: no

Description

Bidirectional ZMQ bridge between FusionHub and LPALVR. Sends fused pose to the VR headset, receives IMU data and native tracking pose back.

Inputs / Outputs

Config aliases

alvr, AlvrBridge, alvrBridge

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
imuEndpointALVR IMU Endpointstringtcp://127.0.0.1:8898ZMQ endpoint to connect to for receiving IMU data from the ALVR headset.
nativePoseEndpointALVR Native Pose Endpointstringtcp://127.0.0.1:8899ZMQ endpoint to connect to for receiving the headset’s native SLAM pose.
poseEndpointFusedPose Publish Endpointstringtcp://*:8799ZMQ endpoint this node binds to publish the FusionHub fused pose back to ALVR.
leftControllerEndpointLeft Controller Endpointstringtcp://*:8500ZMQ endpoint this node binds for left-controller pose publication.
rightControllerEndpointRight Controller Endpointstringtcp://*:8501ZMQ endpoint this node binds for right-controller pose publication.
directStartDirect StartbooleantrueLaunch ALVR directly from FusionHub instead of waiting for an external process. hidden in UI
autoStartAuto Start SteamVRbooleanfalseStart SteamVR automatically when the node starts. hidden in UI

Example node definition

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

{
  "sinks": {
    "alvr": {
      "dataEndpoint": "inproc://alvr_data",
      "inputEndpoints": [
        "inproc://fusedPose_data",
        "inproc://optical_data"
      ],
      "inputDataFilter": [
        "FusedPose",
        "Optical"
      ],
      "settings": {
        "autoStart": false,
        "directStart": true,
        "imuEndpoint": "tcp://127.0.0.1:8898",
        "leftControllerEndpoint": "tcp://*:8500",
        "nativePoseEndpoint": "tcp://127.0.0.1:8899",
        "poseEndpoint": "tcp://*:8799",
        "rightControllerEndpoint": "tcp://*:8501"
      }
    }
  }
}

Field reference

FieldPurpose
dataEndpointEndpoint this node binds to publish its output. Omit to let the runtime generate one.
inputEndpointsList of upstream endpoints this node connects to (outEndpoint / dataEndpoint values from upstream nodes).
inputDataFilterOptional whitelist of data types. Messages whose type isn’t in the list are dropped at the subscriber.
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…