-
Notifications
You must be signed in to change notification settings - Fork 48
cisst libraries and SAW components
Table of Contents generated with DocToc
Library | Description | Status |
---|---|---|
cisstCommon | Common infrastructure such as logging, class and object registries, serialization and de-serialization, etc. | Stable |
cisstVector | Basic linear algebra and spatial transformations in two dimensions (2D) and three dimensions (3D) | Stable |
cisstNumerical | Thread-safe numerical methods (relies on LAPACK) | Stable |
cisstInteractive | C++ classes and Python scripts for the Interactive Research Environment (IRE) | Stable |
cisstOSAbstraction | Operating system services (e.g., threads, mutual exclusion, etc.) for Windows, Linux, Mac OS X, RTAI/Linux, ... | Stable |
cisstMultiTask | Component-based framework for defining tasks and devices, provided and required interfaces, and command objects | Stable |
cisstStereoVision | Mono and stereo video acquisition, processing, and display | Stable |
cisstParameterTypes | Standard data types used by command objects in component-based framework | Development |
cisstRobot | Robot control elements, including cooperative control, trajectory control, etc. | Development |
cisst3DUserInterface | Support for 3D user interfaces (3D input and 3D display) | Development |
Most libraries also come with examples and test programs.
The SAW package currently contains the following implemented components:
Component | Description |
---|---|
saw3Dconnexion | Interface to 3D Connexion Space Navigator 3D mouse |
sawAtracsysFusionTrack | Interface to Atracsys fusionTrack |
sawBarrett | Interface to Barrett Technology Whole Arm Manipulator (WAM) robot and components |
sawCANBus | Generic Controller Area Network (CAN) bus interfaces |
sawClaronMicronTracker | Interface to Claron Technology Micron optical tracking system |
sawCMUSphinx4 | Interface to Sphinx4 speech recognition package |
sawControllers | Various control components, including PD (with gravity comp.), PID, teleoperation |
sawDataPlayer | Application to replay recorded multi-media data |
sawForceDimensionSDK | Interface to the ForceDimension SDK, supports haptic devices Omega, Sigma and Novint Falcons |
sawGLUTSimulator | GLUT-based simulator (simpler than sawOpenSceneGraph simulator) |
sawIntuitiveDaVinci | Interface to da Vinci surgical robot via read-only research interface (requires license and library from Intuitive Surgical) |
sawIntuitiveResearchKit | Components for the da Vinci Research Kit |
sawJR3ForceSensor | Interface to JR3 force sensor using Comedi |
sawKeyboard | Keyboard interface (generate commands or events from key presses) |
sawLoPoMoCo | Interface to JHU custom Low Power Motor Controller board |
sawMedtronicStealthlink | Interface to Medtronic Stealthstation via Stealthlink research interface (requires license and library from Medtronic Navigation) |
sawMicroScribeDigitizer | Interface to Revware MicroScribe digitizer device (requires Arm32Dll SDK from Revware) |
sawNDITracker | Interface to Northern Digital Inc. (NDI) tracking systems that use a serial port; includes Polaris and Aurora |
sawNovintFalcon | Interface to Novint Falcon haptic device |
sawOpenAL | Interface to Open Audio Library |
sawOpenDynamicsEngine | Interface to Open Dynamics Engine (ODE) physics-based simulator; requires sawOpenSceneGraph |
sawOpenIGTLink | Bridge between ''cisst'' interfaces and OpenIGTLink |
sawOpenNI | Interface to Microsoft Kinect via OpenNI |
sawOpenSceneGraph | Interface to Open Scene Graph (OSG) visualization software (used for simulations) |
sawOptoforceSensor | Interface to OptoForce force sensors using a serial port over USB |
sawRobotIO1394 | Interface to custom IEEE-1394 (Firewire) motor controller |
sawSartoriusScale | Interface to high-precision scale |
sawSensablePhantom | Interface to Sensable Phantom haptic device (e.g., Phantom Omni) |
sawTextToSpeech | Component to convert text to speech output (Windows, Linux, Mac) |
sawTrajectories | Various trajectory planners and generators (no hardware dependency) |
Following are descriptions of some of the cisst libraries:
cisstCommon: Common infrastructure for the rest of the package such as logging, error and exception handling, class and object registries, serialization and de-serialization, ...
cisstVector: cisstVector is a library for basic linear algebra and spatial transformations in two dimensions (2D) and three dimensions (3D). It contains classes for vectors and matrices, whose sizes can be pre-specified (fixed size) or dynamic. All containers can be defined as memory allocating or overlaid. The former provide user control over matrix storage order (row-major or column-major). The latter facilitate wrapping any memory block with a vector or matrix interface, as well as defining slices of existing containers, such as row- and column-vectors in a matrix, or submatrices in a large matrix. The library provides a large collection of algebraic operations (e.g., sums, products, etc.) with uniform interfaces across all container types and efficient implementations, such as template metaprogramming. The structure of the library enables rapid extensions (scalability) across container-element types and container sizes through templated classes, and a simple addition of new methods. The spatial transformations, with generic interfaces, includes a diverse collection of rotation representations, with a uniform syntax for converting from one to another. Besides the broad internal API, the cisstVector library can easily and efficiently interface external software packages, such as LAPACK, VNL and OpenGL, and provides the underlying data types used in the cisstNumerical library. The interfaces can also be exported to a Python environment through Swig wrapping -- typemaps are used to convert between cisstVector vector/matrix types and standard Python numpy
arrays.
cisstNumerical: cisstNumerical is a library of numerical routines. The majority of cisstNumerical features rely on well established and tested routines, written in Fortran (such as Singular Value Decomposition, LU decomposition, LU based matrix inverse, Hanson and Haskell least squares with or without constraints...). cisstNumerical adds a user-friendly C++ interface based on the cisstVector fixed size and dynamic vectors and matrices. While this interface greatly eases the task of a novice user, it retains the flexibility required for advanced users by allowing them to overlay their input over pre-allocated memory. Furthermore, the cisstNumerical wrappers ensure that the format of the input is correct (size, storage order and compactness), and, whenever possible, enable the use of any storage order (either Fortran-like column major or C-like row major). Finally, since cisstNumerical uses LAPACK3E, it is thread safe as opposed to most libraries based on LAPACK or CLAPACK. Besides the Fortran wrappers, cisstNumerical contains some optimized functions for specific cases (such as Gauss-Jordan inverse of small fixed size matrices) and some basic algebraic utilities (test orthonormality).
cisstInteractive: C++ classes and Python scripts for the cisst Interactive Research Environment (IRE).
cisstOSAbstraction: Wrappers for Operating System services such as threads, mutual exclusion, time, dynamic loading, ...
cisstMultiTask: cisstMultiTask supports multi-threaded programming with efficient, lock-free, and thread-safe data exchange. The task class contains a (periodic) thread, state table, and mechanisms for interaction. The design utilizes component-based software engineering concepts, where all interaction occur via interfaces. Each interface contains multiple commands that implement the functionality provided by that interface.
- Home
- Libraries & components
- Download
- Compile (FAQ)
- Reference manual
- cisstCommon
- cisstVector
- cisstNumerical
- cisstOSAbstraction
- TBD
- cisstMultiTask
- cisstRobot
- cisstStereoVision
- Developers