What Is It
This module is designed to enable direct communication between ROS 2 and 3D Slicer.
This module currently supports ROS 2 topics (subscribers and
publishers), TF2 (broadcasters and lookups) as well as a parameter
client (no server yet). Users can add new publishers and subscribers
with the CMake macro generate_ros2_nodes. See
Topics, Services,
Parameters, and TF2 for the
main ROS communication features.
This module can also be used to visualize a ROS robot in action using a
parameter client and TF2 lookups. The robot visualization
implementation follows ROS logic, i.e. the robot description
(URDF) is retrieved as a parameter and the real-time link positions
come from TF2. For each robot, you will need a
robot_state_publisher node that will:
provide an URDF robot description using a ROS parameter
robot_descriptionupdate the link positions and broadcast them to TF2
See Robot Visualization for a complete robot visualization workflow.
SlicerROS2 also includes initial support for MoveIt-based motion
control. The ROS2MotionControl module can use a loaded robot and
a running MoveIt configuration to select planning groups, preview
planned trajectories, execute trajectories, and publish Slicer models
as MoveIt collision objects. See Motion Control for
setup and usage details.
All the functionalities in this module are encapsulated in
vtkMRMLNode so you use them in your own applications. Since
Slicer automatically provides a Python interface for all classes
derived from vtkMRMLNode, you can develop your application using
either C++ or Python. For more information on each of these nodes,
please see the ‘Methodology’ section of the most recent paper.
Where To Go Next
New users should start with Compatibility and Getting Started.
To start Slicer with the correct ROS 2 environment, see Launching Slicer.
For complete workflows, see Robot Visualization, Motion Control, and Examples.
For lower-level APIs, see MRML ROS Nodes.
For testing and diagnosis, see Tests and Common Errors.
Acknowledgment
The initial core developers are:
Laura Connolly, EE PhD student at Queens University, Kingston, Ontario, Canada
Aravind S. Kumar, CS Master’s student at Johns Hopkins University, Baltimore, Maryland, USA
Anton Deguet, Associate Research Engineer at Johns Hopkins University, Baltimore, Maryland, USA
Kaito Hara-Lee, Master’s student at Queens University, Kingston, Ontario, Canada
This project is supported by:
The National Institute of Biomedical Imaging and Bio-engineering of the U.S. National Institutes of Health (NIH) under award number R01EB020667, and 3R01EB020667-05S1 (MPI: Tokuda, Krieger, Leonard, and Fuge). The content is solely the responsibility of the authors and does not necessarily represent the official views of the NIH.
The National Sciences and Engineering Research Council of Canada and the Canadian Institutes of Health Research, the Walter C. Sumner Memorial Award, the Mitacs Globalink Award and the Michael Smith Foreign Study Supplement.
Publications
Note
For citations, please use the 2024 publication, BibTeX
Connolly L, Kumar AS, Mehta KK, Al-Zogbi L, Kazanzides P, Mousavi P, Fichtinger G, Krieger A, Tokuda J, Taylor RH, Leonard S, Deguet A. SlicerROS2: A Research and Development Module for Image-Guided Robotic Interventions. IEEE Trans Med Robot Bionics. 2024 Nov;6(4):1334-1344. doi: 10.1109/TMRB.2024.3464683. [PMID: Not available]; [PMCID: Not available]. IEEE online abstract.
BibTeXConnolly L, Deguet A, Leonard S, Tokuda J, Ungi T, Krieger A, Kazanzides P, Mousavi P, Fichtinger G, Taylor RH. Bridging 3D Slicer and ROS 2 for Image-Guided Robotic Interventions. Sensors (Basel). 2022 Jul 17;22(14):5336. doi: 10.3390/s22145336. PMID: [35891016]; PMCID: [PMC9324680].
BibTeX
Documentation
Besides this document, you can also check DeepWiki: https://deepwiki.com/rosmed/slicer_ros2_module. DeepWiki might be able to answer your questions.