Dear OpenSim Moco community,
I am running an Optimization by initating MocoInverse and a MocoStudy for emg tracking. I use the DHondt_2023_model_with_3_segment_foot.osim model. The following modifications were done: at all DOFs except for the right ankle I appended strong coord actuators. I added reserve actuators for the remaining DOFs at the right ankle within the Moco environment.
Before running the MocoStudy I do parameter optimization on the right ankle-foot muscles and make sure that all normalized lengths and velocityies are within physiological ranges.
The data is a normal gait trial. RRA was performed to minimize dynamic inconsistencies.
Problem: Only with high reserve actuator forces (>250N) the simulation will converge. THe highest reserve actuator forces are at the right subtalar joint. The subtalar joint moment from ID is 15Nm max and the participant is about 40kg. Max moment of the evertor muscles is about 49Nm so I think the model should definitely be strong enough.
Do you have any suggestions where I can look at to reduce the reserve actuator forces?
With kind regards
Christian
high reserve actuators
- Mikayla Schneider
- Posts: 6
- Joined: Mon Aug 30, 2021 5:35 pm
Re: high reserve actuators
Hi Christian. Unfortunately, I don't have an answer for your reserve actuator question but I was wondering if you could share how you did parameter optimization on the right ankle-foot muscles before the MocoStudy? Was that optimization within Moco, using an OpenSim tool, or with your own process? Thanks!
- Christian Greve
- Posts: 41
- Joined: Mon Jun 13, 2016 11:14 pm
Re: high reserve actuators
Dear Mikayla,
I did it within Moco. problem.addParameter()
Regards
Christian
I did it within Moco. problem.addParameter()
Regards
Christian
- Mikayla Schneider
- Posts: 6
- Joined: Mon Aug 30, 2021 5:35 pm
Re: high reserve actuators
How many parameters did you optimize with problem.addParameter()? I tried to do the same with 3 parameters each (max isometric force, slack tendon length, and optimal fiber length) 15 lower-body muscles and the overall simulation was so slow that I didn't even try to let it finish converging.
- Nicholas Bianco
- Posts: 1003
- Joined: Thu Oct 04, 2012 8:09 pm
Re: high reserve actuators
Hi Christian,
Are there any passive force structures about the subtalar joint in your model? Passive forces might be getting ignored when running inverse dynamics, so comparing ID moments could be misleading.
Finally, are the reserves used heavily in the final solution? If the reserves are strong, but the muscles produce most of the moment about the subtalar joint, then it might be fine. The large reserves could be needed for convergence if a few time points have some large dynamic inconsistencies.
Best,
Nick
Are there any passive force structures about the subtalar joint in your model? Passive forces might be getting ignored when running inverse dynamics, so comparing ID moments could be misleading.
Finally, are the reserves used heavily in the final solution? If the reserves are strong, but the muscles produce most of the moment about the subtalar joint, then it might be fine. The large reserves could be needed for convergence if a few time points have some large dynamic inconsistencies.
Best,
Nick
- Christian Greve
- Posts: 41
- Joined: Mon Jun 13, 2016 11:14 pm
Re: high reserve actuators
Dear Nick,
@passive force structures: yes, there are ligament forces.
@are reserves used heavily? Yes, the muscles play a very small role in generating moments. But if I reduce max force of the reserves it would not converge.
Any other suggestions? Would it make sense to reduce max reserve forces but allow them to be activated up to infinity?
@parameter optimization: yes it takes long time. I optimize for tend slack length and opt fiber length in the ankle foot muscles. I am running simulations on a High Performance Cluster. That saves some time.
Thanks for your help
Christian
@passive force structures: yes, there are ligament forces.
@are reserves used heavily? Yes, the muscles play a very small role in generating moments. But if I reduce max force of the reserves it would not converge.
Any other suggestions? Would it make sense to reduce max reserve forces but allow them to be activated up to infinity?
@parameter optimization: yes it takes long time. I optimize for tend slack length and opt fiber length in the ankle foot muscles. I am running simulations on a High Performance Cluster. That saves some time.
Thanks for your help
Christian
- Mikayla Schneider
- Posts: 6
- Joined: Mon Aug 30, 2021 5:35 pm
Re: high reserve actuators
I am experiencing a very similar issue and hoping that we can all find a solution so I am posting this here. This is my summary of this issue/the possible solutions:
If a simulation is unable to converge, only converges with high reserve actuators, or saturates the muscles (maximum activation an/or excitation), it seems that the muscles are not strong enough. To strengthen them,
1) Increase max isometric force of muscles. Cons: without changing optimal fiber length and tendon slack lengths, then may have higher passive force.
2) Use parameter optimization in Moco. Cons: takes a long time.
3) Simple strengthening step from the SitToStand Moco Example:
% Make problems easier to solve by strengthening the model and widening the
% active force-length curve.
for m = 0:model.getMuscles().getSize()-1
musc = model.updMuscles().get(m);
musc.setMinControl(0);
musc.set_ignore_activation_dynamics(false);
musc.set_ignore_tendon_compliance(false);
musc.set_max_isometric_force(2 * musc.get_max_isometric_force());
dgf = DeGrooteFregly2016Muscle.safeDownCast(musc);
dgf.set_active_force_width_scale(1.5);
dgf.set_tendon_compliance_dynamics_mode('implicit');
if strcmp(char(musc.getName()), 'soleus_l')
% Soleus has a very long tendon, so modeling its tendon as rigid
% causes the fiber to be unrealistically long and generate
% excessive passive fiber force.
dgf.set_ignore_passive_fiber_force(true);
end
end
4) ?? Are there any other processes that exist to increase the output force of the muscles?
If the muscle strength is still not enough:
1) Add reserve actuators --> Is it better to have a higher optimal force and lower control or vice versa?
2) ?? Are there any other ways to compensate for muscles' inability to produce the desired force?
If a simulation is unable to converge, only converges with high reserve actuators, or saturates the muscles (maximum activation an/or excitation), it seems that the muscles are not strong enough. To strengthen them,
1) Increase max isometric force of muscles. Cons: without changing optimal fiber length and tendon slack lengths, then may have higher passive force.
2) Use parameter optimization in Moco. Cons: takes a long time.
3) Simple strengthening step from the SitToStand Moco Example:
% Make problems easier to solve by strengthening the model and widening the
% active force-length curve.
for m = 0:model.getMuscles().getSize()-1
musc = model.updMuscles().get(m);
musc.setMinControl(0);
musc.set_ignore_activation_dynamics(false);
musc.set_ignore_tendon_compliance(false);
musc.set_max_isometric_force(2 * musc.get_max_isometric_force());
dgf = DeGrooteFregly2016Muscle.safeDownCast(musc);
dgf.set_active_force_width_scale(1.5);
dgf.set_tendon_compliance_dynamics_mode('implicit');
if strcmp(char(musc.getName()), 'soleus_l')
% Soleus has a very long tendon, so modeling its tendon as rigid
% causes the fiber to be unrealistically long and generate
% excessive passive fiber force.
dgf.set_ignore_passive_fiber_force(true);
end
end
4) ?? Are there any other processes that exist to increase the output force of the muscles?
If the muscle strength is still not enough:
1) Add reserve actuators --> Is it better to have a higher optimal force and lower control or vice versa?
2) ?? Are there any other ways to compensate for muscles' inability to produce the desired force?
- Nicholas Bianco
- Posts: 1003
- Joined: Thu Oct 04, 2012 8:09 pm
Re: high reserve actuators
Hi Mikayla, Christian,
If optimizing parameters, then you problem want to set the MocoCasADiSovler property parameters_require_initsystem.
You might consider ignoring muscle passive forces in addition to activation and tendon dynamics (see ModOpIgnorePassiveFiberForcesDGF). Then you would be free to strengthen the muscles as much as you want. After that, you should be able to increase the penalty on reserve controls until the muscles take over.
If none these work, then I would consider taking a closer look at your experimental data. You might need refilter the kinematics/GRFs. I would especially look at the center-of-pressure trajectories in the data. Even small deviations from the feet can lead to large dynamic inconsistencies.
Best,
Nick
If optimizing parameters, then you problem want to set the MocoCasADiSovler property parameters_require_initsystem.
You might consider ignoring muscle passive forces in addition to activation and tendon dynamics (see ModOpIgnorePassiveFiberForcesDGF). Then you would be free to strengthen the muscles as much as you want. After that, you should be able to increase the penalty on reserve controls until the muscles take over.
If none these work, then I would consider taking a closer look at your experimental data. You might need refilter the kinematics/GRFs. I would especially look at the center-of-pressure trajectories in the data. Even small deviations from the feet can lead to large dynamic inconsistencies.
Best,
Nick