From Slicer Wiki
Revision as of 19:44, 13 April 2014 by Luist (talk | contribs)
Jump to: navigation, search
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></email> and Luis G. Torres, <email></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


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.


You can use Markups fiducials to add surgical ports for visualization:

  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 ports".
  4. Begin placing fiducial markers in the scene where surgical ports are desired.
  5. Select the Port Placement Module (under the IGT category).
  6. Select your MarkupsFiducial list using the combo box labeled "Markups node of surgical ports"
  7. 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.

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".

You can also continue to add fiducial markers to the associated MarkupsFiducial list and the module will automatically add the new markers as ports.

Lastly, you can move a markups fiducial around the scene and the port will interactively follow the fiducial.


Once you've added some ports, you can re-orient the surgical tools in two ways:

  • Target-oriented
  1. Select the Markups module.
  2. Click the combo box labeled "List" and then click "Create and rename new MarkupsFiducial". Rename this MarkupsFiducial to something meaningful like "surgical target".
  3. 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.
  4. In the Port Placement module, select your new MarkupsFiducial in the box labeled "Surgical Target Fiducial".
  5. Click the "Aim Tools at Target" button to automatically orient all surgical tools toward your selected target.
  • Manual Orientation
  1. 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.
  2. 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.

Finally, you can toggle the visibility of individual tools by clicking "Visible" checkboxes at each row of the ports table.