Susi Server

Prediction Filter

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

Description

Latency compensation filter that extrapolates a FusedPose forward in time using angular velocity and optionally linear velocity. Used to reduce perceived tracking latency.

Algorithm notes

How it works

The Prediction Filter compensates for the delay between when a pose is measured and when it is finally displayed or acted on. It takes an incoming fused pose and rolls it forward in time by a short interval, using the angular velocity that comes with the pose to rotate the orientation ahead, and optionally the linear velocity and acceleration to move the position ahead. The result is a pose that is slightly “in the future”, so that by the time it reaches the renderer or consumer it lines up with where the object actually is. Nothing is smoothed or filtered - only extrapolated. The node passes everything else through untouched.

What you must configure

Nothing about this node is installation-specific in the mounting sense. The one thing you must get right is how much latency you are compensating for. Measure or estimate the delay of everything downstream of this node - rendering, display, network hop, consumer processing - and use that as your starting interval.

Tuning

Troubleshooting

Inputs / Outputs

Config aliases

PredictionFilter, predictionFilter, prediction

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
Rotation Interval (s) rotationIntervalnumber0.0How far ahead, in seconds, to predict orientation by integrating the current angular velocity forward. Compensates for downstream latency (render/display). 0 disables orientation prediction.
Position Interval (s) positionIntervalnumber0.0How far ahead, in seconds, to predict position by extrapolating the current linear velocity forward. Only applied when Predict Position is enabled. 0 disables position prediction.
Predict Position predictPositionbooleanfalseAlso extrapolate position forward by the Position Interval. When off, only orientation is predicted and position passes through unchanged.
Fixed Prediction Interval fixedPredictionIntervalbooleantruePredict by the fixed configured interval each frame. When off, the interval is measured from the timestamp of each input pose to the current time, so the prediction tracks the actual age of the incoming data.

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": {
    "prediction": {
      "dataEndpoint": "inproc://prediction_data",
      "inputEndpoints": [
        "inproc://fusedPose_data"
      ],
      "inputDataFilter": [
        "FusedPose"
      ],
      "settings": {}
    }
  }
}
Loading documentation…