TubeTK/OpenIGTLink: Difference between revisions
From KitwarePublic
< TubeTK
Jump to navigationJump to search
No edit summary |
|||
Line 24: | Line 24: | ||
=== Version 1 === | === Version 1 === | ||
Message types | |||
# Transform ( igtlTransformMessage ) | # Transform ( igtlTransformMessage ) | ||
# Image ( igtlImageMessage ) | # Image ( igtlImageMessage ) | ||
Line 31: | Line 31: | ||
=== Version 2 === | === Version 2 === | ||
In addition to the above message types, Version 2 provides a simple querying scheme. | |||
# Client can request the server side to send a data contained in a single message | |||
# Client can start and stop data streaming from the server | |||
=== Implementation === | === Implementation === | ||
Line 41: | Line 45: | ||
Version 2 | Version 2 | ||
http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink2_beta/ | http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink2_beta/ | ||
= OpenIGTLink CLI Application in TubeTK= | = OpenIGTLink CLI Application in TubeTK= |
Revision as of 17:13, 4 June 2010
Introduction
OpenIGTLink is a communication protocol designed to work on the TCP/IP application layer to handle image, tracking data, transform, device control and monitoring command, and other user-defined data types. Example usecases
- A computer running IGSTK based navigation application and a computer running Slicer are connected using a network cable. The IGSTK application gathers pose information of surgical instruments and packages them in OpenIGTLink message format and then sends the data over network connection using OpenIGTLink protocol to the computer running Slicer for visualization and/or further processing
- A computer running tubetk based vessel segmentation application is connected to the BrainLab VectorVision machine. VectorVisison fetches Ultrasound images, packages them as OpenIGTLink image message and sends it to the computer running the tubetk application.
Description
Workflow
Client
- Establish connection with server side ( Example: igtl::ClientSocket )
- Generate OpenIGTLink message (data-to-be-sent ) and package in Open IGT Link format. (Example: igtl::TransformMessage )
- Send data through TCP/IP socket connection
Server side
- Create a server socket and wait for the client to connect ( igtlServerSocket )
- When connection is established with a client, get into a "Ready" state to start receiving messages.
- When a message is received, error check and unpack the header and identify the message type and prepare to receive the message body
- Receive, error check, unpack and parse the message body according to the message type.
Versions
There are two versions of the protocol available.
Version 1
Message types
- Transform ( igtlTransformMessage )
- Image ( igtlImageMessage )
- Position ( igtlPositionMessage )
- Status message ( igtlStatusMessage )
Version 2
In addition to the above message types, Version 2 provides a simple querying scheme.
- Client can request the server side to send a data contained in a single message
- Client can start and stop data streaming from the server
Implementation
Surgical Navigation and Robotics Lab at BWH has developed a C++ library implementation of this protocol
Version 1 http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink
Version 2 http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink2_beta/