From Slicer Wiki
Revision as of 20:49, 16 May 2014 by Andinet (talk | contribs) (Created page with '<noinclude>{{documentation/versioncheck}}</noinclude> <!-- ---------------------------- --> {{documentation/{{documentation/version}}/module-header}} <!-- -----------------------…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Home < Documentation < Nightly < Extensions < 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.

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.

Source Code