<?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=Robot_OpenIGTLink_Communication_March_2014</id>
	<title>Robot OpenIGTLink Communication March 2014 - 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=Robot_OpenIGTLink_Communication_March_2014"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Robot_OpenIGTLink_Communication_March_2014&amp;action=history"/>
	<updated>2026-04-07T00:00:24Z</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=Robot_OpenIGTLink_Communication_March_2014&amp;diff=85368&amp;oldid=prev</id>
		<title>Lchauvin: /* Diagram */</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Robot_OpenIGTLink_Communication_March_2014&amp;diff=85368&amp;oldid=prev"/>
		<updated>2014-03-19T20:57:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Diagram&lt;/span&gt;&lt;/span&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 20:57, 19 March 2014&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-l59&quot; &gt;Line 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&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;| align=&amp;quot;left&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; | &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;| align=&amp;quot;left&amp;quot; | &amp;lt;font color=red&amp;gt;&amp;lt;&amp;lt; TRAJ(&amp;quot;FIDUCIALS&amp;quot;, fiducials) &amp;lt;&amp;lt; &amp;lt;/font&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;| align=&amp;quot;left&amp;quot; | &amp;lt;font color=red&amp;gt;Send fiducial (or landmarks) information&amp;lt;/font&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;| align=&amp;quot;left&amp;quot; | &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;| align=&amp;quot;left&amp;quot; |&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;| align=&amp;quot;left&amp;quot; | &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;| align=&amp;quot;left&amp;quot; | &amp;lt;font color=red&amp;gt;&amp;lt;&amp;lt; POLYDATA(&amp;quot;MDL_YYYY&amp;quot;) &amp;lt;&amp;lt; &amp;lt;/font&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;| align=&amp;quot;left&amp;quot; | &amp;lt;font color=red&amp;gt;Send polydata models. See [http://openigtlink.org/protocols/v2_polydata.html polydata message] &amp;lt;/font&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;| align=&amp;quot;left&amp;quot; | &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;| align=&amp;quot;left&amp;quot; | &amp;lt;font color=red&amp;gt;YYYY is the name of the model (e.g. MDL_TEMPLATE).&amp;lt;/font&amp;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;|-&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;|-&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;| align=&amp;quot;left&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; |  &lt;/div&gt;&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-l280&quot; &gt;Line 280:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 292:&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;| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received (not yet completed)&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;| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received (not yet completed)&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;| align=&amp;quot;left&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; |  &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;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;| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the MOVE_TO_TARGET message. &amp;lt;font color=red&amp;gt;See the note below&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;red&lt;/del&gt;&amp;gt;&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;| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the MOVE_TO_TARGET message. &amp;lt;font color=red&amp;gt;See the note below&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;font&lt;/ins&gt;&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;div&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;|-&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;| align=&amp;quot;left&amp;quot; | Alert the clinician to hold footpedal to align the robot&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;| align=&amp;quot;left&amp;quot; | Alert the clinician to hold footpedal to align the robot&lt;/div&gt;&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-l577&quot; &gt;Line 577:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 589:&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;| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received (not yet completed)&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;| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received (not yet completed)&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;| align=&amp;quot;left&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; |  &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;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;| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the MOVE_TO_TARGET message. &amp;lt;font color=red&amp;gt;See the note below&amp;lt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;red&lt;/del&gt;&amp;gt;&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;| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the MOVE_TO_TARGET message. &amp;lt;font color=red&amp;gt;See the note below&amp;lt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;font&lt;/ins&gt;&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;div&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;|-&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;| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; |  &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;| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; |  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lchauvin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Robot_OpenIGTLink_Communication_March_2014&amp;diff=85367&amp;oldid=prev</id>
		<title>Lchauvin: Created page with 'The following table shows message exchange diagram for the communication between 3D Slicer (and other navigation software) and the robot in each workhpase.  ==Notations== *STRING…'</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Robot_OpenIGTLink_Communication_March_2014&amp;diff=85367&amp;oldid=prev"/>
		<updated>2014-03-19T20:42:38Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;The following table shows message exchange diagram for the communication between 3D Slicer (and other navigation software) and the robot in each workhpase.  ==Notations== *STRING…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The following table shows message exchange diagram for the communication between 3D Slicer (and other navigation software) and the robot in each workhpase.&lt;br /&gt;
&lt;br /&gt;
==Notations==&lt;br /&gt;
*STRING(NN, SS) (see http://openigtlink.org/protocols/v2_string.html)&lt;br /&gt;
**NN: Device name in the OpenIGTLink header. (Max. 20 bytes)&lt;br /&gt;
**SS: String in the message body. (Max. 65536 bytes)&lt;br /&gt;
*STATE(NN, CC:SS:EE:MM) (see http://openigtlink.org/protocols/v2_status.html )&lt;br /&gt;
**NN: Device type in the OpenIGTLink header. (Max. 20 bytes)&lt;br /&gt;
**CC: Code &lt;br /&gt;
**SS: Subcode&lt;br /&gt;
**EE: Error name (Max 20 bytes) -- no predefined name. It will logged or show up on navigation screen as it is.&lt;br /&gt;
**MM: Message -- no predefined text. It will logged or show up on navigation screen as it is.&lt;br /&gt;
*TRANSFORM(NN, TT) (see http://openigtlink.org/protocols/v2_transform.html)&lt;br /&gt;
**NN: Device type in the OpenIGTLink header. (Max. 20 bytes)&lt;br /&gt;
**TT: 4x4 linear transformation matrix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Diagram==&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#800000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''3D Slicer (operator)''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Message''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Robot Controller''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Radiologist''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Note''&lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | Start-up&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator presses &amp;quot;Start-up&amp;quot; button&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Send command to robot&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, START_UP) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, START_UP) &amp;lt;&amp;lt; &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received, but not yet completed&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the START_UP message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to START_UP mode. Phase should be &amp;quot;START_UP&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Start up and initialize the hardware. Run the robot homing procedure if necessary (skip if already successfully completed). Move robot to home (loading) configuration. &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(START_UP, Code:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | '''Code=OK:''' Confirm when robot is initialized &amp;lt;br&amp;gt;'''Code&amp;gt;=2''': Error. See [http://openigtlink.org/protocols/v2_status.html error list]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Display the result of start up process.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | Planning&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator opens the planning panel&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, PLANNING) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |  XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, PLANNING) &amp;lt;&amp;lt; &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |  XXXX is the same unique query ID as the PLANNING message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to PLANNING mode. Phase should be &amp;quot;PLANNING&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Do nothing except keep track of current state, robot is awaiting next workphase. &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Show that the robot is in PLANNING phase.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | Calibration&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator opens the calibration panel&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, CALIBRATION) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, CALIBRATION) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the CALIBRATION message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to CALIBRATION mode. Phase should be &amp;quot;CALIBRATION&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Do nothing except keep track of current state, robot is awaiting calibration transform&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Show that the robot is in CALIBRATION phase.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |  &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Nav Software (3D Slicer or RadVision) calculates calibration matrix&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; TRANSFORM(CLB_XXXX, 4x4 calibration matrix in RAS coordinates) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(ACK_XXXX, Calibration matrix in RAS coordinates) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement transform was received&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the CLB message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Update calibration transform, set flag that registration has been set externally, reply with confirmation&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(CALIBRATION, Code:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | '''Code=OK:''' Confirm that calibration was received and robot is ready for next workphase &amp;lt;br&amp;gt;'''Code=CE''': Error. &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | CE: Configuration Error (code 10)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Show that calibration successfully sent to robot or failed.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | Targeting&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator enters &amp;quot;Targeting&amp;quot; mode&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, TARGETING) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, TARGETING) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Acknowledge receiving targeting command&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the TARGETING message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to TARGETING mode. Phase should be &amp;quot;TARGETING&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Confirm if robot is ready for targeting; check if calibration was received; return robot to home (loading) position, if needed.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(TARGETING, Code:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | '''Code=OK:''' Confirm robot has entered targeting mode. &amp;lt;br&amp;gt;'''Code=DNR:''' If not able to enter targeting mode (i.e. calibration not received) &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | DNR: Device Not Ready (code 13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator select a target, Nav software creates a 4x4 matrix for desired 6-DOF robot pose to reach the target&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; TRANSFORM(TGT_XXXXX, 4x4 target matrix in RAS coordinates) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is a unique query ID (string of any ASCII letters up to 16 bytes). The unique ID may be used as a human-readable target name on the robot control software. For example, TGT_LeftApex-2 is for the second targeting attempt on a lesion in the left-apex. &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(ACK_XXXXX, 4x4 target matrix) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Acknowledge receipt of target transformation by echoing back&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the TARGETING message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Calculate if target pose is reachable based on the kinematics, reply with status and set target&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(TARGET, Code:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | '''Code=OK:''' Reply with OK if target was accepted &amp;lt;br/&amp;gt;'''Code=DNR:''' Not in targeting mode &amp;lt;br/&amp;gt; '''Code=CE:''' Not a valid target (i.e. out of workspace)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | DNR: Device Not Ready (code 13) &amp;lt;br&amp;gt; CE: Configuration Error (code 10) &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(TARGET, 4x4 target matrix) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Send actual target pose in robot controller if one was set (corresponds to when status comes back OK)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Display the reachable target position set in robot controller.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator confirms the target position set in the controller, and press &amp;quot;MOVE&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, MOVE_TO_TARGET) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, MOVE_TO_TARGET) &amp;lt;&amp;lt; &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received (not yet completed)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the MOVE_TO_TARGET message. &amp;lt;font color=red&amp;gt;See the note below&amp;lt;/red&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Alert the clinician to hold footpedal to align the robot&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Clinician engages interlock (footpedal in scanner room) to enable robot motion. Robot will only move when interlock is engaged following a move command. &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The robot moves to the target and streams its pose during motion&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(CURRENT_POSITION, Current robot pose matrix in RAS coordinates) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Stream current robot pose in RAS coords as moving. Can also be requested (see below).&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Display the current robot position as it moves toward the target.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Display that the robot is at the target. Send confirmation.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(MOVE_TO_TARGET, Code:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | '''Code=OK:''' Robot reaches target &amp;lt;br&amp;gt; '''Code &amp;gt;= 3:''' Return error code when the device fails to move to the target. See [http://openigtlink.org/protocols/v2_status.html error list]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(CURRENT_POSITION, Current robot pose matrix in RAS coordinates) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Push out final robot pose in RAS coords as moving. (same format as previous stream - ensures last one is at final position)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Display the current final robot position at the target.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | Needle Insertion (Manual)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Ask to lock the robot&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator presses &amp;quot;Lock&amp;quot; button&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING (CMD_XXXX, MANUAL) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, MANUAL) &amp;lt;&amp;lt; &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received (not yet completed)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the MANUAL message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to MANUAL mode. Phase should be &amp;quot;MANUAL&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Cut motor power to prevent motion of the robot base. This also eliminates causes of MR interference for insertion under live imaging.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(MANUAL, OK:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Reply with OK when robot is in a safe, locked state&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Insert a needle, optionally under live MR imaging. Perform intervention with the needle (biopsy or seed placement). &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Retract the needle &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Ask to unlock the robot and confirm needle is retracted&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator presses &amp;quot;Unlock&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Return to the TARGETING phase (Slicer sends STRING(ACK_XXXXX, TARGETING) )&lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | All workhpases&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator presses &amp;quot;Stop&amp;quot; button&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, STOP) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |  XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, STOP) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Acknowledge receiving targeting command&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the STOP message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to STOP mode. Phase should be &amp;quot;STOP&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The robot stops all motion. Stays in current state/workphase.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(STOP, OK:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Reply with OK when robot stopped safely.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | All workhpases&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator presses &amp;quot;Emergency&amp;quot; button&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, EMERGENCY) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, EMERGENCY) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Acknowledge receiving targeting command&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the STOP message.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to EMERGENCY mode. Phase should be &amp;quot;EMERGENCY&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The robot stops all motion and disables/locks motors. Switches to Emergency state/workphase. ?? IS THIS THE DESIRED ACTION&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(EMERGENCY, Emergency:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Reply with OK when robot stopped safely.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | All workhpases&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Request current robot pose (or target or calibration transforms)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; GET_TRANSFORM(CURRENT_POSITION) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The robot transmits current pose (&amp;quot;CURRENT_POSITION&amp;quot;) through IGTLink upon request. This also works for requesting &amp;quot;TARGET_POSITION&amp;quot; and &amp;quot;CALIBRATION&amp;quot; transforms stored in robot controller.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(CURRENT_POSITION, Current robot pose matrix in RAS coordinates) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | All workhpases&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Request the robot status/workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; GET_STATUS(CURRENT_STATUS) &amp;gt;&amp;gt; ?? CONFIRM COMMAND STRUCTURE FOR STATUS REQUEST&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Sends current state/workphase. ?? SHOULD IT SEND OTHER INFO TOO&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Status) &amp;lt;&amp;lt; &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Send status code. Status should be the name of the current status e.g. &amp;quot;TARGETING&amp;quot;. Code is OK, when the robot is successfully determines its workphase. Otherwise, Code should be configuration error (10)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | All workhpases&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Robot controller sends errors or notifications through IGTLink. Transmitted asynchronously with error text in message body. To be used with limit events, hardware failures, invalid commands, etc.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(ERROR, Code:??:Error name) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | | align=&amp;quot;left&amp;quot; | Send status code. [http://openigtlink.org/protocols/v2_status.html error list]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; |  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=red&amp;gt;NOTE: Suggested modification -- Agreed on 9/5/13&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although MOVE_TO_TARGET workphase is currently part of TARGETING, Nirav suggested to make MOVE_TO_TARGET phase an independent workhpase. If we agree, the MOVE_TO_TARGET workphase should be defined as follows:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''3D Slicer (operator)''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Message''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Robot Controller''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Radiologist''&lt;br /&gt;
| align=&amp;quot;left style=&amp;quot;background:#e0e0e0;&amp;quot; | ''Note''&lt;br /&gt;
|-&lt;br /&gt;
| colspan=5 align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; | Move to Target&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The operator confirms the target position set in the controller, and press &amp;quot;MOVE&amp;quot;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; STRING(CMD_XXXX, MOVE_TO_TARGET) &amp;gt;&amp;gt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is a unique query ID (string of any ASCII letters up to 16 bytes)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STRING(ACK_XXXX, MOVE_TO_TARGET) &amp;lt;&amp;lt; &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Echo back an acknowledgement command was received (not yet completed)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | XXXX is the same unique query ID as the MOVE_TO_TARGET message. &amp;lt;font color=red&amp;gt;See the note below&amp;lt;/red&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &amp;lt;&amp;lt; STATUS(CURRENT_STATUS, Code:0:Phase) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | '''Code=OK:''' Confirm that the robot is transition to MOVE_TO_TARGET mode. Phase should be &amp;quot;MOVE_TO_TARGET&amp;quot;. ''Code=DNR:'' Fails to transition. Phase should be the name of the current workphase&lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; style=&amp;quot;background:#f8f8f8;;&amp;quot; | DNR: Device not ready (13)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Alert the clinician to hold footpedal to align the robot&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Clinician engages interlock (footpedal in scanner room) to enable robot motion. Robot will only move when interlock is engaged following a move command. &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | The robot moves to the target and streams its pose during motion&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(CURRENT_POSITION, Current robot pose matrix in RAS coordinates) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Stream current robot pose in RAS coords as moving. Can also be requested (see below).&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; STATUS(MOVE_TO_TARGET, Code:??:??) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | '''Code=OK:''' Robot reaches target &amp;lt;br&amp;gt; '''Code &amp;gt;= 3:''' Return error code when the device fails to move to the target. See [http://openigtlink.org/protocols/v2_status.html error list]&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt; TRANSFORM(CURRENT_POSITION, Current robot pose matrix in RAS coordinates) &amp;lt;&amp;lt;&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Push out final robot pose in RAS coords as moving. (same format as previous stream - ensures last one is at final position)&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | Display the current final robot position at the target.&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
| align=&amp;quot;left&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lchauvin</name></author>
		
	</entry>
</feed>