We are pleased to announce the following new features, bug fixes, and other improvements in OpenSim 4.3. We also provide a list of key details for upgrading to OpenSim 4.3 from previous versions of OpenSim (see section Upgrade Notes), as well as pointers to additional information on the changes in OpenSim 4.3.
New Features for Working with Inertial Measurement Unit (IMU) Data:
- We introduced an IMU Component, which can be added to any model, along with an IMUDataReporter analysis. This analysis allows users to report orientation, accelerometer, and gyroscope signals from IMUs placed on a Model and enables users to add IMUs on the fly for post-hoc calculation of IMU signals.
- With the new IMU Component, the IMUPlacer (part of the process in IMU Inverse Kinematics) now creates and places IMU Components on the Model.
- We added support in Moco for tracking IMU data and EMG data.
- We also added the ability to optimize scale factors, using the component MocoScaleFactor. There is also a new interface for MocoGoals to add these scale factors to a MocoProblem. This functionality allows users to scale the tracking reference data associated with a control in the tracking cost when tracking EMG data using MocoControlTrackingGoal.
New Features and Examples for Matlab Users:
- New examples show how to track IMU and EMG signals with Moco in both Matlab and Python. These are included with the files distributed with the release in the following locations:
- MATLAB EMG Tracking: <ResourcesDir>/Code/Matlab/Moco/exampleEMGTracking
- MATLAB IMU Tracking: <ResourcesDir>/Code/Matlab/Moco/exampleSquatToStand/exampleIMUTracking
- Python EMG Tracking: <ResourcesDir>/Code/Python/Moco/exampleEMGTracking
- Python IMU Tracking: <ResourcesDir>/Code/Python/Moco/exampleSquatToStand/exampleIMUTracking
Improvements and Additions to the API for Matlab, Python, and C++ Users:
- We added "createSyntheticIMUAccelerationSignals" method to create Synthetic IMU data in SimulationUtilities.
Bug Fixes and Performance Enhancements:
- We fixed a bug with Actuation analysis that would lead to extra columns in the output when an actuator is disabled (Issue #2977)
- We fixed an issue where incorrect header information was produced in BodyKinematics file output
- We fixed a bug applying non-uniform scaling to inertia matrix of a Body due to using local variable of type SysMat33 which resulted in non-uniform scaling of Body not being applied to inertia (Issue #2871)
- The default installation of OpenSim comes with bindings built against Python 3.8 and Numpy 1.20. Note that the installation process for scripting on windows has changed to follow the python 3.8 changes to how libraries are located as described here Scripting in Python.
Full list of changes and updates: