iMSTK 5.0 Released

We are pleased to announce the release of iMSTK version 5.0. The Interactive Medical Simulation Toolkit (iMSTK) is an open-source toolkit that allows faster prototyping of surgical simulators and skill trainers. iMSTK features advanced high-performance libraries for physics simulation, haptics, advanced rendering/visualization, user hardware interfacing, geometric processing, collision detection, contact modeling, and numerical solvers.

In this release, major improvements were made to the collision detection and response capabilities, rendering, and hardware interface modules. Numerous refactors and bug fixes were made across the board to improve extensibility. The testing infrastructure was simplified and coverage was improved substantially. Numerous medically relevant examples were added. Most notably, v5.0 comes with a beta release of the C and C# wrappers for iMSTK along with documentation and examples.

Major Release Highlights

  • Improved collision detection and response modules: Collision detection in imstk was refactored. It is now more extensible and can handle more use cases. Notable improvements include a refactored class architecture for cross-model explicit interactions, the ability to redefine the response model in position based dynamics (PBD) and rigid body dynamics (RBD) models, one-way PBD and RBD interactions, and more narrow-phase collision detection cases. See the release notes for a full list of changes and collision module documentation.
Real-time collision handling of the user-controlled object (line mesh) with deformable surface mesh
Interactive collision handling between multiple bodies
  • Auto-generated C and C# interfaces (beta): This release ships with a beta version of the automatically generated C and C# interfaces for imstk using SWIG. The wrappers can be enabled at configure time by turning ON the iMSTK_WRAP_CSHARP setting. Additionally, imstk native examples were replicated in C# using the generated wrapper. The wrapper and the examples can be found in the <imstk_src_dir>\Wrappers\csharp directory.
Visualizing and running a scene in iMSTK: C++ vs C#
  • Needle-Tissue interaction capabilities: Needle-tissue interaction scenarios are common in many surgical procedures. This release features extended PBD models capable of needle-tissue interactions with rigid or deformable surfaces and volumes in real time. Examples were added to iMSTK that perform at a haptic rate of  greater than 1000hz:
    • PBDTissueVolumeNeedleContact: Demonstrates needle volume embedding in a tetrahedral PBD model.
    • PBDTissueSurfaceNeedleContact: Demonstrates needle surface embedding in a tetrahedral PBD mode. (Only constrained at the point of contact on the surface)
    • RBDSDFPivotNeedle: Demonstrates needle surface embedding in a static signed distance field.
    • PBDStaticSuture: Demonstrates suture (arc shaped) needle surface embedding.
Needle-deformable tissue interaction using needle volume embedding in PBD model
  • Extended device support: We reimplemented VRPN device support, while currently only the analog, button, and tracker devices are supported, this support will be extended to include force feedback devices and others in the future. This changes removes an issue in the iMSTK infrastructure that limited the useability of VRPN from inside of iMSTK. With the support of the Single-board microcontrollers such as Arduino as shown below, a wide variety of sensors and actuators can be interfaced with in iMSTK.
Custom sensor to detect cannula movement connected to an iMSTK application via Arduino board (Courtesy: ViRaSIM Lab at UCA)
  • Testing infrastructure: The test coverage has been improved substantially (doubled). Additionally, integration testing has been added which are currently used to test the rendering module.
  • Input data management: Data needed by the examples and tests are managed using the Git Large File Storage (LFS) using a dedicated git repository. This allows developers to version data files similar to the code. At build time, the data repository is treated as an external dependency which when built places the data in the <imstk_build_dir\install\data> directory.

Please refer to the release notes for a full list of changes and contributors. For additional information about iMSTK, please follow the links below.

Future Work

This release featured the beta version of the C and C# interfaces to the C++ core modules. These interfaces will be further tested in the coming weeks for a full release. This will be followed by the release of iMSTK’s asset in the Unity store. The asset will be built using a new Unity interface that in turn uses the C# API.


The research reported in this publication was supported, in part, by the following awards from NIH: R44DE027595, 1R44AR075481, 1R01EB025247, 2R44DK115332.

Note: The content is solely the responsibility of the authors and does not necessarily represent the official views of the NIH or its institutes.

Questions or comments are always welcome!