-
Alexis Girault authoredAlexis Girault authored
- iMSTK - Interactive Medical Simulation Toolkit
- About
- Overview
- Participants
- Licensing
- Resources
- Documentation
- Mailing Lists
- Issue-tracker
- Getting started with iMSTK
- 1. Getting the source code
- 2. Setting up your SSH key
- 3. Building iMSTK
- On Linux/MacOSx
- On Windows
- Phantom Omni Support
- Using iMSTK in your application
- Contributing to iMSTK
- Coding guidelines
- Code style
- Documenting your code
- Commit messages
- Forking workflow
- Dashboards
iMSTK - Interactive Medical Simulation Toolkit
- About
- Overview
- Participants
- Licensing
- Resources
- Documentation
- Mailing-lists
- Issue tracker
- Getting started with iMSTK
- Getting the source code
- Setting up your SSH key
- Building iMSTK
- Using iMSTK in your application
- Contributing to iMSTK
- Coding guidelines
- Forking workflow
- Dashboards
About
Overview
iMSTK is a C++ based free & open-source toolkit that aids rapid prototyping of real-time multi-modal surgical simulation scenarios. Surgical simulation scenarios involve algorithms from diverse areas such as haptics, advanced rendering, computational geometry, computational mechanics, virtual reality and parallel computing. iMSTK employs a highly modular and extensible design to enable the use of libraries and codes from these areas in a given application thereby reducing the development time.
Participants
Supported by:
- NIH-OD SBIR award 9R44OD018334
- NIH-NIBIB SBIR award 1R44EB019802-01A1
Developed at:
Licensing
Coming soon
Resources
Documentation
Coming soon
Mailing Lists
The iMSTK Users mailing list is the principal means of communication among developers and users: imstk-users@imstk.org
The iMSTK Developers mailing list is for developers where design and implementation issues are discussed: imstk-developers@imstk.org
Issue-tracker
Designed more specifically for developers, the issue tracker allows developers to list and discuss issues & enhancements:
Assign labels to the issues. The description of each label can be found HERE.
bug compilation critical enhancement optimization clean up refactor testcase visualization mechanics device documentation support discussion
Getting started with iMSTK
1. Getting the source code
To be able to contribute back to the iMSTK project, the preferred way is to use Git for code version control. You can use the following command in the terminal for Linux/MacOSx, or in Git Bash for Windows.
git clone git@gitlab.kitware.com:iMSTK/iMSTK.git
2. Setting up your SSH key
The build process will check out external dependency sources with the SSH protocol to avoid manually entering credentials during the build process. To allow this, make sure you set up your ssh key in your profile HERE. You can find documentation on how to generate and retrieve your public ssh key HERE.
3. Building iMSTK
We use CMake to configure the project on every platform. See how to run it HERE.
Type the following commands from the same location you cloned the code. This will configure the build in a directory adjacent to the source directory. To easily change some configuration variables like CMAKE_BUILD_TYPE
, use ccmake
instead of cmake
.
mkdir iMSTK-build
cd iMSTK-build
cmake ../iMSTK #/path/to/source/directory
make -j4 #to build using 4 cores
You can also use Ninja for a faster build instead of Unix Makefiles. To do so, configure the cmake project with -GNinja
:
cmake -GNinja ../iMSTK
ninja
This will checkout, build and link all iMSTK dependencies. When making changes to iMSTK base source code, you can then build from the Innerbuild
directory.
Run CMake-GUI and follow the directions described HERE. You will have to choose which version of Visual Studio you'd like to use when configuring the project, make sure to select Microsoft Visual Studio C++ 12 2013. CMake will generate a iMSTK.sln
solution file for Visual Studio at the top level. Open this file and build all targets, which will checkout, build and link all iMSTK dependencies. When making changes to iMSTK base source code, you can then build from the iMSTK.sln
solution file located in the Innerbuild
directory.
/!\ MVSC 2015 is not yet supported as the dependency libusb 1.0.20 does not support it yet. We will work on supporting MVSC in the near future when libusb 1.0.21 is released.
To support the Geomagic Touch (formerly Sensable Phantom Omni) haptic device, follow the steps below:
- Install the OpenHaptics SDK as well as the device drivers:
- Configure your CMake project with the variable
iMSTK_USE_OMNI
set toON
. - After configuration, the CMake variable
OPENHAPTICS_ROOT_DIR
should be set to the OpenHaptics path on your system.
Using iMSTK in your application
Coming soon
Contributing to iMSTK
Coding guidelines
Coming soon
Coming soon
Coming soon
Forking workflow
To contribute your changes to iMSTK, you will need to follow the Gitlab forking workflow.
- Fork the iMSTK project to your own namespace
https://docs.gitlab.com/ce/workflow/forking_workflow.html#creating-a-fork.
- Add the forked remote repository to your git source directory
git remote add myremote git@gitlab.kitware.com:{mynamespace}/iMSTK.git
- Create a new branch where you will commit your changes, and name it based on the feature or fix you are implementing
git checkout -b new-feature
- Once you have committed your changes, push your branch to your namespace
git push myremote new-feature
- Once your branch is ready for merging, create a merge request
https://docs.gitlab.com/ce/workflow/forking_workflow.html#merging-upstream
- Once your changes have been reviewed and merged into the
master
branch of iMSTK, you may get rid of your development branch and pull the latest commits from the master branch, then repeat from step 3 for further development
git branch -d new-feature
git checkout master
git pull origin master
Dashboards
Dashboards - powered by CDash - help to visualize the latest state of iMSTK builds on Windows, MacOSx, and Linux, to ensure that any changes to the code will not downgrade the current state of the platform:
Name | CDash Build Group Description |
---|---|
Nightly | Builds running every night |
Continuous | Builds running every time there is a change to the master branch |
Experimental | Builds running after calling @buildbot test in the comment section of a Merge Request |