Skip to content
Beta.igtl@modelscript/igtl 10 diagnostic rules
Parser WASM GLR
Diagnostics 10 rules
DAE Arena Lowering
Simulation Co-sim / Export
Projections Modelica, URDF, DICOM-RT
Live ExampleCraniotomyNavSession.igtl.json

OpenIGTLink v3 Optical Tracker & Robotic Hand-Eye Calibration

Computer-assisted surgery navigation stream coupling optical tracker TRANSFORM frames, PivotTip calibration, and AX=XB hand-eye alignment.

Playground
Source (22 lines)
1{
2  "protocolVersion": "3.0",
3  "sessionName": "Craniotomy_OpticalNav_01",
4  "coordinateFrames": [
5    { "name": "TrackerBase", "parent": "World" },
6    { "name": "PatientReferenceStar", "parent": "TrackerBase" },
7    { "name": "SurgicalPointer", "parent": "TrackerBase" }
8  ],
9  "messages": [
10    {
11      "type": "TRANSFORM",
12      "deviceName": "SurgicalPointerToTracker",
13      "timestampNs": 1767225600125000000,
14      "matrix4x4": [
15        [0.9998, -0.0175, 0.0087, 124.50],
16        [0.0175,  0.9998, 0.0052, -42.15],
17        [-0.0088, -0.0050, 0.9999, 618.30],
18        [0.0,     0.0,     0.0,    1.0]
19      ]
20    }
21  ]
22}
OpenIGTLink Surgical Coordinate Frame Chain
T_tracker_pointer calibrate tip «optical camera» TrackerBase «parameters» World reference 6-DOF optical tracking «transform stream» SurgicalPointer «model» t = [124.5, -42.2, 618.3] SO(3) ortho verified «ax = xb calibration» Pivot & Hand-Eye «verification» Pivot RMS < 0.35 mm Real-time CAS nav
Drag to pan · Click % to reset

OpenIGTLink & PLUS Surgical Navigation (.igtl, .plus.xml) ​

@modelscript/igtl (languages/igtl) provides native WebAssembly parsing, SE(3) homogeneous transform orthogonality (R⊤R=I, detR=+1) and coordinate-frame graph connectivity verification, stylus pivot calibration, Fitzpatrick (1998) Target Registration Error (TRE) estimation, DAEBuilder lowering, and ROS 2 URDF / Modelica projections for OpenIGTLink and PLUS Toolkit image-guided surgical navigation systems.


Supported Extensions & Standards ​

ExtensionFormatDescription
.plus.xml, .xmlPLUS Toolkit ConfigPlusConfiguration XML defining optical/EM trackers (DataCollection), <CoordinateDefinitions> SE(3) transforms, pivot/phantom calibration, and <PlusOpenIGTLinkServer> streams
.igtlOpenIGTLink StreamSurgical navigation TRANSFORM, POSITION, TRACKING_DATA, IMAGE, and STATUS message definitions

Key Capabilities ​

1. SE(3) Coordinate Frame Graph & Matrix Orthogonality ​

  • Parses 4×4 homogeneous transformations TFrom→To∈SE(3) across surgical coordinate frames (Tracker, Patient, Reference, Stylus, StylusTip, Probe, UltrasoundImage, RAS) and computes composite chains via breadth-first graph traversal with automatic matrix inversion T−1=[R⊤−R⊤t0⊤1].

2. Stylus Pivot Calibration & Fitzpatrick Target Registration Error (TRE) ​

  • Solves least-squares spherical pivot calibration (solveTransformChainAndPivot) to determine stylus tip offset ptip, pivot point ppivot, and RMS calibration residual (<1.5 mm).
  • Evaluates expected surgical Target Registration Error at target r from N fiducial markers with Fiducial Localization Error (FLE) using Fitzpatrick's formula:⟨TRE2(r)⟩=⟨FLE2⟩N(1+13∑k=13dk2fk2)

3. ROS 2 URDF & Modelica Projections ​

  • Projects surgical tracker coordinate trees into ROS 2 URDF (igtlToUrdf) and Modelica 3.x (igtlToModelica).

Pre-Flight Diagnostics ​

10 rules9 error1 warning

CodeRuleSeverityMessage
M9801igtl-non-orthogonal-rotationerrorTransform '<from> -> <to>' has non-orthogonal or reflection 3x3 rotation block (||R^T R - I||_F = <frobErr>, det(R) = <det>).
M9802igtl-invalid-homogeneous-bottom-rowerrorTransform '<from> -> <to>' has invalid 4x4 homogeneous bottom row '[<rowStr>]' (expected '[0, 0, 0, 1]').
M9803igtl-disconnected-coordinate-frameerrorCoordinate frame graph is disconnected: <detail>.
M9804igtl-cyclic-transform-chainerrorDirected cycle detected in coordinate transform definitions: '<cycleStr>'.
M9805igtl-excessive-registration-errorwarningRegistration or calibration RMS error '<errorMm> mm' on '<contextName>' exceeds clinical safety threshold '<thresholdMm> mm'.
M9806igtl-invalid-acquisition-rateerrorDevice '<deviceId>' has invalid AcquisitionRate '<rateHz> Hz' (must be > 0 Hz).
M9807igtl-unresolved-device-or-channelerror'<contextName>' references undeclared <refKind> '<refId>'.
M9808igtl-self-transform-identity-mismatcherrorSelf-transform '<frameName> -> <frameName>' must be the 4x4 identity matrix.
M9809igtl-invalid-server-porterrorOpenIGTLink server '<serverId>' ListeningPort '<port>' is outside valid TCP port range [1024, 65535].
M9810igtl-duplicate-transform-edgeerrorDuplicate '<Transform>' defined for coordinate frame pair '(<from>, <to>)'.

Generated from languages/igtl/src/lints/rules.ts. All languages →


CLI Usage ​

bash
# Inspect tracking devices, SE(3) transforms, and OpenIGTLink servers
msx igtl inspect LaparoscopicTracker.plus.xml

# Validate SE(3) rotation orthogonality, frame connectivity, and TRE limits
msx igtl validate LaparoscopicTracker.plus.xml

# Solve coordinate frame chains, stylus pivot calibration, and Fitzpatrick TRE
msx igtl calibrate LaparoscopicTracker.plus.xml

# Project surgical navigation frame tree to ROS 2 URDF or Modelica
msx igtl to-urdf LaparoscopicTracker.plus.xml > SurgicalTracker.urdf
msx igtl to-modelica LaparoscopicTracker.plus.xml > SurgicalTracker.mo

Open-Core under the GNU AGPL v3 License; Enterprise Edition (ee/) under the ModelScript Enterprise License. • Pricing • Trademark Policy