OpenSim's dynamics capability is based on the open-source Simbody package that is part of SimTK. Simbody is a full-featured, high-performance multibody dynamics toolset using internal coordinates (that is, generalized coordinates relating one body to the next, rather than Cartesian coordinates) and capable of modeling open- and closed-topology systems. Computation is performed using a recursive O(n) method so that performance scales linearly with problem size.
Simbody provides some basic components (objects) that OpenSim uses to construct the multibody system that underlies an OpenSim dynamic model. In most cases you will interact with these objects through the OpenSim API; however, you can get direct access to them for more advanced functionality. The basic Simbody concepts are:
- Body (mass properties and geometry)
- Mobilizer (internal coordinate joint)
- Constraint
- Force
Forces are important, but they are typically domain-specific (like muscles) rather than being part of the multibody system itself so are discussed elsewhere.
Simbody provides a wide set of built-in mobilizer (joint) and constraint types and allows arbitrary new ones to be constructed; OpenSim makes extensive use of that capability. For a comprehensive discussion of custom mobilizers, see:
Ajay Seth, Michael Sherman, Peter Eastman, and Scott Delp, Minimal formulation of joint motion for biomechanisms. Nonlinear Dynamics, 62:291-303, 2010.
In OpenSim the skeletal system (bodies connected by joints) are constructed by combining these Simbody classes:
- MobilizedBody: combines a body and its inboard mobilizer which define its degrees of freedom
- Constraint: applied to bodies or coordinates, directly , a constraint reduces the number of degrees of freedom of the system
You can obtain direct access to the concrete objects derived from these types from the OpenSim API, and then make use of the Simbody API to interact with them.
For more information, see https://simtk.org/home/simbody, Documents tab. The SimTK Tutorial, Simbody Theory Manual, and detailed Doxygen documents available there describe the individual classes and methods.
Next: SimTK Simulation Concepts
Previous: Available SimTK Numerical Methods
Home: Scripting and Development | Developer's Guide | SimTK Basics