NDI tracking setup¶
Installation¶
Plus Toolkit installation¶
The Plus Toolkit provides tools for communication with tool tracking hardware (e.g. NDI and OptiTrack cameras).
Download from here.
Configuration¶
Plus Server device set specification¶
Plus Server will act as a bridge between the NDI camera and NaviNIBS. A Device set
xml file is required to specify the devices for which Plus Server will relay pose information.
Example Plus Device sets
<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0" >
<DeviceSet
Name="PlusServer: NDI Polaris Vega Network Basic"
Description="Broadcasting tool tracking data through OpenIGTLink" />
<Device
Id="TrackerDevice"
Type="NDITracker"
NetworkHostname="192.155.1.82"
NetworkPort="8765"
ToolReferenceFrame="Tracker" >
<DataSources>
<DataSource Type="Tool" Id="Coil1" RomFile="./tools/TMS-Coil-1.rom" />
<DataSource Type="Tool" Id="Coil2" RomFile="./tools/TMS-Coil-2.rom" />
<DataSource Type="Tool" Id="Pointer" RomFile="./tools/Pointer.rom" />
<DataSource Type="Tool" Id="Subject" RomFile="./tools/TMS-Reference.rom" />
<DataSource Type="Tool" Id="Calibration" RomFile="./tools/TMS-Calibration-Plate.rom" />
</DataSources>
<OutputChannels>
<OutputChannel Id="TrackerStream" >
<DataSource Id="Coil1"/>
<DataSource Id="Coil2"/>
<DataSource Id="Pointer"/>
<DataSource Id="Subject"/>
<DataSource Id="Calibration"/>
</OutputChannel>
</OutputChannels>
</Device>
</DataCollection>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="100"
MaxTimeSpentWithProcessingMs="50"
ListeningPort="18944"
SendValidTransformsOnly="false"
NumberOfRetryAttempts="10"
OutputChannelId="TrackerStream" >
<DefaultClientInfo>
<MessageTypes>
<Message Type="TRANSFORM" />
</MessageTypes>
<TransformNames>
<Transform Name="Coil1ToTracker" />
<Transform Name="Coil2ToTracker" />
<Transform Name="PointerToTracker" />
<Transform Name="SubjectToTracker" />
<Transform Name="CalibrationToTracker" />
</TransformNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>
<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0" >
<DeviceSet
Name="PlusServer: NDI Polaris Vega Serial Basic"
Description="Broadcasting tool tracking data through OpenIGTLink" />
<Device
Id="TrackerDevice"
Type="NDITracker"
SerialPort="COM15"
BaudRate="115200"
ToolReferenceFrame="Tracker" >
<DataSources>
<DataSource Type="Tool" Id="Coil1" RomFile="./tools/TMS-Coil-1.rom" />
<DataSource Type="Tool" Id="Coil2" RomFile="./tools/TMS-Coil-2.rom" />
<DataSource Type="Tool" Id="Pointer" RomFile="./tools/Pointer.rom" />
<DataSource Type="Tool" Id="Subject" RomFile="./tools/TMS-Reference.rom" />
<DataSource Type="Tool" Id="Calibration" RomFile="./tools/TMS-Calibration-Plate.rom" />
</DataSources>
<OutputChannels>
<OutputChannel Id="TrackerStream" >
<DataSource Id="Coil1"/>
<DataSource Id="Coil2"/>
<DataSource Id="Pointer"/>
<DataSource Id="Subject"/>
<DataSource Id="Calibration"/>
</OutputChannel>
</OutputChannels>
</Device>
</DataCollection>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="100"
MaxTimeSpentWithProcessingMs="50"
ListeningPort="18944"
SendValidTransformsOnly="false"
NumberOfRetryAttempts="10"
OutputChannelId="TrackerStream" >
<DefaultClientInfo>
<MessageTypes>
<Message Type="TRANSFORM" />
</MessageTypes>
<TransformNames>
<Transform Name="Coil1ToTracker" />
<Transform Name="Coil2ToTracker" />
<Transform Name="PointerToTracker" />
<Transform Name="SubjectToTracker" />
<Transform Name="CalibrationToTracker" />
</TransformNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>
<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0" >
<DeviceSet
Name="PlusServer: NDI Polaris Vega Network Cobot"
Description="Broadcasting tool tracking data through OpenIGTLink" />
<Device
Id="TrackerDevice"
Type="NDITracker"
NetworkHostname="192.155.1.82"
NetworkPort="8765"
ToolReferenceFrame="Tracker" >
<DataSources>
<DataSource Type="Tool" Id="Coil1" RomFile="./tools/TMS-Coil-1.rom" />
<DataSource Type="Tool" Id="Coil2" RomFile="./tools/TMS-Coil-2.rom" />
<DataSource Type="Tool" Id="Pointer" RomFile="./tools/Pointer.rom" />
<DataSource Type="Tool" Id="Subject" RomFile="./tools/TMS-Reference.rom" />
<DataSource Type="Tool" Id="Calibration" RomFile="./tools/TMS-Calibration-Plate.rom" />
<DataSource Type="Tool" Id="CobotLeft" RomFile="./tools/Axilum-TMS-Cobot-Left-World.rom" />
<DataSource Type="Tool" Id="CobotRight" RomFile="./tools/Axilum-TMS-Cobot-Right-World.rom" />
</DataSources>
<OutputChannels>
<OutputChannel Id="TrackerStream" >
<DataSource Id="Coil1"/>
<DataSource Id="Coil2"/>
<DataSource Id="Pointer"/>
<DataSource Id="Subject"/>
<DataSource Id="Calibration"/>
<DataSource Id="CobotLeft"/>
<DataSource Id="CobotRight"/>
</OutputChannel>
</OutputChannels>
</Device>
</DataCollection>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="100"
MaxTimeSpentWithProcessingMs="50"
ListeningPort="18944"
SendValidTransformsOnly="false"
NumberOfRetryAttempts="10"
OutputChannelId="TrackerStream" >
<DefaultClientInfo>
<MessageTypes>
<Message Type="TRANSFORM" />
</MessageTypes>
<TransformNames>
<Transform Name="Coil1ToTracker" />
<Transform Name="Coil2ToTracker" />
<Transform Name="PointerToTracker" />
<Transform Name="SubjectToTracker" />
<Transform Name="CalibrationToTracker" />
<Transform Name="CobotLeftToTracker" />
<Transform Name="CobotRightToTracker" />
</TransformNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>
See the Plus Toolkit NDI documentation for more information.
- Create your Plus device set file.
Make sure to update your camera network address or serial port COM port in the device set file based on your own setup.
Make sure that .rom files are accessible for every tool you need to track.
Open Plus Server Launcher
Change the “Device set configuration directory” to the directory containing your device set file.
You should see your device set populate as one of the items in the “Device set:” dropdown. Select it.
Click “Launch server”
Confirm that tracking data is broadcasting.
- Define tools in NaviNIBS, with
trackerKey
matching theId
of each device in the device set file. Optionally, also define an NDI camera visibility tool with a fixed initial position to visualize the extent of the camera’s field of view.
- Define tools in NaviNIBS, with
(After defining suitable tools in NaviNIBS) launch CameraPanel in NaviNIBS to try viewing the tracked tools.
Usage¶
Launch Plus Server Launcher. Your previous device set should be selected automatically. Click “Launch server” to start streaming tracker poses.
Launch NaviNIBS. Behind the scenes, the NaviNIBS tool positions server should launch automatically, making streamed tool positions available throughout NaviNIBS.
Check tool visibility in NaviNIBS (e.g. in the
Camera
panel).