SimTK Basics
The topics covered in this section include:
Overview
The OpenSim API uses the Simbios "simulation toolkit" SimTK as its low-level, domain-independent computational layer. Some familiarity with SimTK is required to use the OpenSim API because some of the SimTK objects are visible there. This chapter presents a brief introduction to the parts of SimTK that are most commonly used with the OpenSim API; you can find more documentation for SimTK elsewhere (see https://simtk.org/home/simbody, Documents tab). The intent, however, is that there is enough material here so that you can use the OpenSim API for many purposes without having to look further.
SimTK provides a broad base of functionality. We will discuss the subset needed for the OpenSim API in six groups:
- Numbers and Constants in SimTK
- Vectors and Matrices
- Basic Geometry and Mechanics
- Available SimTK Numerical Methods
- Multibody Dynamics Concepts (Simbody)
- SimTK Simulation Concepts
Together, the numerical objects and numerical methods provide Matlab-like functionality accessible from C++. We will cover the low-level numerical objects in detail, provide an introduction to the available numerical methods, and introduce basic concepts for Simbody and the SimTK simulation architecture as employed by OpenSim.
Naming Conventions
All symbol names that come from SimTK are in the SimTK namespace, while symbols introduced by OpenSim are in the OpenSim namespace. In most cases you will want to include the following line at the top of your source files so that you do not have to repeat the namespace for every SimTK symbol:
using namespace SimTK;
Alternatively, you can introduce symbols selectively with statements like
using SimTK::Vec3;
Or you can prefix the symbols with SimTK:: when you use them. There are a few symbols, typically pre-processor macros, that cannot be put in a C++ namespace; those symbols begin with the six-character string "SimTK_" instead.
SimTK uses mixedUpperAndLowerCase names with a capital letter used to begin a new word. Class names and constants begin with a CapitalLetter. Method (function) names and variable names begin with a lowerCaseLetter. Pre-processor macros, except for the initial SimTK prefix, are written in ALL_CAPS with underscores separating words.
For More Information about SimTK
This chapter provides a quick look at SimTK, but there is much more to learn if you are interested. A good place to start is https://simtk.org/home/simbody, Documents tab, where you will find several tutorials and theory manuals.
Next: Numbers and Constants in SimTK
Previous: C++ API Examples
OpenSim is supported by the Mobilize Center , an NIH Biomedical Technology Resource Center (grant P41 EB027060); the Restore Center , an NIH-funded Medical Rehabilitation Research Resource Network Center (grant P2C HD101913); and the Wu Tsai Human Performance Alliance through the Joe and Clara Tsai Foundation. See the People page for a list of the many people who have contributed to the OpenSim project over the years. ©2010-2024 OpenSim. All rights reserved.