You are viewing the documentation for OpenSim 2.4. Are you looking for the latest OpenSim 4.0 Documentation?

API Upgrade Notes for OpenSim 2.4

API Users should be aware of several changes to the OpenSim API in 2.4:

  1. A note to API users with existing plugins and main programs:  Both OpenSim libraries and its dependency on Simbody libraries are being simplified and some libraries (such SimTKcpodes.lib) are no longer separate dependencies and are now part of the new SimTKsimbody library. This means existing projects that are seeking these libraries will fail to link and build. We advise users to replace their CMake files for their plugins and main programs with CMake files distributed with OpenSim examples since these are up-to-date.
  2. OpenSim 2.4 uses Simbody 2.2, this implies changes to the make files used to build plugins and/or main programs, in particular the library SimTKcpodes has been deprecated. Please remove references to it from your make files or use CMake files provided with the distribution.
  3. isControllerEnabled flag and corresponding enable_controller XML tag have been replaced by isDisabled, which is consistent with Force, Constraint and Condition ModelComponents.
  4. Controller::getIsEnabled() method replaced by Controller::isDisabled() and all context where getIsEnabled() was being use must be reversed.
  5. The option to useEulerAngles for the Ball and Free Joint has been removed. Coordinates for these Joints will never be quaternions, however underlying states can be quaternions but this will not be exposed to users.
  6. The base Muscle classes have been refactored.  Muscle now derives from a new PathActuator class that can apply a tension supplied by its control along a GeometryPath.
  7. The Muscle class interface has been simplified and it only assumes a muscle is comprised of a contractile fiber (with activation) and a tendon (slack length) and these two segments are in series and intersect at some pennation angle. It does not assume a Muscle has states or internal dynamics.
  8. Muscle::getPennationAngleAtOptimal() was added so that there is no ambiguity that this is the fixed muscle parameter of the pennation angle at the muscles optimal fiber length. Muscle::getPennationAngle(state) returns the pennation angle according to the state (e.g. length) of the Muscle.
  9. ActivationFiberLengthMuscle is a abstract class of Muscle that has activation and fiber lengths as its states as part of its internal dynamics.  Existing Muscles now derive from ActivationFiberLengthMuscle.
  10. ModelComponent interface includes helper methods for adding and automatic book-keeping of modeling options (flags), state variables, and cache variables so that is easier to make customized ModelComponents which includes extending all existing components.
  11. The following set of abstractions have been introduced and made accessible via the API:
    1. InverseKinematicsSolver 
    2. InverseDynamicsSolver
    3. CoordinateLimitForce (in place of PassiveJointTorque)
    4. ExternalForce
    5. ExternalLoads
    6. InducedAccelerationAnalysis (in place of Perturbation)
    7. PathActuator
    8. RigidTendonMuscle
    9. ActivationFiberLengthMuscle

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.