In OpenSim 3.3, we've focused on improving and fixing bugs in static optimization and ligament scaling. Additional scripts, examples and several other bug fixes are also included. More details about these changes and more are described below.
Improvements and bug fixes for Static Optimization
- Output messages from Static Optimization are more informative when the optimizer fails to find a solution (e.g., if the model is under-actuated). This addresses the cryptic " DLASD4" error experienced on Windows x64. We upgraded the underlying optimization library used by OpenSim (Lapack). The upgraded Lapack library includes a bug fix, so that when the optimizer fails, the message is passed properly to OpenSim and thus the user. This is also helps prevent previously reported crashes when running Static Optimization.
- Static Optimization can now handle models with passive elements. The forces from passive elements are applied according to the dynamics of the system and outputs in the _forces file. The tool no longer outputs erroneous "activations" for passive elements.
- We updated the test case for static optimization accordingly.
Ligaments are now scaled by the Scale Tool
- The Scale Tool updates the path of ligaments during the scaling process. The resting length is also scaled according to the new geometry.
- The documentation for How Scaling Works was updated to describe these changes and include more details about how the algorithm scales models. We also updated the test cases to test scaling.
New examples and scripts
- We created a new example demonstrating how to use Static Optimization, fix common problems, and evaluate the quality of your results.
We developed a new Matlab script to automatically generate an actuators files to be used in Static Optimization, RRA, and CMC. The script tries to identify coordinates connected to ground and attach point and torque actuators (residual actuators). It attaches coordinate actuators at other coordinates. The Script can be found in the Matlab scripts folder.
- We include a FindOpenSim.cmake script that makes it easier to build plugins. It is located in the sdk folder of the Windows installation, or in the root directory of the source distribution. Instructions for using this script are contained within the script itself. Here's an example.
Fixes for additional user reported bugs
- When running Inverse Dynamics in previous versions of OpenSim, if you ran the tool once and then re-ran with a new motion file, this new motion file was not used. We fixed this bug.
- We fixed a bug where external forces were not visualized properly by the Associate Motion Data ... tool in the GUI. The bug occurred when the "Point Expressed In" and "Force Expressed In" body were different. Now both inputs are respected.
- The GUI no longer resamples output motions from tools for playback. This resampling was originally intended to improve visual playback of motions; however, the resampling creates issues when using these resampled motions as input to tools.
- We fixed a bug where using a debug preference greater than 10 caused a crash.
- Inverse Kinematics could sometimes complain of assembly failures when in fact tolerance had been achieved. This bug was also fixed.
Scripting functionality as requested by users
- We've exposed the CMC_TaskSet through scripting to allow users to generate task files through Matlab or Python scripting
- We fixed a bug where appending to a ForceSet through Matlab scripting caused a crash.
Updates to the metabolic models included with OpenSim
- We added the ability to scale muscle effort by a constant factor to compensate for excessive coactivation in a simulation. We also added flags enabling users to include negative mechanical work and/or forbid the total instantaneous power from being negative. The Umberger2010 model also now includes the capability to use the recruitment model from Bhargava et al., 2004.
- More details are available on the doxygen documentation (Umberger2010MuscleMetabolicsProbe and Bhargava2004MuscleMetabolicsProbe) and will be provided in an upcoming publication.
Upgrade to Simbody 3.5.3
- OpenSim now supports Contact Mesh files in .obj or .stl format. See the OpenSim Models section of the User's Guide for more information.
- OpenSim has new Lapack libraries, which leads to better message handling, as described above for Static Optimization.
- Advanced OpenSim C++ API users have access to Simbody 3.5 features; see Simbody's changelog for more details.
Updates and fixes to the build system
- The OpenSim 3.3 source code now builds in Visual Studio 2013 and in Visual Studio 2015 Release Candidate (RC).