LPVISION HeadPose
Node ID: lpvisionHeadPose · Role: Source · Realtime config: no
Description
LPVISION head pose tracking using a Stereolabs ZED camera over UVC. Runs the HeadPoseTracker internally and outputs 6-DOF optical pose. No ZED SDK or CUDA required. For the camera IMU, add a separate ZED IMU node.
Inputs / Outputs
- Inputs: (none)
- Outputs:
Optical
Config aliases
LpvisionSource, lpvisionHeadPose, lpvisionZedSdk
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 | Options | Description / Notes |
|---|---|---|---|---|---|
_zed_heading | ZED Camera | heading | — | — | Section header — groups the ZED camera settings below. |
resolution | Resolution | select | HD720 | VGA, HD720, HD1080, HD2K | ZED capture resolution. Higher resolutions cost more GPU and yield fewer FPS. |
fps | FPS | number | 60 | — | Camera frame rate |
grayscale | Grayscale | toggle | false | — | Run the tracker on grayscale frames. Faster but reduces robustness in low-texture scenes. |
cameraInterface | Camera Interface | number | 0 | — | OS video capture index of the ZED UVC device |
baseline | Baseline | number | 120.0 | — | Stereo baseline in millimetres |
directShowBrightness | DirectShow Brightness | number | — | — | hidden in UI |
directShowContrast | DirectShow Contrast | number | — | — | hidden in UI |
directShowSaturation | DirectShow Saturation | number | — | — | hidden in UI |
directShowGain | DirectShow Gain | number | — | — | hidden in UI |
directShowExposure | DirectShow Exposure | number | — | — | hidden in UI |
_tracker_heading | Head Pose Tracker | heading | — | — | Section header — groups the head-pose tracker settings below. |
showPoses | Show Poses | toggle | true | — | Overlay the estimated poses on a debug window for visual inspection. |
filterPose | Filter Pose | toggle | true | — | Apply a smoothing filter to the output pose. |
filterLandmarks | Filter Landmarks | toggle | true | — | Apply smoothing to the detected 2D landmarks before pose estimation. |
_pose_heading | Head Tracking Output | heading | — | — | Section header — groups the optical pose output settings below. |
senderId | Sender ID | string | headTracking | — | Stream identifier for the optical pose output |
axisPresetOptical | Axis Preset (Optical) | select | steamvr | identity, steamvr | Coordinate-system preset applied to the optical pose output. ‘steamvr’ matches SteamVR’s convention; ‘identity’ leaves the raw frame. |
positionOffsetX | Position Offset X | number | 0.0 | — | metres |
positionOffsetY | Position Offset Y | number | 0.0 | — | metres |
positionOffsetZ | Position Offset Z | number | 0.0 | — | metres |
_adv_heading | Advanced | heading | — | — | Section header — groups advanced settings below. |
logLevel | Log Level | select | error | debug, info, warn, error | — |
autoCalibration | Auto Calibration | toggle | true | — | — |
cameraSerial | Camera Serial | string | "" | — | Optional ZED serial number. Empty = auto-detect from local Stereolabs SDK cache. |
configFile | Config File | filepath | "" | — | Path to an LPVISION JSON config file. When set, all settings above are ignored. |
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": {
"lpvisionHeadPose": {
"outEndpoint": "inproc://lpvisionHeadPose_data",
"settings": {
"autoCalibration": true,
"axisPresetOptical": "steamvr",
"baseline": 120.0,
"cameraInterface": 0,
"cameraSerial": "",
"configFile": "",
"directShowBrightness": null,
"directShowContrast": null,
"directShowExposure": null,
"directShowGain": null,
"directShowSaturation": null,
"filterLandmarks": true,
"filterPose": true,
"fps": 60,
"grayscale": false,
"logLevel": "error",
"positionOffsetX": 0.0,
"positionOffsetY": 0.0,
"positionOffsetZ": 0.0,
"resolution": "HD720",
"senderId": "headTracking",
"showPoses": true
}
}
}
}
Field reference
| Field | Purpose |
|---|---|
outEndpoint | ZMQ / inproc endpoint this source binds to publish its output. The runtime auto-generates one if omitted. |
settings | All user-configurable fields — see the Properties table above. |
Connections can also be declared at the top-level
connectionsarray whensettings.explicitConnectionsistrue, as an alternative to fillinginputEndpointson each node.