Documentation is being moved to github:

May 2014: we are migrating (and updating) the documentation from the wiki to github.

cisst libraries and Surgical Assistant Workstation (SAW)


The cisst package is a collection of libraries designed to ease the development of computer assisted intervention systems. The  Surgical Assistant Workstation (SAW) is a platform that combines robotics, stereo vision, and intraoperative imaging (e.g., ultrasound) to enhance a surgeon's capabilities. The SAW package therefore consists of implemented components (e.g., interfaces to many of the devices used for computer-integrated surgery) as well as reusable applications.

All software is available under an open source license, which can be found  here. The source code can be obtained from our public Subversion (SVN) repository, Most users should check out from the trunk.

The following table describes the cisst libraries and their status:

cisstCommonCommon infrastructure such as logging, class and object registries, serialization and de-serialization, etc.Stable
 cisstVectorBasic linear algebra and spatial transformations in two dimensions (2D) and three dimensions (3D)Stable Tutorial
 cisstNumericalThread-safe numerical methods (relies on LAPACK)Stable Tutorial
cisstInteractiveC++ classes and Python scripts for the Interactive Research Environment (IRE)Stable
cisstOSAbstractionOperating system services (e.g., threads, mutual exclusion, etc.) for Windows, Linux, Mac OS X, RTAI/Linux, ...Stable
cisstMultiTaskComponent-based framework for defining tasks and devices, provided and required interfaces, and command objectsStableTutorial
cisstStereoVisionMono and stereo video acquisition, processing, and displayStableTutorial
cisstParameterTypesStandard data types used by command objects in component-based frameworkDevelopment
cisstDevicesComponents that provide interfaces to various devices, such as robots, haptic devices, trackers, etc.Obsolete (use SAW instead)
cisstRobotRobot control elements, including cooperative control, trajectory control, etc.DevelopmentTutorial
cisst3DUserInterfaceSupport for 3D user interfaces (3D input and 3D display)Development

Most libraries also come with examples and test programs. More detailed descriptions of the cisst libraries are available here.

The SAW package currently contains the following implemented components:

saw3DconnexionInterface to 3D Connexion Space Navigator 3D mouseYes
sawBarrettInterface to Barrett Technology Whole Arm Manipulator (WAM) robot and componentsYes
sawCANBusGeneric Controller Area Network (CAN) bus interfacesYes
sawClaronMicronTrackerInterface to Claron Technology Micron optical tracking systemYes
sawCMUSphinx4Interface to Sphinx4 speech recognition packageYes
sawControllersVarious control components, including PD (with gravity comp.), PID, teleoperationYes
sawGLUTSimulatorGLUT-based simulator (simpler than sawOpenSceneGraph simulator)Yes
sawIntuitiveDaVinciInterface to da Vinci surgical robot via read-only research interface (requires license and library from Intuitive Surgical)Yes
sawJR3ForceSensorInterface to JR3 force sensor using ComediYes
sawKeyboardKeyboard interface (generate commands or events from key presses)No (used elsewhere)
sawLoPoMoCoInterface to JHU custom Low Power Motor Controller boardNo
sawMedtronicStealthlinkInterface to Medtronic Stealthstation via Stealthlink research interface (requires license and library from Medtronic Navigation)Yes
sawMicroScribeDigitizerInterface to  Revware MicroScribe digitizer device (requires Arm32Dll SDK from Revware)Yes
sawNDITrackerInterface to Northern Digital Inc. (NDI) tracking systems that use a serial port; includes Polaris and AuroraYes
sawNovintFalconInterface to Novint Falcon haptic deviceYes
sawOpenALInterface to Open Audio LibraryYes
sawOpenDynamicsEngineInterface to Open Dynamics Engine (ODE) physics-based simulator; requires sawOpenSceneGraphYes
sawOpenIGTLinkBridge between cisst interfaces and OpenIGTLink (currently, just send/receive transformation frames; send/receive images TBD)Yes
sawOpenNIInterface to Microsoft Kinect via OpenNIYes
sawOpenSceneGraphInterface to Open Scene Graph (OSG) visualization software (used for simulations)Yes
sawRobotIO1394Interface to custom  IEEE-1394 (Firewire) motor controllerYes
sawROSBridge between cisst/SAW and ROS (compiled with ROS build system)Yes (external repository)
sawSartoriusScaleInterface to high-precision scaleYes
sawSensablePhantomInterface to Sensable Phantom haptic device (e.g., Phantom Omni)Yes
sawTextToSpeechComponent to convert text to speech output (Windows, Linux, Mac)Yes
sawTrajectoriesVarious trajectory planners and generators (no hardware dependency)Yes

The SAW package currently contains the following applications:

sawDataPlayerApplication to replay recorded multi-media data
sawIntuitiveResearchKitApplications for the da Vinci Research Kit

The best way to get the cisst (and SAW) software is to download it from the SVN repository. If you download the latest development version, please check the  nightly tests results.

The cisst library is available as a ROS stack - see  jhu-lcsr-ros-pkg (ROS is the Robot Operating System created by Willow Garage). This is an older version of the cisst library, but will be updated in the future.


Download and build

To download and build from source, check out the trunk from the cisst SVN repository:

The core cisst libraries have no required external dependencies (other than CMake and a C++ compiler); however, there are many optional features and example programs that depend on external packages. Many of the example programs use either the  Qt or  FLTK cross-platform GUI package, and some of the libraries contain additional features (e.g., Qt widgets) that are compiled if the corresponding GUI package is available. While it is possible to use any GUI package with cisst, we recommend Qt and provide the most support for that package.

For more information about setting up and building the cisst libraries, including the optional external dependencies, consult the following:

If you are using any numerical method, you will also need the cisstNetlib package. The easiest way to get cisstNetlib is to select the CMake option CISSTNETLIB_DOWNLOAD_NOW, which instructs CMake to download the package for you. If you wish to download it manually, use the following link:

External dependencies for cisstStereoVision for Windows:

Using the cisst libraries

To get the general idea of the libraries, you may want to read the Quick Start documents first. Quick Sheet documents summarize a library's API in a concise table. The User Guides provide a deeper insight into API, and suggest efficient ways of using the libraries. Finally, the Reference Manual provides full detail about each API component (types, functions, etc.). The following documents are all available under SVN.

The following (somewhat outdated) design documents are for the Surgical Assistant Workstation:

The SAW source code (implemented components and applications) is available in the saw directory of the cisst SVN repository:



The cisst software has been developed with the support of the National Science Foundation, EEC 9731748, EEC 0646678, and MRI 0722943, and by Johns Hopkins University internal funds.

More details about this Trac server can be found in the Original Wiki Start.