Supported hardware devices
Supported platforms
Installation
Device configuration settings
The device will output three transforms: the tracking transform of the the stylus, the stylus velocity, and the stylus buttons. In order to transmit forces to the device, an input channel with a single tool DataSource (with portname "Force") should be provided. The force vector should be stored in the translation portion of the transformation matrix (RAS coordinates).
-
Type =
"OpenHaptics"
-
DeviceName Device Name. Name of device to connect to
-
AcquisitionRate
Default = "20"
-
LocalTimeOffsetSec
Default = "0"
-
ToolReferenceFrame
Default = "Base"
-
DataSources Three
DataSource
child elements are required.
-
DataSource
-
PortName
Stylus
Tracking transform for stylus (RAS).
StylusVelocity
Stylus velocity measurement (RAS). The values are stored in the translation part of the transformation matrix. The rotation part is identity.
Buttons
States for buttons. The button values are stored in the first column of the matrix. The inkwell switch is the first element in the second column.
-
BufferSize
Default = "150"
-
AveragedItemsForFiltering
Default = "20"
-
InputChannels An Input channel is required to send force data to the device
-
InputChannel
-
Id Identifier of an output channel of another device containing a tool with PortName="Force"
Example configuration file PlusDeviceSet_Server_OpenHaptics_WithForces.xml
<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0">
<DeviceSet
Name="PlusServer: Open Haptics device tracking and force rendering"
Description="Broadcasting device stylyus tracking data and receiving force data from 3D Slicer through OpenIGTLink." />
<Device
Id="3DSlicerForceDataSource"
Type="OpenIGTLinkTracker"
MessageType="TRANSFORM"
ToolReferenceFrame="Ref"
ServerAddress="127.0.0.1"
ServerPort="22222"
IgtlMessageCrcCheckEnabled="true"
AcquisitionRate="20"
ReconnectOnReceiveTimeout="true"
UseReceivedTimestamps ="FALSE"
UseLastTransformsOnReceiveTimeout ="TRUE">
<DataSources>
<DataSource Type="Tool" Id="Force" PortName="Force"/>
</DataSources>
<OutputChannels>
<OutputChannel Id="ForceStream">
<DataSource Id="Force" />
</OutputChannel>
</OutputChannels>
</Device>
<Device
Id="TrackerDevice"
Type="OpenHaptics"
AcquisitionRate="50"
ToolReferenceFrame="Base"
DeviceName="PLUS" >
<DataSources>
<DataSource Type="Tool" Id="Stylus" PortName="Stylus" />
<DataSource Type="Tool" Id="StylusVelocity" PortName="StylusVelocity" />
<DataSource Type="Tool" Id="Buttons" PortName="Buttons" />
</DataSources>
<InputChannels>
<InputChannel Id="ForceStream" />
</InputChannels>
<OutputChannels>
<OutputChannel Id="NeedleStream">
<DataSource Id="Stylus" />
<DataSource Id="StylusVelocity" />
<DataSource Id="Buttons" />
</OutputChannel>
</OutputChannels>
</Device>
</DataCollection>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="1"
MaxTimeSpentWithProcessingMs="50"
ListeningPort="18944"
OutputChannelId="NeedleStream" >
<DefaultClientInfo>
<MessageTypes>
<Message Type="TRANSFORM" />
</MessageTypes>
<TransformNames>
<Transform Name="StylusToBase" />
<Transform Name="StylusVelocityToBase" />
<Transform Name="ButtonsToBase" />
</TransformNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>
Example configuration file PlusDeviceSet_Server_OpenHaptics.xml
<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0">
<DeviceSet
Name="PlusServer: Open Haptics device tracking"
Description="Broadcasting device stylyus tracking data through OpenIGTLink." />
<Device
Id="TrackerDevice"
Type="OpenHaptics"
AcquisitionRate="50"
ToolReferenceFrame="Base"
DeviceName="PLUS" >
<DataSources>
<DataSource Type="Tool" Id="Stylus" PortName="Stylus" />
<DataSource Type="Tool" Id="StylusVelocity" PortName="StylusVelocity" />
<DataSource Type="Tool" Id="Buttons" PortName="Buttons" />
</DataSources>
<OutputChannels>
<OutputChannel Id="NeedleStream">
<DataSource Id="Stylus" />
<DataSource Id="StylusVelocity" />
<DataSource Id="Buttons" />
</OutputChannel>
</OutputChannels>
</Device>
</DataCollection>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="1"
MaxTimeSpentWithProcessingMs="50"
ListeningPort="18944"
OutputChannelId="NeedleStream" >
<DefaultClientInfo>
<MessageTypes>
<Message Type="TRANSFORM" />
</MessageTypes>
<TransformNames>
<Transform Name="StylusToBase" />
<Transform Name="StylusVelocityToBase" />
<Transform Name="ButtonsToBase" />
</TransformNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>