Difference between revisions of "Documentation/Nightly/Modules/AutoPortPlacement"

From Slicer Wiki
Jump to: navigation, search
Line 55: Line 55:
 
# Now all fiducial markers of that list will be in orientation mode. Each marker will be composed of a large sphere centered at the marker's position, and smaller sphere pointed in the direction of that fiducial's orientation. You can alter the fiducial's direction by clicking and dragging the smaller sphere. The small sphere denotes the direction from the surgical tool should approach this task frame.
 
# Now all fiducial markers of that list will be in orientation mode. Each marker will be composed of a large sphere centered at the marker's position, and smaller sphere pointed in the direction of that fiducial's orientation. You can alter the fiducial's direction by clicking and dragging the smaller sphere. The small sphere denotes the direction from the surgical tool should approach this task frame.
  
== Ports ==
+
== Port Curve ==
You can use Markups fiducials to add surgical ports for visualization:
+
 
 +
The port curve describes the potential positions on the body to place surgical ports for passing through surgical instruments. Currently, the automated port placement module can only handle potential port positions along a straight line segment defined by two endpoints, where the endpoints are represented as fiducial markers. Here's how you can define a port curve:
 +
 
 
# Select the Markups module.
 
# Select the Markups module.
 
# Click the combo box labeled "Select a MarkupsFiducial".
 
# Click the combo box labeled "Select a MarkupsFiducial".
# Select "Create and rename new MarkupsFiducial" and give your MarkupsFiducial list a meaningful name like "surgical ports".
+
# Select "Create and rename new MarkupsFiducial" and give your MarkupsFiducial list a meaningful name like "surgical port curve".
# Begin placing fiducial markers in the scene where surgical ports are desired.
+
# Place two fiducial markers to mark the endpoints of the line segment of potential port positions for the automated port placement algorithm to consider.
# Select the Port Placement Module (under the IGT category).
 
# Select your MarkupsFiducial list using the combo box labeled "Markups node of surgical ports"
 
# Click "Set Port Markups Node" to associate the selected MarkupsFiducial list with the Port Placement module.  
 
  
The module will automatically visualize surgical tools centered at each fiducial marker at some default (and likely useless) orientation.
+
== Robot Base ROI ==
  
You can always remove a port by either deleting its associated fiducial marker or by highlighting the port in the module's ports table and clicking "Remove Selected Port".
+
The Robot Base ROI (region of interest) describes the potential positions in the environment to place the surgical robot relative to the patient. It helps to specify a set of positions because in some cases a slight adjustment of the robot's base can allow the robot to reach the surgical task frames more safely. You can specify the robot base ROI with the following procedure:
  
You can also continue to add fiducial markers to the associated MarkupsFiducial list and the module will automatically add the new markers as ports.
+
# In the top toolbar, there is an icon with a red dot and a blue arrow pointing upward. Immediately to the right of this icon, there is a dropdown arrow; click this arrow and select "ROI".
 +
# Click two points in Slicer's 3D view that roughly correspond to your desired region's bounds, and a region of interest will appear in the scene.
 +
# Use the colored anchors to adjust the region's position and size.
 +
# If you like, select the Annotations module, right-click your newly created ROI, and click "Rename" to give it a more meaningful name like "Robot base ROI".
  
Lastly, you can move a markups fiducial around the scene and the port will interactively follow the fiducial.
+
== Automated Port Placement ==
  
== Tools ==
+
Once you've created a set of surgical task frames, a port curve, and a robot base ROI, you are ready to specify these to the automated port placement module for automated surgical planning with the following procedure:
Once you've added some ports, you can re-orient the surgical tools in two ways:
+
 
* Target-oriented
+
# Select the AutoPortPlacement module.
# Select the Markups module.
+
# Click the combo box labeled "Markups List of Task Frames" and specify the Markups node you previously created for the surgical task frames.
# Click the combo box labeled "List" and then click "Create and rename new MarkupsFiducial". Rename this MarkupsFiducial to something meaningful like "surgical target".
+
# Click the combo box labeled "Port Curve Endpoints" and specify the Markups node you previously created for the endpoints of the surgical port curve.
# With the new MarkupsFiducial enabled, place a fiducial marker in the scene that you want your surgical tools to point at. Think of this as your surgical target.
+
# Click the combo box labeled "Robot Base ROI" and specify the ROI node you previously created for the robot base ROI.
# In the Port Placement module, select your new MarkupsFiducial in the box labeled "Surgical Target Fiducial".
+
# Click "Find Surgical Plan".
# Click the "Aim Tools at Target" button to automatically orient all surgical tools toward your selected target.
+
 
* Manual Orientation
+
It might take a minute or two, but after some you will see that the robot's arms have automatically moved. If the automated port placement was successful, the arms will be situated such that they reach points on the port curve. We note that there is still lots of room for improvement on the optimization algorithm that drives the automated port placement procedure, so the result may not always make much sense.
# In order to manually orient an individual tool, look in the port table for the fiducial corresponding to that tool's port and click on it.
 
# Use the Tool Orientation sliders to re-orient the selected tool about the port location.
 
  
You can also vary the length and radius of individual tools by selecting them in the table and adjusting the "Tool radius" and "Tool length" spinboxes.
+
== Robot Arm Configuration ==
  
Finally, you can toggle the visibility of individual tools by clicking "Visible" checkboxes at each row of the ports table.
+
The user is also welcome to manually move the simulated surgical robot's arms around in order to explore the robot's reachable workspace, as well as make adjustments to surgical plans returned by the automated port placement procedure. The user may do this by selecting which joint she wishes to move with the combo boxes labeled "Passive Joints (Left)" and "Passive Joints (Right)". The user may then rotate the selected joint by dragging the slider immediately to the right of the selected combo box. This will cause the visualized robot's arms to interactively update their configuration to reflect the user's changes. The user can also reset the robot's arms to their initial configuration by clicking the "Reset Robot Configuration" button.
  
 
<!-- ---------------------------- -->
 
<!-- ---------------------------- -->

Revision as of 20:14, 13 April 2014

Home < Documentation < Nightly < Modules < AutoPortPlacement


For the latest Slicer documentation, visit the read-the-docs.


Introduction and Acknowledgements

Extension: PortPlacement
This work is supported by NA-MIC and the 3DSlicer community. This work was partially supported by NSF GRFP Grant No. DGE-1144081 and NIH/NIBIB Grant No. 1R43EB014074-01.
Authors: Andinet Enquobahrie (Kitware), Hamidreza Azimian (Hospital for Sick Children), Luis G. Torres (UNC-Chapel Hill)
Contact: Andinet Enquobahrie, <email>andinet.enqu@kitware.com</email> and Luis G. Torres, <email>lgtorres42@gmail.com</email>

Kitware, Inc.  
National Alliance for Medical Image Computing (NA-MIC)  

Module Description

The AutoPortPlacement module assists in the planning of surgical port placement in a robotic laparoscopic procedure. Users can specify surgical task frames of interest, potential positions for surgical ports, and potential placements of the surgical robot's base, and the automated port placement algorithm will select a set of surgical ports and visualize a simulated Davinci surgical robot with its tools positioned at the selected ports.

Use Cases

Automated port placement surgical plan.png

Tutorials

The automated port placement module requires three pieces of information in order to select a set of surgical ports for a robotic laparoscopic procedure:

  1. A Fiducial node representing a set of points of surgical interest, or task frames;
  2. A Fiducial node consisting of two points representing a curve of potential positions for surgical ports;
  3. A region of interest (ROI) representing the potential positions of the surgical robot's base.

Surgical task frames

Surgical task frames describe positions of interest for the surgical robot's tools to be able to reach. You can use the Markups module to add surgical task frames:

  1. Select the Markups module.
  2. Click the combo box labeled "Select a MarkupsFiducial".
  3. Select "Create and rename new MarkupsFiducial" and give your MarkupsFiducial list a meaningful name like "surgical task frames".
  4. Begin placing fiducial markers in the scene where surgical task frames are desired.

Optional: Setting orientations of surgical task frames

In the current version of Slicer, fiducial markers can only specify positions. However, useful surgical task frames typically require specification of both their position and the angle of approach for the tool to reach the frame. If you use the AutoPortPlacement module with the current version of Slicer, the angle of approach for each fiducial marker will default to the Superior direction, or "straight up".

The functionality for specifying fiducial orientation is not yet complete, but you're free to preview it by checking out this fork of Slicer. You can adjust fiducial markers' orientations in the following way:

  1. Select the Markups module.
  2. Use the combo box labeled "List" to select the MarkupsFiducial list whose orientations you want to edit.
  3. Right-click the Fiducial list table and select "Toggle position/orientation mode"
  4. Now all fiducial markers of that list will be in orientation mode. Each marker will be composed of a large sphere centered at the marker's position, and smaller sphere pointed in the direction of that fiducial's orientation. You can alter the fiducial's direction by clicking and dragging the smaller sphere. The small sphere denotes the direction from the surgical tool should approach this task frame.

Port Curve

The port curve describes the potential positions on the body to place surgical ports for passing through surgical instruments. Currently, the automated port placement module can only handle potential port positions along a straight line segment defined by two endpoints, where the endpoints are represented as fiducial markers. Here's how you can define a port curve:

  1. Select the Markups module.
  2. Click the combo box labeled "Select a MarkupsFiducial".
  3. Select "Create and rename new MarkupsFiducial" and give your MarkupsFiducial list a meaningful name like "surgical port curve".
  4. Place two fiducial markers to mark the endpoints of the line segment of potential port positions for the automated port placement algorithm to consider.

Robot Base ROI

The Robot Base ROI (region of interest) describes the potential positions in the environment to place the surgical robot relative to the patient. It helps to specify a set of positions because in some cases a slight adjustment of the robot's base can allow the robot to reach the surgical task frames more safely. You can specify the robot base ROI with the following procedure:

  1. In the top toolbar, there is an icon with a red dot and a blue arrow pointing upward. Immediately to the right of this icon, there is a dropdown arrow; click this arrow and select "ROI".
  2. Click two points in Slicer's 3D view that roughly correspond to your desired region's bounds, and a region of interest will appear in the scene.
  3. Use the colored anchors to adjust the region's position and size.
  4. If you like, select the Annotations module, right-click your newly created ROI, and click "Rename" to give it a more meaningful name like "Robot base ROI".

Automated Port Placement

Once you've created a set of surgical task frames, a port curve, and a robot base ROI, you are ready to specify these to the automated port placement module for automated surgical planning with the following procedure:

  1. Select the AutoPortPlacement module.
  2. Click the combo box labeled "Markups List of Task Frames" and specify the Markups node you previously created for the surgical task frames.
  3. Click the combo box labeled "Port Curve Endpoints" and specify the Markups node you previously created for the endpoints of the surgical port curve.
  4. Click the combo box labeled "Robot Base ROI" and specify the ROI node you previously created for the robot base ROI.
  5. Click "Find Surgical Plan".

It might take a minute or two, but after some you will see that the robot's arms have automatically moved. If the automated port placement was successful, the arms will be situated such that they reach points on the port curve. We note that there is still lots of room for improvement on the optimization algorithm that drives the automated port placement procedure, so the result may not always make much sense.

Robot Arm Configuration

The user is also welcome to manually move the simulated surgical robot's arms around in order to explore the robot's reachable workspace, as well as make adjustments to surgical plans returned by the automated port placement procedure. The user may do this by selecting which joint she wishes to move with the combo boxes labeled "Passive Joints (Left)" and "Passive Joints (Right)". The user may then rotate the selected joint by dragging the slider immediately to the right of the selected combo box. This will cause the visualized robot's arms to interactively update their configuration to reflect the user's changes. The user can also reset the robot's arms to their initial configuration by clicking the "Reset Robot Configuration" button.


References