Opensim Moco Versions Save

Solve optimal control problems for musculoskeletal models using OpenSim and direct collocation.

0.4.0

4 years ago

This release uses an updated version of opensim-core that includes SmoothSphereHalfSpaceForce, which has now been removed from the Moco codebase. The interface to this class has been updated to use OpenSim’s ContactSphere and ContactHalfSpace classes, so your models must be updated in order to continue using this component. You can refer to the gait model included with example2DWalking for the correct XML syntax and view a file diff of the changes here: https://github.com/opensim-org/opensim-moco/commit/ccd39f82acba5f23ebc3423eb40d2197d6d41d8b#diff-eb627df1f2a265a84a30b7c6b4f92999.

Contact tracking was added as an option to example2Dwalking, and MocoContactTrackingGoal was updated to support contact spheres distributed across multiple bodies. MocoControlTrackingGoal was updated to more easily associate controls to reference data, as demonstrated by a new electromyography tracking option added to exampleMocoInverse. A “projection” setting was added to MocoFrameDistanceConstraint to provide more flexibility in posing this constraint.

DeGrooteFregly2016Muscle's passive force multiplier now has a stiffness parameter. To support this change, the curve was tweaked slightly. This may have a minor effect on solutions relying on passive fiber forces. The maximum difference between the new and old passive force-length curves is 0.07 (unitless).

Finally, we’ve included various bug fixes in this release:

  • Fixed a bug where MocoPeriodicityGoal incorrectly specified control constraints
  • Fixed an error that occurs when using ModOpRemoveMuscles
  • Fixed some default pelvis and lumbar parameters in createPeriodicTrajectory()
  • Added some missing MATLAB and Python commands to the bindings

More details about this release are in the CHANGELOG.md file.

0.3.0

4 years ago

Two major additions are included in this Moco release: reporting the breakdown of solution objective terms and contact force tracking.

When using MocoCasADiSolver, MocoSolution now provides a breakdown of the terms in the objective. The portions of the total objective for all terms (including their weights) can be accessed by the methods getObjectiveTerm() and getObjectiveTermByIndex() on MocoSolution, and are also printed to the command line or console window upon arriving at a solution.

MocoContactTrackingGoal was added, allowing minimization of error between model compliant contact forces and experimentally measured contact force data. Currently, this goal does not track torques or centers of pressure, and only supports the SmoothSphereHalfSpaceForce contact element included with Moco.

Other minor changes in this release include renaming exampleSitToStand to exampleSquatToStand, moving the bisection root solver in DeGrooteFregly2016Muscle to a dedicated utility in MocoUtilities, and a bug fix in the report.py report generation tool related to the STOFileAdapter no longer have a read() method due to a recent change in OpenSim's API.

These changes, and changes from previous releases, are reflected in CHANGELOG.md.

0.2.0

4 years ago

This release contains a MATLAB version of Moco's 2D predictive simulation of walking, contributed by Brian Umberger, and examples in MATLAB, Python, and C++ for using the MocoInverse tool. Lastly, we added examples for creating a custom goal in C++; see exampleSlidingMassAdvanced.cpp and exampleMocoCustomEffortGoal.

To easily plot a solution in MATLAB, we introduced the osimMocoTrajectoryReport.m utility.

We updated the versions of Simbody and OpenSim that we bundle with Moco. As a result, this release contains a fix for the simbody-visualizer for macOS Catalina, and contains OpenSim's support for IMUs.

This release contains the following new modules:

  • MocoOutputGoal, for minimizing any scalar output of a model.
  • MocoFrameDistanceConstraint, to constrain the distances between frames in the model.
  • MocoAngularVelocityTrackingGoal and MocoAccelerationTrackingGoal, added in anticipation of supporting IMU data in the future.

We made minor changes to various parts of Moco's interface; you may have to make small changes to your code to use this release. For example, converting muscles from Millard2012EquilibriumMuscle to DeGrooteFregly2016Muscle now preserves the fiber damping property, while previously we set fiber damping to 0 during this conversion. To set fiber damping to zero, you can use ModOpFiberDampingDGF.

More details about this release are in the CHANGELOG.md file.

0.1.0-preprint

4 years ago

This is the version of Moco used to generate results for the Moco preprint.

Visit SimTK to download binaries.