PlusLib  2.9.0
Software library for tracked ultrasound image acquisition, calibration, and processing.
Ascension electromagnetic tracking devices (and Ultrasonix SonixGPS)

Supported hardware devices

Supported platforms

Support for medSAFE models is not included in any of the standard packages, as they use different versions of the same DLLs as non-medSAFE trackers.

To support medSAFE models Plus have to be built with PLUS_USE_Ascension3DGm configuration option enabled as described at https://github.com/PlusToolkit/PlusBuild/blob/master/Docs/BuildInstructionsWindows.md.

Installation

  • Sensors must be all located in front of the frontplate of the field generator (the side with large the Ascension motif on it): tools are still tracked behind the frontplate, but their orientation may be inverted.
  • If pose measurement seems to be incorrect (somewhat translated/rotated) then unplug the sensor and plug it in again.
  • Tracking a Stylus: It is recommended to place the EM sensor as close to the needle tip as possible. The best accuracy is expected from a thick needle with a sensor near the needle tip.
  • If you are using the tracker of an Ultrasonix SonixGPS system and the Exam software is running (e.g., because images are acquired using the Ulterius interface), then you need to disable the SonixGPS license to prevent the Exam software from using the tracker. This is done because only one application can communicate with the tracker at a time (either your application or the Exam software). To disable SonixGPS press menu on the touchscreen. Go to Administrator, Licenses and unselect SonixGPS from the licenses menu.

Device configuration settings

  • attribute.png
    Type = "Ascension3DG"
    required.png
  • attribute.png
    AcquisitionRate
    optional.png
    Default = "50"
  • attribute.png
    LocalTimeOffsetSec
    optional.png
    Default = "0"
  • attribute.png
    ToolReferenceFrame
    optional.png
    Default = "Tracker"
  • attribute.png
    FilterAcWideNotch AC wide notch filter status flag.
    optional.png
    Default = "0"
  • attribute.png
    FilterAcNarrowNotch AC narrow notch filter status flag.
    optional.png
    Default = "0"
  • attribute.png
    FilterDcAdaptive DC adaptive filter parameter (0.0 for no filtering, 1.0 for maximum filtering).
    optional.png
    Default = "0"
  • attribute.png
    FilterLargeChange Large change filter status flag.
    optional.png
    Default = "0"
  • attribute.png
    FilterAlpha Alpha filter status flag.
    optional.png
    Default = "0"
  • attribute.png
    Hemisphere Defines in which hemisphere, centered about the transmitter, the sensors are located.
    optional.png
    Default = "FRONT"
    • FRONT The FRONT is the forward hemisphere in front of the transmitter. The front of the transmitter is the side with the Ascension logo molded into the case. It is the side opposite the side with the 2 positioning holes. This is the default.
    • BACK The BACK is the opposite hemisphere to the FRONT hemisphere.
    • TOP The TOP hemisphere is the upper hemisphere. When the transmitter is sitting on a flat surface with the locating holes on the surface the TOP hemisphere is above the transmitter.
    • BOTTOM The BOTTOM hemisphere is the opposite hemisphere to the TOP hemisphere.
    • LEFT The LEFT hemisphere is the hemisphere to the left of the observer when looking at the transmitter from the back.
    • RIGHT The RIGHT hemisphere is the opposite hemisphere to the LEFT hemisphere. The LEFT hemisphere is on the left side of the observer when looking at the transmitter from the back.
  • element.png
    DataSources One DataSource child element for each tool.
    required.png
    • element.png
      DataSource
      required.png
      • attribute.png
        Type = "Tool"
        required.png
      • attribute.png
        PortName Identifies the connector (0, 1, 2, or 3) or a virtual tool that contains the quality values ( quality1 for tool ports 0, 1, and 2; quality2 for tool port 3, 4, 5; quality3 for tool port 6, 7).
        required.png
      • attribute.png
        QualityErrorSlope The slope should have a value between -127 and +127.
        optional.png
        Default = "0"
      • attribute.png
        QualityErrorOffset default: The offset should have a value between -127 and +127.
        optional.png
        Default = "0"
      • attribute.png
        QualityErrorSensitivity: The sensitivity should have a value between 0 and 127
        optional.png
        Default = "2"
      • attribute.png
        QualityFilterAlpha: The alpha should have a value between 0 and 127.
        optional.png
        Default = "12"
      • attribute.png
        BufferSize
        optional.png
        Default = "150"
      • attribute.png
        AveragedItemsForFiltering
        optional.png
        Default = "20"

Quality values

The tool ports quality1, quality2, and quality3 provide the quality values for all the tools.

The quality numbers are stored in the translation component of the transformation matrix. If a value is not available then it is set to -1.

  • quality1: quality values for sensor port 0-2.
  • quality2: quality values for sensor port 3-5 (there are 4 ports on one control unit, so quality values for port 4 and 5 may not be available).
  • quality3: quality values for sensor port 6-7 (there are 8 ports if two control units are used, so quality values for port 8 and 9 may not be available).

Example configuration file PlusDeviceSet_Server_Ascension3DG.xml

<PlusConfiguration version="2.3">
<DataCollection StartupDelaySec="1.0" >
<DeviceSet
Name="PlusServer: Ascension 3DG tracker"
Description="Broadcasting tool tracking data through OpenIGTLink
Ascension3DG sensors should be plugged in to the Ascension3DG DriveBay mounted on Ultrasonix US in the following order from to leftmost slot (Transducer 1) to the right: 1 Probe, 2 Reference, 3 Stylus."
/>
<Device
Id="TrackerDevice"
Type="Ascension3DG"
FilterAcWideNotch="1"
ToolReferenceFrame="Tracker" >
<DataSources>
<DataSource Type="Tool" Id="Probe" PortName="0" />
<DataSource Type="Tool" Id="Reference" PortName="1" />
<DataSource Type="Tool" Id="Stylus" PortName="2" />
</DataSources>
<OutputChannels>
<OutputChannel Id="TrackerStream" >
<DataSource Id="Probe"/>
<DataSource Id="Reference"/>
<DataSource Id="Stylus"/>
</OutputChannel>
</OutputChannels>
</Device>
<Device
Id="CaptureDevice"
Type="VirtualCapture"
BaseFilename="RecordingTest.igs.mha"
EnableCapturingOnStart="FALSE" >
<InputChannels>
<InputChannel Id="TrackerStream" />
</InputChannels>
</Device>
</DataCollection>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="1"
MaxTimeSpentWithProcessingMs="50"
ListeningPort="18944"
OutputChannelId="TrackerStream" >
<DefaultClientInfo>
<MessageTypes>
<Message Type="TRANSFORM" />
</MessageTypes>
<TransformNames>
<Transform Name="ProbeToTracker" />
<Transform Name="ReferenceToTracker" />
<Transform Name="StylusToTracker" />
</TransformNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>