Releases: opensim-org/opensim-moco
OpenSim Moco 0.4.0
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: ccd39f8#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.
OpenSim Moco 0.3.0
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.
OpenSim Moco 0.2.0
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.