Muscles are not strong enough, but still have non-zero confusing forces from SO

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Jack Zhao
Posts: 94
Joined: Thu Jul 24, 2014 7:15 am

Muscles are not strong enough, but still have non-zero confusing forces from SO

Post by Jack Zhao » Sun Dec 10, 2017 2:37 am

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
Attachments
so_IK_gastroc_activation.jpg
so_IK_gastroc_activation.jpg (37.06 KiB) Viewed 996 times

User avatar
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

Post by Dimitar Stanev » Mon Dec 11, 2017 12:10 am

Hi,
static optimization will produce only invalid results (zero force) that indicate "here are wrong". (Figure below is a sample)
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.

Best

User avatar
Jack Zhao
Posts: 94
Joined: Thu Jul 24, 2014 7:15 am

Re: Muscles are not strong enough, but still have non-zero confusing forces from SO

Post by Jack Zhao » Mon Dec 11, 2017 6:04 am

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 ..
Hi Dimitar,
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

User avatar
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

Post by Dimitar Stanev » Tue Dec 12, 2017 12:54 am

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

User avatar
Jack Zhao
Posts: 94
Joined: Thu Jul 24, 2014 7:15 am

Re: Muscles are not strong enough, but still have non-zero confusing forces from SO

Post by Jack Zhao » Tue Dec 12, 2017 8:35 pm

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"

POST REPLY