This page contains a list of software libraries and similar resources for developers of software for applications of robotics in healthcare. Many libraries are related to Robot Operating System (ROS).

3D Slicer
Desktop software to solve advanced image computing challenges with a focus on clinical and biomedical applications.
Development platform to quickly build and deploy custom solutions for research and commercial products, using free, open source software. Community of knowledgeable users and developers working together to improve medical computing.
Type: Software
Tags: Image processing, visualization, vtk, medical imaging
Community: Large
Latest version: 5.0.3
Resource updated: 2022
Resource created: 1998
License: Open source (BSD license)
Operating system: Windows, Linux, MacOs
Languages: Python, C++
Comments: There is no restriction on use, but Slicer is not approved for clinical use and the distributed application is intended for research use. Permissions and compliance with applicable rules are the responsibility of the user. For details on the license see here. Slicer 3D could be extended using Python and C++.
More information and source:
https://www.slicer.org/
3D Slicer Tutorial:
Prototyping Surgical Robot System
Using ROS and 3D Slicer
Prototype surgical robot system using widely-available software and hardware such as 3D Slicer as planning interface, Lego Mindstorms as robot hardware, and Robot Operating System (ROS) as robot control software.
Type: Tutorial
Tags: Image processing, visualization, medical imaging, ROS
Operating system: Linux
Comments: This tutorial contains software architecture of surgical robot systems, acquire hands-on experience of software-hardware integration for medical robotics.
Awesome Robotics
A list of various books, courses and other resources for robotics. It’s an attempt to gather useful material in one place for everybody who wants to learn more about the field.
Type: List of resources
Tags: Image processing, visualization, control, simulation, machine learning, motion planning, optimization, SLAM, inverse kinematics, ROS
Community: Medium (32 contributors)
Resource updated: Feb 23, 2022
Operating system: Multiple
Comments: This repository contains courses, books, software and libraries, papers, conferences, journals, competitions, companies, and other resources.
Awesome Robotics Libraries
A curated list of robotics simulators and libraries.
Type: List of resources
Tags: Image processing, visualization, control, simulation, machine learning, motion planning, optimization, SLAM, inverse kinematics, ROS
Community: Medium (26 contributors)
Resource updated: Nov 1, 2022
Resource created: 2015
Operating system: Multiple
Comments: This list links to simulators and libraries for Dynamics Simulation, Inverse Kinematics, Machine Learning, Motion Planning and Control, Optimization, Robot Modeling, Robot Platform, SLAM, and more.
gmapping
This package contains a ROS wrapper for OpenSlam’s Gmapping. The gmapping package provides laser-based SLAM (Simultaneous Localization and Mapping), as a ROS node called slam_gmapping. Using slam_gmapping, you can create a 2-D occupancy grid map (like a building floorplan) from laser and pose data collected by a mobile robot.
Type: Package
Tags: Motion planning, manipulation, 3D perception, control, navigation, ROS
Community: Small (21 contributors)
Latest version: 1.4.2
Resource updated: Oct 2, 2020
Resource created: Aug 26, 2009
License: Open source (BSD-2-Clause license)
Operating system: Linux
Languages: C++, Python
image_pipeline
The image_pipeline stack is designed to process raw camera images into useful inputs to vision algorithms: rectified mono/color images, stereo disparity images, and stereo point clouds.
Type: Collection of packages
Tags: Imaging, image processing, visualization, ROS
Community: Large (75 contributors)
Latest version: 2.1.1
Reference updated date: Oct, 2022
Resource updated: Jun 12, 2020
Resource created: May 20, 2020
License: Open source (BSD)
Operating system: Linux
Languages: C++, Python
Comments: The packages included are the following: (i) Calibration: Cameras must be calibrated in order to relate the images they produce to the three-dimensional world. The camera_calibration package provides tools to calibrate monocular and stereo cameras in your ROS system. A CameraInfo wiki page provides a detailed description of the parameters used by the pipeline; (ii) Monocular processing: The raw image stream can be piped through the image_proc node to remove camera distortion. The node also performs color interpolation for Bayer pattern color cameras; (iii) Stereo processing: The stereo_image_proc node performs the duties of image_proc for a pair of cameras co-calibrated for stereo vision. It also uses stereo processing to produce disparity images and point clouds; (iv) Depth processing: depth_image_proc provides nodelets for processing depth images (as produced by the Kinect, time-of-flight cameras, etc.), such as producing point clouds; (iv) Visualization: The image_view package provides a lightweight alternative to rviz for viewing an image topic. It also includes a stereo_view tool for viewing stereo pairs and disparity images.
Insight Toolkit (ITK)
ITK is an open-source, cross-platform library that provides developers with an extensive suite of software tools for image analysis.
Type: Software toolkit
Community: Very large (270 contributors)
Latest version: 5.2.1
Resource updated: 2022
Resource created: 2002
License: Open source (Apache 2.0)
Operating system: Windows, Linux, MacOs
Languages: C++, Python
Manipulability Metrics
A library to easily compute multiple manipulability metrics for a single or dual-arm manipulator.
Type: Library
Tags: Object manipulation, metrics, ROS
Community: Small
Latest version: No release published
Resource created: Oct 20, 2020
License: Open source (Apache 2.0)
Operating system: Linux
Languages: C++, C
Comments: The list of metrics that can be computed for a single-arm manipulator are:
– Inverse condition number: Computes the quotient between the smaller and the greater singular values of the Jacobian. The inverse of the condition number is used so that a bigger value represents better manipulability, which is the case with the rest of the metrics.
– Manipulability Measure: Computes the square root of the determinant of the product of the Jacobian and the Jacobian transpose. It’s equivalent to the product of all singular values of the Jacobian.
– Minimum Singular Value: Returns the value of the minimum singular value.
– Task-Oriented Manipulability Measure (TOMM): Computes how well the manipulability ellipsoid of the manipulator matches the provided desired manipulability ellipsoid.
– In addition to the above metrics that can be used for an individual arm in a dual-arm setup, the following dual-arm-specific metrics are available:
– Dual-Arm Manipulability Measure (DAMM)1: Approximates the combined manipulability ellipsoid of both manipulators as the intersection of the manipulability matrices of each manipulator and returns a value proportional to its volume.
– Task-Oriented Dual-Arm Manipulability Measure (TODAMM): Computes how well the combined manipulability ellipsoid of both manipulator matches the provided desired manipulability ellipsoid.
– For more information about the TOMM, DAMM and TODAMM metrics, refer to: S. Lee, ‘Dual redundant arm configuration optimization with task-oriented dual arm manipulability,’ in IEEE Transactions on Robotics and Automation, vol. 5, no. 1, pp. 78-97, Feb. 1989, doi: 10.1109/70.88020. (link).
MoveIt 2
MoveIt 2 is the robotic manipulation platform for ROS 2, and incorporates the latest advances in motion planning, manipulation, 3D perception, kinematics, control, and navigation. MoveIt 2 was first released in 2019; for ROS 1 documentation.
Type: Platform
Tags: Motion planning, manipulation, 3D perception, Inverse kinematics, control, navigation, ROS
Community: Large, supported by Rosin and PickNik
Latest version: 2.5.2
Reference updated date: Aug 16, 2022
Resource updated: Jul 15, 2022
Resource created: Oct 2011 (version 2 in 2019)
License: Open source (BSD-3-Clause license)
Operating system: Linux, limited Windows support
Languages: C++
More information and source:
https://moveit.ros.org/
Open Source Medical Robots
A library dedicated to the development of open source medical robotics, providing simple platforms for researchers and developers through increased accessibility. It is Arduino-based.
Type: Library
Tags: Arduino
Community: Small (21 contributors)
Latest version: 1.0.0
Resource created: Jun 25, 2020
License: Open source (GNU General Public License v3.0)
Operating system: Arduino
Languages: C++
Comments: There are two repositories, namely Endo-Continuum-Robot Public
CAD Model for the OSMR Endo Continuum Robot, and Endo-Continuum-Robot-Library, a Public Arduino Library for the OSMR Endo Continuum Robot.
More information and source:
https://github.com/opensourcemedicalrobots
OpenIGTLink
An open-source network communication interface specifically designed for image-guided interventions.
Type: Network communication interface
Tags: Tracking, Imaging, Control
Community: Medium (27 contributors)
Latest version: 3.0 (year 2018)
Resource updated: 2022
Resource created: 2009
License: Open source (BSD license)
Operating system: MultiOS
Languages: C++, Python, Java
Comments: The OpenIGTLink protocol defines a set of message formats for several data types that are frequently used for image-guided and robot-assisted interventions. Those formats are used to compose messages that are transferred from one device to another over the local area network. The application developers can choose their own transportation layer that fits for their application and environment (e.g. TCP, UDP, WebSocket).
Orocos Kinematics and Dynamics Library C++
Real-time usable kinematics and dynamics code for rigid body kinematics calculations and representations for kinematic structures and their inverse and forward kinematic solvers.
Type: Library
Tags: Inverse Kinematics, ROS
Community: Medium (37 contributors)
Latest version: 1.5.1
Reference updated date: Oct 2022
Resource updated: Sep 12, 2021
Resource created: Jun 6, 2021
License: Not specified
Operating system: MultiOS
Languages: C++
perception_pcl
A PCL (Point Cloud Library) ROS interface stack. PCL-ROS is the preferred bridge for 3D applications involving n-D Point Clouds and 3D geometry processing in ROS.
Type: Package
Tags: Image processing, 3D perception, navigation, ROS
Latest version: 1.7.4
Reference updated date: Feb 9, 2022
Resource updated: Nov 2022
Resource created: Nov 26, 2019
License: Open source (BSD)
Operating system: Linux
Languages: C++, Python
ROS DevelopersGuide
Guidelines for developers who use ROS.
Type: Information guidelines (Tutorial, sotware resources, tools, etc.)
Tags: Software development, ROS
Community: Large
Reference updated date: Sep 1, 2019
License: Open source but it depends on the resources that are listed
Operating system: Linux
Languages: C++, Python, JavaScript
More information and source:
http://wiki.ros.org/DevelopersGuide
ROS for Medical Robotics (ROS-MED)
An open-source software project to provide an open-source software platform for medical robotics research. Specifically, the project focuses on architectures to seamlessly integrate a robot system with medical image computing software using two popular open-source software packages: Robot Operating System (ROS) and 3D Slicer.
Type: Software toolkit
Tags: Image processing, 3D graphics, visualization, ROS
Community: Very small (the project is very new)
License: Open source
Operating system: Linux, limited Windows support
Comments: The following software packages are available for integrating 3D Slicer and ROS: ROS-IGTL-Bridge for ROS 1, ROS-IGTL-Bridge for ROS 2, and SlicerROS2.
More information and source:
https://rosmed.github.io/
ROS navigation
A 2D navigation stack that takes in information from odometry, sensor streams, and a goal pose and outputs safe velocity commands that are sent to a mobile base.
Type: Navigation 2D stack
Tags: Navigation, ROS
Community: Large (123 contributors)
Latest version: 1.17.2
Resource updated: Jun 20, 2022
Resource created: Sep 10, 2009
License: Open source (BSD, LGPL)
Operating system: Linux
Languages: C++, Python, C
ros_control
A set of packages that include controller interfaces, controller managers, transmissions and hardware_interfaces.
Type: Collection of packages
Tags: Control, ROS
Community: Medium (50 contributors)
Latest version: 0.19.6
Resource updated: Oct 21, 2021
Resource created: Dec 25, 2012
License: Open source (BSD-3-Clause license)
Operating system: Linux
Languages: C++, Python
rosbridge_suite
Rosbridge provides a JSON API to ROS functionality for non-ROS programs. There are a variety of front ends that interface with rosbridge, including a WebSocket server for web browsers to interact with. Rosbridge_suite is a meta-package containing rosbridge, various front end packages for rosbridge like a WebSocket package, and helper packages.
Type: Collection of packages
Tags: JSON, JavaScript, ROS
Community: Large (92 contributors)
Latest version: 1.3.1
Resource updated: Oct 21, 2021
Resource created: Nov 15, 2012
License: Open source (BSD-3-Clause license)
Operating system: Linux
Languages: Python, Javascript
Comments: The rosbridge_suite package is a collection of packages that implement the rosbridge protocol and provides a WebSocket transport layer.
The packages included are:
(i) rosbridge_library – The core rosbridge package. The rosbridge_library is responsible for taking the JSON string and sending the commands to ROS and vice versa;
(ii) rosapi – Makes certain ROS actions accessible via service calls that are normally reserved for ROS client libraries. This includes getting and setting params, getting topics list, and more;
(iii) rosbridge_server – While rosbridge_library provides the JSON<->ROS conversion, it leaves the transport layer to others. Rosbridge_server provides a WebSocket connection so browsers can “talk rosbridge.” Roslibjs is a JavaScript library for the browser that can talk to ROS via rosbridge_server.
ROS-Industrial
An open-source project that extends the advanced capabilities of ROS software to industrial relevant hardware and applications.
Type: Libraries, tools and drivers for industrial hardware
Tags: Control, tracking, motion planning, navigation, ROS
Community: Depends on the project
Latest version: Depends on the project
Reference updated date: Apr 20, 2020
Resource updated: Depends on the project
Resource created: Depends on the project
License: Open source (BSD (legacy) / Apache 2.0 (preferred))
Operating system: Linux
Languages: C++, Python
Comments: The goals of ROS-Industrial are to
(i) create a community supported by industrial robotics researchers and professionals;
(ii) provide a one-stop location for industry-related ROS applications;
(iii) develop robust and reliable software that meets the needs of industrial applications;
(iv) combine the relative strengths of ROS with existing industrial technologies (i.e. combining ROS high-level functionality with the low-level reliability and safety of industrial robot controllers);
(v) create standard interfaces to stimulate ‘hardware-agnostic’ software development (using standardized ROS messages);
(vi) provide an easy path to apply cutting-edge research in industrial applications, using a common ROS architecture;
(vii) provide simple, easy-to-use, well-documented APIs.
Sensors
A list of sensors supported oficially by ROS and the community.
Type: Webpage
Tags: Sensors, hardware, navigation, control, vision, ROS
Resource updated: Aug 22, 2022
More information and source:
http://wiki.ros.org/Sensors
The Visualization Toolkit (VTK)
An open-source, freely available software system for 3D computer graphics, modeling, image processing, volume rendering, scientific visualization, and 2D plotting. It supports a wide variety of visualization algorithms and advanced modeling techniques, and it takes advantage of both threaded and distributed memory parallel processing for speed and scalability, respectively.
Type: Software toolkit
Tags: Image processing, 3D
graphics, volume rendering, visualization
Community: Large, supported by Kitware, Department of Energy (DOE) ASC Program, Los Alamos National Lab (LANL), Sandia National Laboratories, National Library of Medicine (NLM), Army Research Laboratory (ARL)
Latest version: 9.2.2
Resource updated: 2022
Resource created: Started on 1998
License: Open source (BSD license)
Operating system: Windows, Linux, MacOs
Languages: Javasript, C#, Trame (based on Python), C++
Tracebot Mockup
A repository containing ROS packages to run a simulated mockup of the Tracebot setup in Rviz and Gazebo. The objective is to analyse different placements of the robots and equipment in regard to reachability and manipulability.
Type: Package
Tags: Manipulability, metrics, ROS
Community: Small
Latest version: No release published
Resource created: Aug 5, 2021
License: Not specified
Operating system: Linux
Languages: Python
vision_opencv
Packages for interfacing ROS with OpenCV, a library of programming functions for real time computer vision.
Type: Collection of packages
Tags: Computer Vision, ROS
Community: Medium (59 contributors)
Latest version: 3.1.3
Resource updated: Oct 3, 2022
Resource created: Jul 1, 2009
License: Open source (BSD-3-Clause license)
Operating system: Linux
Languages: C++, Python, C
Comments: This repository contains cv_bridge (bridge between ROS 2 image messages and OpenCV image representation), image_geometry (a collection of methods for dealing with image and pixel geometry), opencv_tests (integration tests to use the capability of the packages with opencv), vision_opencv (meta-package to install both cv_bridge and image_geometry).