Skip to content

Configuration

VHI's configurable properties are Godot [Export] fields - editable in the Inspector per node, and persisted in the scene. This page lists them all, by node.

LSLCommunicationController

LSL inlets and outlets - see LSL streams.

Field Type Default Purpose
ControlOutletName string VHI_Control Outlet name for the control-hand pose read-back.
PredictedOutletName string VHI_Predict Outlet name for the predicted-hand pose read-back.
ExpectedChannels int 9 Channel count of the two outlets. The inlets are one channel each, not configurable, and a wider inbound stream is refused rather than truncated.
PredictionStaleAfterSeconds float 5.0 Silence after which a prediction DOF's inlet is assumed dead and dropped. Per DOF, on its own clock.
ControlPoseStaleAfterSeconds float 5.0 Silence after which a control-pose DOF's inlet counts as gone: it is dropped, and stops counting toward the control hand being stream-driven. When the last one goes, the hand returns to its own movements.

The inlet names are not configurable

There is no PredictionStreamName or ControlPoseStreamName field any more. Each DOF's inlet is named for that DOF's address — the same name GetControlManifest publishes — so renaming one on this side would only make the manifest lie. There is nothing to rename on the manifest side either: a capability carries an address and no separate stream name, because the address is the name. See LSL streams.

GrpcControlServer

The in-process gRPC server.

Field Type Default Purpose
GrpcPort int 50051 TCP port the VhiControl server listens on (127.0.0.1).

ControlHandSkeleton

The control hand.

Field Type Default Purpose
ConfigFilePath string user://movements.toml Path to the movement-pose TOML.
Frequency float 0.5 Movement cycles per second (the closing/opening interpolation speed).
HoldTime float 1.0 Seconds held at max flexion in the cycle.
RestTime float 1.0 Seconds held at rest in the cycle.

There is no driver-mode field. What drives the control hand is decided by whether a control-pose stream is arriving — see What drives the control hand.

PredictedHandSkeleton

The predicted hand.

Field Type Default Purpose
EnableSmoothing bool false Spherically interpolate toward the incoming pose instead of snapping.
SmoothingSpeed float 5.0 Interpolation speed when EnableSmoothing is on.

Set at runtime, too

Frequency, HoldTime, RestTime and smoothing can also be changed live from the in-app control panel. Over gRPC, SetPresentation sets the blending; the three timing values are set by StartRecordingTrajectory, which takes frequency_hz, hold_time_s and rest_time_s and leaves any of them alone when passed a non-positive (or, for the two times, negative) value. There is no standalone SetSpeed RPC.