Difference between revisions of "OpenIGTLink/ProtocolV2/Summary"

From NAMIC Wiki
Jump to: navigation, search
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
[[OpenIGTLink/ProtocolV2/Index | << OpenIGTLink Version 2]]
 +
 
=Overview=
 
=Overview=
The OpenIGTLink Protocol is ideal for building a research prototype system, because of its simple and standardized specification that requires less effort of developers on design and development of communication mechanism for systems integration. By using OpenIGTLink, developers can save their time for more essential part of research. The OpenIGTLink's simple specification has been well accepted by the community, resulting a number of applications in the IGT research community, since it's initial release in early 2008.
+
The OpenIGTLink Protocol is ideal for building a research prototype system, because of its simple and standardized specification that requires less effort on design and development of communication mechanism for systems integration. By using OpenIGTLink, developers can save their time for more essential part of research. The OpenIGTLink's simple specification has been well accepted by the community, resulting a number of applications in the IGT research community, since it's initial release in early 2008.
  
While we keep the protocol as simple as possible, there have also been a number of feature requests that would benefit many IGT research projects, such as connectivity with commercial products, and connectivity with other major research tools, such as MATLAB. To respond to those request, and to increase the number of potential applications, we decided review the requests and release version 2 protocol during NA-MIC Summer Project Week 2010. The new protocol defines a set of new message types with new querying scheme, while maintaining a backward compatibility with version 1. This page summarizes the features in version 2.
+
While we keep the protocol as simple as possible, it is also important to support as many IGT devices as possible to maximize the connectivity among software and devices, which potentially frees the developers from tedious coding just for system integration. There have been a number of feature requests that would benefit many IGT research projects, such as connectivity with commercial products, and connectivity with other major research tools, such as MATLAB. To respond to those request, and to increase the number of potential applications, we decided review the requests and release version 2 protocol during NA-MIC Summer Project Week 2010. The new protocol defines a set of new message types with new querying scheme, while maintaining a backward compatibility with version 1. This page summarizes the features in version 2.
  
 
=Simple Query Scheme=
 
=Simple Query Scheme=
Line 16: Line 18:
  
 
=New message types=
 
=New message types=
The following table shows a list of new message types in version 2.
+
The following tables show lists of message types available in version 2.
  
==Messages for image-guided systems(TBD)==
+
==New Messages for image-guided systems(TBD)==
 
{|border="1" cellpadding="1"
 
{|border="1" cellpadding="1"
 
| style="width:10%; background:#88A8FF"|Type name
 
| style="width:10%; background:#88A8FF"|Type name
Line 24: Line 26:
 
| style="width:10%; background:#88A8FF"|STT query
 
| style="width:10%; background:#88A8FF"|STT query
 
| style="width:10%; background:#88A8FF"|STP query
 
| style="width:10%; background:#88A8FF"|STP query
 +
| style="width:10%; background:#88A8FF"|RTS message
 
| style="width:60%; background:#88A8FF"|Description
 
| style="width:60%; background:#88A8FF"|Description
 
|-
 
|-
Line 30: Line 33:
 
||STT_TDATA
 
||STT_TDATA
 
||STP_TDATA
 
||STP_TDATA
 +
||RTS_TDATA
 
|align=left|Tracking data
 
|align=left|Tracking data
 
|-
 
|-
Line 36: Line 40:
 
||--
 
||--
 
||--
 
||--
|align=left|List of images including patient name, ID (medical record number), size, etc.
+
||RTS_IMGMETA
 +
|align=left|List of image meta data including patient name, ID (medical record number), size, etc.
 
|-
 
|-
 
|style="width:25%; background:#F0F8FF"| LBMETA
 
|style="width:25%; background:#F0F8FF"| LBMETA
Line 42: Line 47:
 
||--
 
||--
 
||--
 
||--
|align=left|List of label data.
+
||RTS_LBMETA
 +
|align=left|List of label meta data.
 
|-
 
|-
 
|style="width:25%; background:#F0F8FF"| POINT
 
|style="width:25%; background:#F0F8FF"| POINT
Line 48: Line 54:
 
||--
 
||--
 
||--
 
||--
 +
||RTS_POINT
 
|align=left|Points or fiducials.
 
|align=left|Points or fiducials.
 
|-
 
|-
Line 54: Line 61:
 
||--
 
||--
 
||--
 
||--
 +
||RTS_TRAJ
 
|align=left|Trajectory data (needle path etc.)
 
|align=left|Trajectory data (needle path etc.)
 
|-
 
|-
 
|}
 
|}
  
==Messages for other applications (TBD)==
+
==New Messages for general applications (TBD)==
 +
{|border="1" cellpadding="1"
 +
| style="width:10%; background:#88A8FF"|Type name
 +
| style="width:10%; background:#88A8FF"|GET query
 +
| style="width:10%; background:#88A8FF"|STT query
 +
| style="width:10%; background:#88A8FF"|STP query
 +
| style="width:10%; background:#88A8FF"|RTS message
 +
| style="width:60%; background:#88A8FF"|Description
 +
|-
 +
|style="width:25%; background:#F0F8FF"| REXEC
 +
||GET_REXEC
 +
||--
 +
||--
 +
||RTS_REXEC
 +
|align=left|Remote procedure execution. In most case, the REXEC type is issued as a query (GET_REXEC) and obtain a RTS_REXEC message that contains a list of result data.
 +
|-
 +
|style="width:25%; background:#F0F8FF"| AARRAY
 +
||GET_AARRAY
 +
||STT_AARRAY
 +
||STP_AARRAY
 +
||RTS_AARRAY
 +
|align=left|Associative array to transfer a set of values with key names.
 +
|-
 +
|}
 +
 
  
==Messages Since version 1==
+
==Messages from version 1==
 
{|border="1" cellpadding="1"
 
{|border="1" cellpadding="1"
 
| style="width:10%; background:#88A8FF"|Type name
 
| style="width:10%; background:#88A8FF"|Type name
Line 66: Line 98:
 
| style="width:10%; background:#88A8FF"|STT query
 
| style="width:10%; background:#88A8FF"|STT query
 
| style="width:10%; background:#88A8FF"|STP query
 
| style="width:10%; background:#88A8FF"|STP query
 +
| style="width:10%; background:#88A8FF"|RTS message
 
| style="width:60%; background:#88A8FF"|Description
 
| style="width:60%; background:#88A8FF"|Description
 
|-
 
|-
Line 72: Line 105:
 
||STT_IMAGE
 
||STT_IMAGE
 
||STP_IMAGE
 
||STP_IMAGE
 +
||RTS_IMAGE
 
|align=left|2D/3D image data
 
|align=left|2D/3D image data
 
|-
 
|-
Line 78: Line 112:
 
||STT_TRANSFOR
 
||STT_TRANSFOR
 
||STP_TRANSFOR
 
||STP_TRANSFOR
 +
||RTS_TRANSFOR
 
|align=left|Affine transform data.  
 
|align=left|Affine transform data.  
 
|-
 
|-
Line 84: Line 119:
 
||STT_POSITION
 
||STT_POSITION
 
||STP_POSITION
 
||STP_POSITION
 +
||RTS_POSITION
 
|align=left|Position and orientation (quaternion)
 
|align=left|Position and orientation (quaternion)
 
|-
 
|-
Line 90: Line 126:
 
||--
 
||--
 
||--
 
||--
 +
||RTS_CAPABIL
 
|align=left|Points or fiducials.
 
|align=left|Points or fiducials.
 
|-
 
|-
Line 96: Line 133:
 
||--
 
||--
 
||--
 
||--
 +
||RTS_STATUS
 
|align=left|Device status
 
|align=left|Device status
 
|-
 
|-
 
|}
 
|}

Latest revision as of 18:09, 12 December 2011

Home < OpenIGTLink < ProtocolV2 < Summary

<< OpenIGTLink Version 2

Overview

The OpenIGTLink Protocol is ideal for building a research prototype system, because of its simple and standardized specification that requires less effort on design and development of communication mechanism for systems integration. By using OpenIGTLink, developers can save their time for more essential part of research. The OpenIGTLink's simple specification has been well accepted by the community, resulting a number of applications in the IGT research community, since it's initial release in early 2008.

While we keep the protocol as simple as possible, it is also important to support as many IGT devices as possible to maximize the connectivity among software and devices, which potentially frees the developers from tedious coding just for system integration. There have been a number of feature requests that would benefit many IGT research projects, such as connectivity with commercial products, and connectivity with other major research tools, such as MATLAB. To respond to those request, and to increase the number of potential applications, we decided review the requests and release version 2 protocol during NA-MIC Summer Project Week 2010. The new protocol defines a set of new message types with new querying scheme, while maintaining a backward compatibility with version 1. This page summarizes the features in version 2.

Simple Query Scheme

OpenIGTLink V.2 defines a simple querying scheme on top of the existing message format, by introducing a few prefix to the device type field.

Request a single message

A client can request to send data contained in a single message, by issuing a query message with a device type string starting with "GET_". If specified data is not available, a message with a device type string starting with "RTS_" is returned. For example, when a client requests an IMAGE message to a server, it sends GET_IMAGE message to the server as a query. If the image exist, an IMAGE message is returned from the server to the client. Otherwise, a RTS_IMAGE message with error code is returned.

Request a stream of messages (introduced in version 2)

A client can start and stop data streaming (sent as a series of messages) from a server, by issuing a query message with a device type starting with "STT_" and "STP_" respectively. If data requested by a "STT_" message is not available, the server returns a message with a device type string starting with "RTS_" prefix. A STP_ message is also acknowledged by a "RTS_" message.

This is useful to start and stop position tracking or real-time imaging remotely from the client. For example, once the server receives "STT_TDATA" message from the client, it start sending "TDATA" messages to the client. The server keep sending "TDATA" messages until it receives "STP_TDATA" from the client.

New message types

The following tables show lists of message types available in version 2.

New Messages for image-guided systems(TBD)

Type name GET query STT query STP query RTS message Description
TDATA GET_TDATA STT_TDATA STP_TDATA RTS_TDATA Tracking data
IMGMETA GET_IMGMETA -- -- RTS_IMGMETA List of image meta data including patient name, ID (medical record number), size, etc.
LBMETA GET_LBMETA -- -- RTS_LBMETA List of label meta data.
POINT GET_POINT -- -- RTS_POINT Points or fiducials.
TRAJ GET_TRAJ -- -- RTS_TRAJ Trajectory data (needle path etc.)

New Messages for general applications (TBD)

Type name GET query STT query STP query RTS message Description
REXEC GET_REXEC -- -- RTS_REXEC Remote procedure execution. In most case, the REXEC type is issued as a query (GET_REXEC) and obtain a RTS_REXEC message that contains a list of result data.
AARRAY GET_AARRAY STT_AARRAY STP_AARRAY RTS_AARRAY Associative array to transfer a set of values with key names.


Messages from version 1

Type name GET query STT query STP query RTS message Description
IMAGE GET_IMAGE STT_IMAGE STP_IMAGE RTS_IMAGE 2D/3D image data
TRANSFORM GET_TRANSFOR STT_TRANSFOR STP_TRANSFOR RTS_TRANSFOR Affine transform data.
POSITION GET_POSITION STT_POSITION STP_POSITION RTS_POSITION Position and orientation (quaternion)
CAPABILITY GET_CAPABIL -- -- RTS_CAPABIL Points or fiducials.
STATUS GET_STATUS -- -- RTS_STATUS Device status