<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.na-mic.org/w/index.php?action=history&amp;feed=atom&amp;title=OpenIGTLink%2FTutorial%2Figtlutil</id>
	<title>OpenIGTLink/Tutorial/igtlutil - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.na-mic.org/w/index.php?action=history&amp;feed=atom&amp;title=OpenIGTLink%2FTutorial%2Figtlutil"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Tutorial/igtlutil&amp;action=history"/>
	<updated>2026-04-07T20:08:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Tutorial/igtlutil&amp;diff=28253&amp;oldid=prev</id>
		<title>Tokuda at 21:10, 15 July 2008</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Tutorial/igtlutil&amp;diff=28253&amp;oldid=prev"/>
		<updated>2008-07-15T21:10:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 21:10, 15 July 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[OpenIGTLink/Tutorial | &amp;amp;lt;&amp;amp;lt; OpenIGTLink Tutorial Home]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[OpenIGTLink&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/Library&lt;/ins&gt;/Tutorial | &amp;amp;lt;&amp;amp;lt; OpenIGTLink Tutorial Home]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tokuda</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Tutorial/igtlutil&amp;diff=28252&amp;oldid=prev</id>
		<title>Tokuda at 21:10, 15 July 2008</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Tutorial/igtlutil&amp;diff=28252&amp;oldid=prev"/>
		<updated>2008-07-15T21:10:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 21:10, 15 July 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[OpenIGTLink/Tutorial | &amp;amp;lt;&amp;amp;lt; OpenIGTLink Tutorial Home]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&amp;quot;floatright&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Serializing Open IGT Link message for linear transform data=&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Serializing Open IGT Link message for linear transform data=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tokuda</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=OpenIGTLink/Tutorial/igtlutil&amp;diff=28251&amp;oldid=prev</id>
		<title>Tokuda: New page: =Serializing Open IGT Link message for linear transform data=  To generate a transform message using the igtlutil library, first we include following header files:    #include &quot;igtl_util.h...</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=OpenIGTLink/Tutorial/igtlutil&amp;diff=28251&amp;oldid=prev"/>
		<updated>2008-07-15T21:09:06Z</updated>

		<summary type="html">&lt;p&gt;New page: =Serializing Open IGT Link message for linear transform data=  To generate a transform message using the igtlutil library, first we include following header files:    #include &amp;quot;igtl_util.h...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Serializing Open IGT Link message for linear transform data=&lt;br /&gt;
&lt;br /&gt;
To generate a transform message using the igtlutil library, first we include following header files:&lt;br /&gt;
&lt;br /&gt;
  #include &amp;quot;igtl_util.h&amp;quot;&lt;br /&gt;
  #include &amp;quot;igtl_header.h&amp;quot;&lt;br /&gt;
  #include &amp;quot;igtl_transform.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then, prepare a transform:&lt;br /&gt;
  /********** pack data body **********/&lt;br /&gt;
  igtl_float32 transform[12];&lt;br /&gt;
  &lt;br /&gt;
  transform[0] = tx;&lt;br /&gt;
  transform[1] = ty;&lt;br /&gt;
  transform[2] = tz;&lt;br /&gt;
  transform[3] = sx;&lt;br /&gt;
  transform[4] = sy;&lt;br /&gt;
  transform[5] = sz;&lt;br /&gt;
  transform[6] = nx;&lt;br /&gt;
  transform[7] = ny;&lt;br /&gt;
  transform[8] = nz;&lt;br /&gt;
  transform[9] = px;&lt;br /&gt;
  transform[10] = py;&lt;br /&gt;
  transform[11] = pz;&lt;br /&gt;
  &lt;br /&gt;
  igtl_transform_convert_byte_order(transform);  /* convert endian if necessary */&lt;br /&gt;
&lt;br /&gt;
Once the transform data has been prepared, we create a general header:&lt;br /&gt;
  &lt;br /&gt;
  /********** general header **********/  &lt;br /&gt;
  igtl_header header;&lt;br /&gt;
  igtl_uint64 crc = crc64(0, 0, 0LL);          /* initial crc */&lt;br /&gt;
  header.version   = IGTL_HEADER_VERSION;&lt;br /&gt;
  header.timestamp = 0;&lt;br /&gt;
  header.body_size = IGTL_TRANSFORM_SIZE;&lt;br /&gt;
  header.crc       = crc64((unsigned char*)transform, IGTL_TRANSFORM_SIZE, crc);&lt;br /&gt;
  &lt;br /&gt;
  strncpy(header.name, &amp;quot;TRANSFORM&amp;quot;, 12);       /* Device Type: should be &amp;quot;TRANSFORM&amp;quot; */&lt;br /&gt;
  strncpy(header.device_name, &amp;quot;Tracker&amp;quot;, 20);    /* Device name */&lt;br /&gt;
  &lt;br /&gt;
  igtl_header_convert_byte_order(&amp;amp;header);   /* convert endian if necessary */&lt;br /&gt;
&lt;br /&gt;
Now it's time to send the serialized data. Since igtlutil library doesn't have a socket implementation, we need to some socket libraries or API, available in the environment we are working on. In case of BSD socket, call:&lt;br /&gt;
&lt;br /&gt;
  send(sock, (void*) &amp;amp;header, IGTL_HEADER_SIZE, 0);&lt;br /&gt;
  send(sock, (void*) transform, IGTL_TRANSFORM_SIZE, 0);&lt;br /&gt;
&lt;br /&gt;
after establishing the connection.&lt;br /&gt;
&lt;br /&gt;
=Deserializing Open IGT Link message for linear transform data=&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First of all, we receive the header data from the sender. It may look like the following code,&lt;br /&gt;
in case of using BSD socket API:&lt;br /&gt;
&lt;br /&gt;
  igtl_header header;&lt;br /&gt;
  int n;&lt;br /&gt;
  &lt;br /&gt;
  n = recv(sock, header, IGTL_HEADER_SIZE);&lt;br /&gt;
  if (n != IGTL_HEADER_SIZE)&lt;br /&gt;
    {&lt;br /&gt;
      /*** do something for error handling ***/&lt;br /&gt;
    }  &lt;br /&gt;
&lt;br /&gt;
Then convert byte order of each element:&lt;br /&gt;
&lt;br /&gt;
  igtl_header_convert_byte_order(&amp;amp;header);&lt;br /&gt;
&lt;br /&gt;
Now the header is ready to be read. Header fields e.g. header version, size, CRC etc. can be access as members of igtl_header structure.&lt;br /&gt;
&lt;br /&gt;
The following code shows how to detect which type of message is in the body part.&lt;br /&gt;
&lt;br /&gt;
  char deviceType[13];&lt;br /&gt;
  deviceType[12] = 0;&lt;br /&gt;
  memcpy((void*)deviceType, header.name, 12);&lt;br /&gt;
  &lt;br /&gt;
  if (strcmp(deviceType, &amp;quot;TRANSFORM&amp;quot;) == 0)&lt;br /&gt;
    {&lt;br /&gt;
      /*** code to read TRANSFORM data ***/&lt;br /&gt;
    }&lt;br /&gt;
  else if (strcmp(deviceType, &amp;quot;IMAGE&amp;quot;) == 0)&lt;br /&gt;
    {&lt;br /&gt;
      /*** code to read IMAGE data ***/&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    /*** .... other types ...  ***/&lt;br /&gt;
  &lt;br /&gt;
  else&lt;br /&gt;
    {&lt;br /&gt;
      /*** Unknown type: read the rest of the message and discard it. ***/&lt;br /&gt;
    }&lt;/div&gt;</summary>
		<author><name>Tokuda</name></author>
		
	</entry>
</feed>