Difference between revisions of "OpenIGTLink"

From NAMIC Wiki
Jump to: navigation, search
 
(287 intermediate revisions by 9 users not shown)
Line 1: Line 1:
<div class="floatright">__TOC__</div>
+
<font color=red>The OpenIGTLink official web page has moved to http://openigtlink.org/</font>
Open IGT Link is a simple network protocol intended for trackers, robots and other devices to send data to the main application. Some devices might accept commands.
 
* [http://www.ndigital.com/ Optotrack]
 
* MRI real time image
 
* [http://www.cisst.org/wiki/MRI_Robot JHU robots]
 
(Please contact us if you would like to include other devices.)
 
  
License: [http://www.opensource.org/licenses/bsd-license.php new BSD license] &copy;2008 Insight Software Consortium
+
Please click [[OpenIGTLink_OldPage|here]] to visit the old page.
 
 
=People / Organizations=
 
* [http://www.kitware.com/profile/team/ibanez.html Luis Ibanez], Kitware
 
* [http://www.spl.harvard.edu/pages/People/tokuda  Junichi Tokuda], BWH
 
* [http://www.cisst.org/wiki/User:Csoma Csaba Csoma], JHU
 
* Jack Blevins, Acousticmed
 
* Patrick Cheng, Georgetown University
 
* [http://www.spl.harvard.edu/pages/People/hliu Haying Liu], BWH
 
* [http://www.insightsoftwareconsortium.org/ Insight Software Consortium]
 
* [http://www.na-mic.org/ National Alliance for Medical Image Computing (NA-MIC)]
 
 
 
=Protocol=
 
 
 
===Header Structure===
 
  Bytes
 
  0  2                      14                                      34            42              50
 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+.....
 
  | V |          TYPE        |              DEVICE_NAME              |  BODY_SIZE  |      CRC64    |  BODY   
 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+.....
 
 
 
===Byte Order===
 
Big endian should be used for all numerical values (version, body size, crc). Unused spaces are padded with 0 (binary).
 
 
 
===Header Fields===
 
{| border="1" cellpadding="5" cellspacing="0" align="center"
 
|-
 
| align="left style="background:#e0e0e0;" | Data
 
| align="left style="background:#e0e0e0;" | Type
 
| align="left style="background:#e0e0e0;" | Description
 
|-
 
| align="left" | V
 
| align="left" | Unsigned short (16bit)
 
| align="left" | Version number (1)
 
|-
 
| align="left" | TYPE
 
| align="left" | char[8]
 
| align="left" | Type name of body
 
|-
 
| align="left" | DEVICE_NAME
 
| align="left" | char[20]
 
| align="left" | Unique device name
 
|-
 
| align="left" | BODY_SIZE
 
| align="left" | 64 bit unsigned int
 
| align="left" | Size of body in bytes
 
|-
 
| align="left" | CRC
 
| align="left" | 64 bit unsigned int
 
| align="left" | 64 bit CRC for body data
 
|-
 
|}
 
 
 
= Message types =
 
 
 
===IMAGE===
 
Image data consists of ascii header information followed by binary image pixel data.
 
(Ascii header is used to maintain compatibility with SlicerDaemon connection)
 
 
 
space right-anterior-superior\n
 
dimensions <xsize> <ysize> <zsize>\n
 
space_origin (<x>, <y>, <z>)\n
 
space_directions (<tx>, <ty>, <tz>) (<sx>, <sy>, <sz>) (<nx>, <ny>, <nz>) \n
 
kinds space space space\n
 
components 1\n
 
scalar_type <scalar type #>\n
 
<binary image data>
 
 
 
Descriptions:
 
{| border="1" cellpadding="5" cellspacing="0" align="center"
 
|-
 
| align="left style="background:#e0e0e0;" | Data
 
| align="left style="background:#e0e0e0;" | Type
 
| align="left style="background:#e0e0e0;" | Description
 
|-
 
| align="left" | <xsize>, <ysize>, <zsize>
 
| align="left" | text number (real)
 
| align="left" | Center position of the image in RAS coordinate
 
|-
 
| align="left" | <tx>, <ty>, <tz>
 
| align="left" | text number (real)
 
| align="left" | Transverse vector (direction for 'i' index) / The length represents pixel size in 'i' direction
 
|-
 
| align="left" | <sx>, <sy>, <sz>
 
| align="left" | text number (real)
 
| align="left" | Transverse vector (direction for 'j' index) / The length represents pixel size in 'j' direction
 
|-
 
| align="left" | <nx>, <ny>, <nz>
 
| align="left" | text number (real)
 
| align="left" | Normal vector of image plane(direction for 'k' index) /  The length represents pixel size in 'z' direction or slice thickness
 
|-
 
| align="left" | <scalar type #>
 
| align="left" | Pixel scalar type number (Ascii)
 
| align="left" | 2:int8 3:int8 4:int16 5:uint16 6:int32 7:uint32 10:float32 11:float64
 
|-
 
| align="left" | <binary image data>
 
| align="left" | Binary image data (<xsize>*<ysize>*<zsize>* (pixel size)
 
| align="left" | Image data
 
|-
 
|}
 
 
 
===TRANSFORM===
 
===POSITION===
 
===STATUS===
 
  Bytes (Body)
 
  50  52            60                          80
 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+.....
 
  | C |  Sub Code  |      Status name          |  Status message (optional)
 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--+-+-+.....
 
 
 
{| border="1" cellpadding="5" cellspacing="0"
 
|-
 
| align="left style="background:#e0e0e0;" | Data
 
| align="left style="background:#e0e0e0;" | Type
 
| align="left style="background:#e0e0e0;" | Description
 
|-
 
| align="left" | C
 
| align="left" | Unsigned short (16bit)
 
| align="left" | Status code groups: 1-Ok, 2-Generic Error, ... (see below)
 
|-
 
| align="left" | Sub Code
 
| align="left" | 64 bit integer
 
| align="left" | Sub code for the error (ex. 0x200 - file not found)
 
|-
 
| align="left" | Error name
 
| align="left" | char[20]
 
| align="left" | "Error", "Ok", "Starting up" - can be anything, don't relay on this
 
|-
 
| align="left" | Status Message (optional)
 
| align="left" | char[ BodySize - 30 ]
 
| align="left" | Optional (English) description (ex. "File C:\test.ini not found")
 
|-
 
|}
 
 
 
 
 
'''Status codes:'''<br />
 
0 No Errors Found (use status 1 instead!)<br />
 
1 OK (Default status)<br />
 
2 Unknown error<br />
 
3 Panic mode (emergency)<br />
 
4 Not found (file, configuration, device etc)<br />
 
5 Access denied<br />
 
6 Busy<br />
 
7 Time out / Connection lost<br />
 
8 Overflow / Can't be reached<br />
 
9 Checksum error<br />
 
10 Configuration error<br />
 
11 Not enough resource (memory, storage etc)<br />
 
12 Illegal/Unknown instruction (or feature not implemented)<br />
 
13 Device not ready (starting up)<br />
 
14 Manual mode (device does not accept commands)<br />
 
15 Device disabled<br />
 
16 Device not present<br />
 
17 Device version not known<br />
 
18 Hardware failure<br />
 
19 Exiting / shut down in progress<br />
 
<br />
 
 
 
 
 
= Resources =
 
* [[Slicer3:_Image_Guided_Therapy_(IGT) ]]
 
* [[Slicer/Features/Middleware | Middleware features]]
 
* [http://www.cisst.org/wiki/MRI_robot/MIT_2007_06_27_Meeting Initial discussion about requirements]
 

Latest revision as of 05:07, 7 April 2013

Home < OpenIGTLink

The OpenIGTLink official web page has moved to http://openigtlink.org/

Please click here to visit the old page.