Plus applications user manual  2.9.0.0be062e
Software library for tracked ultrasound image acquisition, calibration, and processing.
PlusServer application

PlusServer is an application that runs Plus functions and sends acquired data to remote clients through OpenIGTLink connection. Typical example is to use Plus for acquiring tracked ultrasound image slices and send them for real-time visualization to 3D Slicer.

The server supports continuous data acquisition and sending and also on-request starting/stopping of recording, volume reconstruction, updating of transforms, saving of the modified device set configuration file, etc. Requests are received through OpenIGTLink commands. See more details at PlusServer commands .

Usage

The most convenient way to launch PlusServer is using PlusServerLauncher. After installing the Plus Applications package, the Plus Server Launcher can be found from the start menu. See more details at PlusServerLauncher application .

Visualization of acquired data

To visualize the images and transforms broadcasted by the PlusServer use an application such as 3D Slicer:

  • Install and start 3D Slicer
  • Create a new connection in the OpenIGTLinkIF module: client, default port name (18944), and set it Active
  • Go to the Transforms module to see the transforms
  • Choose an input image in the slice viewer window to see the live image

Command-line usage

PlusServer can be also started from the command-line. The list of available command-line parameters are printed if the –help parameter is specified.

Launch the command-line-only version of PlusServer (no graphical user interface):

PlusServer --config-file=PlusServer.xml
--config-file=opt Configuration file name
--connect Automatically connect after the
application is started
--device-set-configuration-dir=opt Device set configuration directory path
--help Print this help.
--verbose=opt Verbose level (1=error only, 2=warning,
3=info, 4=debug)

Configuration settings

  • element.png
    PlusOpenIGTLinkServer
    • attribute.png
      ListeningPort Port number where the server listens for incoming connections. Typical value is 18944.
      required.png
    • attribute.png
      OutputChannelId Name of the channel to get the data from. Must match the Id attribute value of one of the OutputChannel elements in a device.
      required.png
    • attribute.png
      MaxNumberOfIgtlMessagesToSend Maximum number of messages to send to clients at each update.
      optional.png
      Default = "100"
    • attribute.png
      MaxTimeSpentWithProcessingMs Maximum time spent with sending messages to clients at each update.
      optional.png
      Default = "50"
    • attribute.png
      MissingInputGracePeriodSec This value defines for how long after initiating connection a the server should not report missing inputs as error. After the grace period expires, the server will report missing inputs as errors or warnings.
      optional.png
      Default = "0"
    • attribute.png
      SendValidTransformsOnly If TRUE then only valid transforms will be sent. If FALSE then invalid messages are sent, too (if a transform is invalid then an identity matrix will be sent).
      optional.png
      Default = "TRUE"
    • attribute.png
      SendColumnMajorTransforms If TRUE then transforms will be sent in column major format. If FALSE then transforms will be sent in row major format.
      optional.png
      Default = "TRUE"
    • attribute.png
      NumberOfRetryAttempts The number of retry attempts to perform when a message cannot be sent before considering them disconnected
      optional.png
      Default = "10"
    • attribute.png
      DelayBetweenRetryAttemptsSec The delay between each retry attempt. In combination with NumberOfRetryAttemps this determines how long to wait before considering a client disconnected.
      optional.png
      Default = "0.05"
    • attribute.png
      DefaultClientSendTimeoutSec If set, this value is used to determine how long to wait before considering a pending send message a timeout. A value of 0 means no timeout.
      optional.png
      Default = "0.5"
    • attribute.png
      DefaultClientReceiveTimeoutSec If set, this value is used to determine how long to wait before considering no network input as a timeout. A value of 0 means no timeout.
      optional.png
      Default = "0.5"
    • attribute.png
      IgtlMessageCrcCheckEnabled If TRUE then incoming OpenIGTLink messages are only accepted if their CRC is valid. If FALSE then CRC is not checked.
      optional.png
      Default = "FALSE"
    • attribute.png
      LogWarningOnNoDataAvailable If TRUE, a warning will be logged when no data is available yet.
      optional.png
      Default = "TRUE"
    • attribute.png
      KeepAliveIntervalSec The time to wait between sending keep alive messages
      optional.png
      Default = "0.25"
    • element.png
      DefaultClientInfo
      • attribute.png
        TDATARequested For clients that have the TDATA message type requested, this parameter can control default sending of data on startup.
        optional.png
        Default = "FALSE"
      • attribute.png
        TDATAResolution For TDATA messages, the minimum time between two frames. Use 0 for as fast as possible. If e.g. 50 ms is specified, the maximum update rate will be 20 Hz.
        optional.png
        Default = "0"
      • element.png
        MessageTypes
        • element.png
          Message
          • attribute.png
            Type
            • IMAGE: standard OpenIGTLink message type, stores 3D image data (can be a single slice, includes position and orientation)
            • TRANSFORM: standard OpenIGTLink message type, stores 3D pose (position and orientation) data
            • POSITION: standard OpenIGTLink message type, stores 3D position data
            • TRACKEDFRAME: Plus tracked ultrasound frame, stores all frame fields (tool transforms, statuses, etc). Optionally, sent transforms can be customized using the TransformNames list.
            • USMESSAGE: MUSiiC tracked ultrasound frame, stores additional imaging information, such as transmit and sampling frequency, line density, steering angle
            • STRING: standard OpenIGTLink message type, stores a simple character string
            • VIDEO: standard OpenIGTLink message type, stores a compressed video frame
      • element.png
        TransformNames
        • element.png
          Transform
          • attribute.png
            Name
      • element.png
        StringNames
        • element.png
          String Name of the frame string that is sent as a STRING message. Any frame field (Timestamp, any status message, any frame fields) can be specified here.
      • element.png
        ImageNames
        • element.png
          Image
          • attribute.png
            Name Name of the image stream. It also defines the "From" frame of the transform embedded in the IGTL image message.
          • attribute.png
            EmbeddedTransformToFrame "To" frame of the transform embedded in the IGTL image message
      • element.png
        VideoNames
        • element.png
          Video
          • attribute.png
            Name Name of the image stream. It also defines the "From" frame of the transform embedded in the IGTL image message.
          • attribute.png
            EmbeddedTransformToFrame "To" frame of the transform embedded in the IGTL image message
          • element.png
            Encoding
            • attribute.png
              FourCC FourCC value of the codec that is used to encode the image as a VideoMessage. Available types: I420: "I420", VP9:"VP90"
              optional.png
              Default = "VP90"
            • attribute.png
              Lossless If TRUE, encoding will be performed losslessly if possible.
              optional.png
              Default = "FALSE"
            • attribute.png
              MinKeyframeDistance The minimum required distance between encoded keyframes.
              optional.png
              Default = "-1"
            • attribute.png
              MaxKeyframeDistance The maximum required distance between encoded keyframes.
              optional.png
              Default = "-1"
            • attribute.png
              Speed The encoding speed for the encoder.
              optional.png
              Default = "8"
            • attribute.png
              DeadlineMode The deadline mode for the encoder. Possible values: "REALTIME", "GOOD", "BEST".
              optional.png
              Default = "REALTIME"
            • attribute.png
              RateControl The rate control mode for the encoder. Possible values: "CBR" (Constant bit rate), "VBR" (Variable bit rate), "CQ" (Constrained quality), "Q" (Constant Quality).
              optional.png
              Default = "Q"
            • attribute.png
              TargetBitrate The target bitrate for the encoder.
              optional.png
              Default = "-1"

This is an example element that needs to be added to the PLUS configuration xml file to use PlusServer:

<PlusOpenIGTLinkServer
  MaxNumberOfIgtlMessagesToSend="10"
  MaxTimeSpentWithProcessingMs="50"
  ListeningPort="18944"
  MissingInputGracePeriodSec="5.0"
  SendValidTransformsOnly="TRUE"
  OutputChannelId="SomeValidChannel" >
  <DefaultClientInfo>
    <MessageTypes>
      <Message Type="IMAGE" />
      <Message Type="TRANSFORM" />
    </MessageTypes>
    <TransformNames>
      <Transform Name="StylusTipToReference" />
      <Transform Name="ProbeToReference" />
    </TransformNames>
  </DefaultClientInfo>
</PlusOpenIGTLinkServer>