Optimal Joint Reserves

OpenSim Moco is a software toolkit to solve optimal control problems with musculoskeletal models defined in OpenSim using the direct collocation method.
POST REPLY
User avatar
Molly Shepherd
Posts: 17
Joined: Thu Nov 14, 2019 9:36 am

Optimal Joint Reserves

Post by Molly Shepherd » Mon Mar 27, 2023 8:21 am

Hi all,

I am running MocoInverse and am experiencing some large joint actuator reserves for the pelvis in some of my models. I wanted to clarify that the pelvis tx, ty, tz reserves in MocoInverse would be equivalent to the Fx, Fy, Fz reserves from static op or CMC and that pelvis tilt, list, rotation are Mx, My, Mz.

Currently, I am modifying the joint reserves for all joints together using modelProcessor.append(ModOpAddReserves(10, 100,true));
Because of the large pelvis reserves necessary for my models to run, I am unable to lower my optimal force or bounds anymore, despite the other joints experiencing small reserves. I am hoping to modify these parameters for individual joints so the pelvis can remain larger as needed to run the models. I know I have to open the MocoStudy/Problem which I have done, but I then can't figure out how to modify the joints.

Additionally, I am curious if it is more important to have consistent optimal forces/bounds across models or to minimize the optimal forces/bounds within each model.

Thanks!
Molly

User avatar
Nicholas Bianco
Posts: 1041
Joined: Thu Oct 04, 2012 8:09 pm

Re: Optimal Joint Reserves

Post by Nicholas Bianco » Tue Mar 28, 2023 11:13 am

Hi Molly,

The pelvis residual forces and torques from MocoInverse are simimlar but not exactly the same as the Fx, Fy, Fz, Mx, My, Mz loads from SO or CMC. The MocoInverse residuals are generalized forces and torques, whereas the loads from SO/CMC are usually from ForceActuators and TorqueActuators added to the model. However, the are effectively perfomring the same function, jsut a slightly different implementation.

If you want to modfiy the reserve/residual actuator strenghts for individual degrees of freedom, then you will need to do that through the Model, not in Moco. But you can update the boudns on these actuators through Mocoproblem.

Generally, I'd recommended making these residuals/reserves only as strong as they need to be, and with bounds [-1, 1]. This typically leads to good convergence and does not inflate the objective function due to large control values for these actuators.

Best,
Nick

POST REPLY