Dear all:
The tutorial "Working with Static Optimization" on the OpenSim website has pointed out that, when muscles are not strong enough to produce required accelerations, static optimization will produce only invalid results (zero force) that indicate "here are wrong". (Figure below is a sample)
However, I checked the sample results in gait2392 using static optimization, indeed there are instances as above. But there are also some time frames where "the moment calculated from inverse dynamics is larger (but not very much) than the sum of the products of corresponding muscle forces from SO and moment arms from AnalyzeTool", which also means the muscles are not strong enough, but they have normal-like values.
What is confusing is, according to the OpenSim tutorial, if muscles are strong enough, the results will be normal, while if not, the invalid results will be (close to)zero force. Why there are still cases as shown in above 2nd paragraph ?
(Hereby we just do not expand to "reserve actuator")
Thanks & Regards,
Jack
Muscles are not strong enough, but still have non-zero confusing forces from SO
Muscles are not strong enough, but still have non-zero confusing forces from SO
- Attachments
-
- so_IK_gastroc_activation.jpg (37.06 KiB) Viewed 1006 times
- Dimitar Stanev
- Posts: 1096
- Joined: Fri Jan 31, 2014 5:14 am
Re: Muscles are not strong enough, but still have non-zero confusing forces from SO
Hi,
Best
This is not true. When a muscle produces zeros force it can be that the muscle is not required. It also can mean that the muscle is at a bad operational region (too short). If it is the second case you can check the muscle activations (for saturation). You may think that if you increase the maximum isometric force the problem will vanish, but note that it will also affect the passive muscle forces (e.g. some muscles may be very stiff), thus the antagonist muscle must develop additional force to move the joint. If the model is properly scaled and the muscles operate near their optimal length then your residuals should be small or zero. The residuals are there to ensure that the simulation can be performed and to identify modeling errors.static optimization will produce only invalid results (zero force) that indicate "here are wrong". (Figure below is a sample)
Best
Re: Muscles are not strong enough, but still have non-zero confusing forces from SO
Hi Dimitar,mitkof6 wrote:Hi,
When a muscle produces zeros force it can be that the muscle is not required. It also can mean that the muscle is at a bad operational region (too short). If it is the second case you can check the muscle activations (for saturation). You may think that if you increase the maximum isometric force the problem will vanish, but ..
thanks so much for your reply!
Indeed, the fact is, when I checked the output files, the activations of all the abnormal muscles are close to zero.
But if I do not choose the option "use force-length-velocity relation", the results are still the same (i.e. joint-related muscles have forces/activations that are close to zero, while the moment from inverse dynamics is normal, e.g. 60Nm), which means the length and velocity parameters do not affect much here, and anyway the activation values are very low.
Could you please help instruct the reason: why the activation values are so low here, which is independent of the F-l-v states ?
It would be very appreciative!
Thanks & Regards,
Jack
- Dimitar Stanev
- Posts: 1096
- Joined: Fri Jan 31, 2014 5:14 am
Re: Muscles are not strong enough, but still have non-zero confusing forces from SO
SO can approximate the muscle behavior linearly (f = fmax * a) or non-linearly (f = fmax * fl * fv * a). When you choose the check box you use the non-linear model which accounts for the length and velocity of the fibers
https://github.com/opensim-org/opensim- ... t.cpp#L102
https://github.com/opensim-org/opensim- ... e.cpp#L642
When you use the linear model the only criteria for choosing a muscle is its strength because you want to minimize a, as you may observe that some muscles may not be used at all.
Best
https://github.com/opensim-org/opensim- ... t.cpp#L102
https://github.com/opensim-org/opensim- ... e.cpp#L642
When you use the linear model the only criteria for choosing a muscle is its strength because you want to minimize a, as you may observe that some muscles may not be used at all.
Best
Re: Muscles are not strong enough, but still have non-zero confusing forces from SO
mitkof6 wrote:SO can approximate the muscle behavior linearly (f = fmax * a) or non-linearly (f = fmax * fl * fv * a). When you choose the check box you use the non-linear model which accounts for the length and velocity of the fibers
https://github.com/opensim-org/opensim- ... t.cpp#L102
https://github.com/opensim-org/opensim- ... e.cpp#L642
When you use the linear model the only criteria for choosing a muscle is its strength because you want to minimize a, as you may observe that some muscles may not be used at all.
Best
Dear Dimitar:
Thanks a lot for your reply, since according to your suggestions, I found the error output from static optimization in the command line window:
"Warning of OpenSim:
Optimizer failed: Ipopt: Maximum iterations exceeded (status -1)
OPTIMIZATION FAILED...
StaticOptimization.record: WARN- The optimizer could not find a solution at time = 2.5
The model appears too weak for static optimization.
Try increasing the strength and/or range of the following force(s):
glut_med1_r approaching upper bound of 1
glut_min1_r approaching upper bound of 1
glut_min2_r approaching upper bound of 1
bifemsh_r approaching upper bound of 1
sar_r approaching upper bound of 1
tfl_r approaching upper bound of 1
med_gas_r approaching upper bound of 1
lat_gas_r approaching upper bound of 1"