Per the recent announcement from Jen Hicks, the newest version of Moco has been released along with OpenSim 4.2! Since Moco is now merged into the core OpenSim codebase, we’re calling this release Moco 1.0.0. It’s been a long wait since the last release, but the time spent unifying the Moco and OpenSim codes will ensure long term stability for the Moco project and will allow for faster development cycles going forward.

Thanks to those who have been active contributors to the Moco forum! Even though Moco releases will now be included with OpenSim releases posted on the main OpenSim SimTK page, the Moco SimTK forum will remain the main hub for all Moco related discussion.

In this release we’ve added the component Bhargava2004SmoothedMuscleMetabolics, a smoothed implementation of the Bhargava et al. (2004) metabolics model designed for gradient-based optimization (contributed by Antoine Falisse). With this component and MocoOutputGoal, you can now include metabolic cost terms in the objective function. Refer to example2DWalkingMetabolics to see how to use this component in your MocoProblems.

We’ve fixed two major bugs related to muscle wrapping where 1) ModOpReplaceMusclesWithDeGrooteFregly2016 did not copy over the original muscle’s PathWrapSet and 2) muscle wrapping wasn’t thread-safe, which disallowed parallelization with MocoCasADiSolver. Muscle wrapping should now work seamlessly without needing to change how you construct your models with ModelProcessor.

We’ve included various small updates in this release. The analyze() utility function has been split into a new analyze() function that takes a StatesTrajectory and an analyzeMocoTrajectory() function that takes a MocoTrajectory. TableProcessor no longer automatically converts tables from degrees to radians; use TableProcessor::processAndConvertToRadians() or TabOpConvertDegreesToRadians instead. An Exception is now thrown if the model includes joints whose generalized speeds do not match the derivative of the generalized coordinates (i.e., BallJoint, FreeJoint, EllipsoidJoint, and ScapulothoracicJoint) since Moco does not support these joint types yet.

Finally, the Moco paper has been published in PLOS Computational Biology! Read the paper here.

More details about this release are in the CHANGELOG.md and CHANGELOG_MOCO.md files.

Get Moco 1.0.0 by downloading the OpenSim 4.2 release from SimTK.