Plus applications user manual  2.9.0.f430dd0
Software library for tracked ultrasound image acquisition, calibration, and processing.
OpenHaptics Device

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).

  • attribute.png
    Type = "OpenHaptics"
    required.png
  • attribute.png
    DeviceName Device Name. Name of device to connect to
    required.png
  • attribute.png
    AcquisitionRate
    optional.png
    Default = "20"
  • attribute.png
    LocalTimeOffsetSec
    optional.png
    Default = "0"
  • attribute.png
    ToolReferenceFrame
    optional.png
    Default = "Base"
  • element.png
    DataSources Three DataSource child elements are required.
    required.png
    • element.png
      DataSource
      required.png
    • attribute.png
      PortName
      required.png
      • 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.
    • attribute.png
      BufferSize
      optional.png
      Default = "150"
    • attribute.png
      AveragedItemsForFiltering
      optional.png
      Default = "20"
  • element.png
    InputChannels An Input channel is required to send force data to the device
    required.png
    • element.png
      InputChannel
      required.png
      • element.png
        Id Identifier of an output channel of another device containing a tool with PortName="Force"
        required.png

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>