Susi Server

Point Calibration

Node ID: pointCalibration · Role: Sink · Realtime config: no

Description

Marks known real-world points with a tracked stylus body and solves the rigid transform that aligns the optical tracking frame with a set of virtual reference points (e.g. collapse a virtual cube onto its real counterpart). With a Target Body wired, points are instead measured in that body’s frame, solving the transform from the body’s tracked frame to the reference (e.g. CAD) frame - apply it to the DTrack body to re-frame its marker geometry. Includes a pivot calibration that recovers the stylus tip offset by rotating the stylus around a fixed tip.

Inputs / Outputs

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
tipOffsetStylus Tip Offsetvector3{"x":0.0,"y":0.0,"z":0.0}Offset from the tracked stylus body origin to its physical tip, in the body frame (m). Solve it with the pivot calibration in the Point Alignment view.
captureWindowMsCapture Window (ms)number750hidden 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": {
    "pointCalibration": {
      "inputEndpoints": [
        "inproc://optical_data",
        "inproc://targetBody_data"
      ],
      "inputDataFilter": [
        "Optical",
        "Optical"
      ],
      "settings": {
        "captureWindowMs": 750,
        "tipOffset": {
          "x": 0.0,
          "y": 0.0,
          "z": 0.0
        }
      }
    }
  }
}

Field reference

FieldPurpose
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…