PlusLib  2.9.0
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>