The model appears too weak for static optimization

Provide a musculoskeletal model of the full thoracolumbar spine and rib cage for researchers to use in their investigations of spine and thorax kinematics and dynamics.
User avatar
Alexander Aasmann
Posts: 8
Joined: Mon Nov 01, 2021 9:18 am

The model appears too weak for static optimization

Post by Alexander Aasmann » Thu Apr 21, 2022 12:33 pm

Hello,

I have been trying to use the model to compute the muscle activation of certain movement. i was able to reproduce it with the IK tool, but now when computing the static optimization. I keep receiving the warning, that the model seems weak for SO. I have used other models before and it's the first time i see it. Is it normal when using your Model? SO tool also seem to be taking longer than usual. I assume is because of the high number of muscle cables.
Any ideas how i could speed it up?

thanks a lot!
my best regards,

Alex

User avatar
Jacob J. Banks
Posts: 97
Joined: Tue Jul 15, 2014 5:17 am

Re: The model appears too weak for static optimization

Post by Jacob J. Banks » Thu Apr 21, 2022 12:44 pm

What sort of movement are you modeling? Which muscles are maxing?

Unfortunately, in our experience, it is not uncommon for the legs to limit some lifting movements. The leg MTAs are just based off from another OpenSim model (can't recall which), that has primarily been used for gait (so only previously tested during low force movements). As a result, and to just get 'estimations', we have resorted to increasing the max activation of muscles to 5 at times and/or increasing the leg strength by a factor of 2-3 (we have MATLAB API code to do both really fast/efficiently). Another route is to just add torque actuators to leg joints.

Hope this helps, otherwise feel free to send along the IK results and I'll see what I can gather.
Jake Banks

User avatar
Jacob J. Banks
Posts: 97
Joined: Tue Jul 15, 2014 5:17 am

Re: The model appears too weak for static optimization

Post by Jacob J. Banks » Thu Apr 21, 2022 12:48 pm

Oh, suppose I neglected to answer you time/speed question
No, there is no real way to speed up, unless you have faster computer or write some MATLAB parfor code to try to distribute the processing. With >600 MTAs and a lot of DoF, it just takes a long time. In our experience, on a decent PC it takes ~1 hour for ~200 frames of data to solve SOpt.
Jake Banks

User avatar
Alexander Aasmann
Posts: 8
Joined: Mon Nov 01, 2021 9:18 am

Re: The model appears too weak for static optimization

Post by Alexander Aasmann » Thu Apr 21, 2022 1:36 pm

Hi,

thanks for the fast reply,
I'm analysing the movement of a person balancing on a balance board.
There is quite a long list of muscles maxing out. We are using a different model to analyse leg mucles so that part should be irrelevant, i guess.
I have over 12.000 frames, so it's going to take ages :shock:

my best regards,

Alex Aasmann

Ps_L5_TP_r approaching upper bound of 1
Ps_L5_TP_l approaching upper bound of 1
IL_R6_r approaching upper bound of 1
IL_R6_l approaching upper bound of 1
IL_R8_l approaching upper bound of 1
IL_R10_l approaching upper bound of 1
LTpT_T6_r approaching upper bound of 1
LTpT_R6_r approaching upper bound of 1
QL_post_I_3-L1_l approaching upper bound of 1
QL_mid_L3-12_1_r approaching upper bound of 1
QL_ant_I_2-T12_r approaching upper bound of 1
QL_ant_I_3-T12_r approaching upper bound of 1
QL_ant_I_2-T12_l approaching upper bound of 1
MF_m5t_1_r approaching upper bound of 1
MF_m2_laminar_r approaching upper bound of 1
MF_m1s_l approaching upper bound of 1
MF_m1t_3_l approaching upper bound of 1
MF_m5t_1_l approaching upper bound of 1
MF_m1_laminar_l approaching upper bound of 1
E0_R6_r approaching upper bound of 1
E0_R5_l approaching upper bound of 1
IO1_r approaching upper bound of 1
IO2_r approaching upper bound of 1
IO3_r approaching upper bound of 1
IO1_l approaching upper bound of 1
LD_L2_r approaching upper bound of 1
LD_L3_r approaching upper bound of 1
LD_L4_r approaching upper bound of 1
LD_Il_r approaching upper bound of 1
LD_L3_l approaching upper bound of 1
LD_L4_l approaching upper bound of 1
stern_mast approaching upper bound of 1
cleid_mast approaching upper bound of 1
cleid_occ approaching upper bound of 1
scalenus_med approaching upper bound of 1
scalenus_post approaching upper bound of 1
long_col_c1thx approaching upper bound of 1
long_col_c5thx approaching upper bound of 1
trap_cl approaching upper bound of 1
trap_acr_T1 approaching upper bound of 1
deepmult-T1-C6 approaching upper bound of 1
multifidus_L4_T12 approaching upper bound of 1
multifidus_L3_T11 approaching upper bound of 1
multifidus_T12_T10 approaching upper bound of 1
multifidus_L2_T10 approaching upper bound of 1
multifidus_T11_T9 approaching upper bound of 1
multifidus_L1_T9 approaching upper bound of 1
multifidus_T12_T8 approaching upper bound of 1
multifidus_T9_T7 approaching upper bound of 1
multifidus_T11_T7 approaching upper bound of 1
multifidus_T8_T6 approaching upper bound of 1
multifidus_T10_T6 approaching upper bound of 1
stern_mast_L approaching upper bound of 1
cleid_mast_L approaching upper bound of 1
cleid_occ_L approaching upper bound of 1
scalenus_ant_L approaching upper bound of 1
scalenus_med_L approaching upper bound of 1
long_col_c1thx_L approaching upper bound of 1
long_col_c5thx_L approaching upper bound of 1
trap_acr_T1_L approaching upper bound of 1
deepmult-T2-T1_L approaching upper bound of 1
multifidus_L4_T12_L approaching upper bound of 1
multifidus_L3_T11_L approaching upper bound of 1
multifidus_L2_T10_L approaching upper bound of 1
multifidus_T8_T6_L approaching upper bound of 1
multifidus_T10_T6_L approaching upper bound of 1
multifidus_T5_T3_L approaching upper bound of 1
multifidus_T4_T2_L approaching upper bound of 1
multifidus_T3_T1_L approaching upper bound of 1
multifidus_T5_T1_L approaching upper bound of 1
SerrAnt1_1_R approaching upper bound of 1
SerrAnt2_1_R approaching upper bound of 1
SerrAnt2_2_R approaching upper bound of 1
SerrAnt1_1_L approaching upper bound of 1
TR5_l approaching upper bound of 1
ExtIC_IS1_3_L approaching upper bound of 1
ExtIC_IS1_5_L approaching upper bound of 1
ExtIC_IS2_1_L approaching upper bound of 1
ExtIC_IS5_7_R approaching upper bound of 1
ExtIC_IS5_5_L approaching upper bound of 1
ExtIC_IS5_7_L approaching upper bound of 1
ExtIC_IS6_1_R approaching upper bound of 1
ExtIC_IS6_3_R approaching upper bound of 1
ExtIC_IS6_5_R approaching upper bound of 1
ExtIC_IS6_7_R approaching upper bound of 1
ExtIC_IS6_1_L approaching upper bound of 1
ExtIC_IS6_3_L approaching upper bound of 1
ExtIC_IS6_5_L approaching upper bound of 1
ExtIC_IS6_7_L approaching upper bound of 1
ExtIC_IS7_5_R approaching upper bound of 1
ExtIC_IS7_7_R approaching upper bound of 1
ExtIC_IS7_1_L approaching upper bound of 1
ExtIC_IS7_3_L approaching upper bound of 1
ExtIC_IS8_3_R approaching upper bound of 1
ExtIC_IS8_5_R approaching upper bound of 1
ExtIC_IS8_7_R approaching upper bound of 1
ExtIC_IS8_1_L approaching upper bound of 1
ExtIC_IS8_3_L approaching upper bound of 1
ExtIC_IS8_5_L approaching upper bound of 1
ExtIC_IS9_3_L approaching upper bound of 1
ExtIC_IS9_5_L approaching upper bound of 1
ExtIC_IS10_1_R approaching upper bound of 1
ExtIC_IS10_3_L approaching upper bound of 1
ExtIC_IS11_1_R approaching upper bound of 1
ExtIC_IS11_3_R approaching upper bound of 1
ExtIC_IS11_1_L approaching upper bound of 1
ExtIC_IS11_3_L approaching upper bound of 1
IntIC_IS1_1_L approaching upper bound of 1
IntIC_IS1_3_L approaching upper bound of 1
IntIC_IS1_5_L approaching upper bound of 1
IntIC_IS2_3_L approaching upper bound of 1
IntIC_IS2_5_L approaching upper bound of 1
IntIC_IS2_7_L approaching upper bound of 1
IntIC_IS3_3_L approaching upper bound of 1
IntIC_IS3_5_L approaching upper bound of 1
IntIC_IS3_7_L approaching upper bound of 1
IntIC_IS4_1_R approaching upper bound of 1
IntIC_IS4_3_L approaching upper bound of 1
IntIC_IS4_5_L approaching upper bound of 1
IntIC_IS5_1_R approaching upper bound of 1
IntIC_IS5_1_L approaching upper bound of 1
IntIC_IS6_5_R approaching upper bound of 1
IntIC_IS9_3_R approaching upper bound of 1
IntIC_IS9_3_L approaching upper bound of 1
IntIC_IS10_3_R approaching upper bound of 1
rib6Lact approaching upper bound of 1

User avatar
Jacob J. Banks
Posts: 97
Joined: Tue Jul 15, 2014 5:17 am

Re: The model appears too weak for static optimization

Post by Jacob J. Banks » Thu Apr 21, 2022 1:40 pm

No problem.
Are you not filtering the kinematics prior (at least a 6Hz cutoff)? If not, that could be it (IK needs smoothed otherwise too much acceleration), because some of those muscles shouldn't be maxing out.
Otherwise, are your GRFs in the wrong units? Do you not have GRFs?
Also, add reserve actuators at all joints (see previous posts on how to do that/a MATLAB script to make actuator file).
Jake Banks

User avatar
Alexander Aasmann
Posts: 8
Joined: Mon Nov 01, 2021 9:18 am

Re: The model appears too weak for static optimization

Post by Alexander Aasmann » Fri Apr 22, 2022 11:44 am

I forgot to filter it by 6Hz on the few times i ran it.
I do have a GRF.
i have been having another problem now, i made some changes to the model, in which i put the model on a balacing board. I keep receiving this error "The model appears unsuitable for static optimization.
Try appending the model with additional force(s) or locking joint(s) to reduce the following acceleration constraint violation(s):"
i know it isn't a problem from your model, but if you happen to have any idea of how could solve this, would be very helpful

Thanks a lot,

Alex Aasmann

User avatar
Jacob J. Banks
Posts: 97
Joined: Tue Jul 15, 2014 5:17 am

Re: The model appears too weak for static optimization

Post by Jacob J. Banks » Fri Apr 22, 2022 11:49 am

I'd have to see the 'new model', but my initial guess is that you added a balancing board with a mass of 0. OpenSim does not like bodies with 0 masses (or moment of inertias with 0 masses), as hard to have in the denominator.
If this is not the case, you could try solving for a few 'static' frames. Take frame and repeat it >10 times (OpenSim doesn't like 1 line in a .mot file), save as it's own/new .mot file (and do the same to the corresponding GRF file). Try running that. See if this works.
Jake Banks

User avatar
Alexander Aasmann
Posts: 8
Joined: Mon Nov 01, 2021 9:18 am

Re: The model appears too weak for static optimization

Post by Alexander Aasmann » Mon Apr 25, 2022 7:44 am

it's not very different to the original model , it's just on top of a cylinder with 6 DoF. I just set a parent child depency between the board(parent) and the pelvis(child) and the same was done between the ground and the balance board.
i have the GRF acting on both feet.
The board does have a mass,inertia and Center of mass value.
I don't fully understand your recomendation, can yoou elaborate on that?
if you have any new ideas of how i could solve it, let me know

this the error i get:
The model appears unsuitable for static optimization.
Try appending the model with additional force(s) or locking joint(s) to reduce the following acceleration constraint violation(s):
board_pitch_z: constraint violation = 8.01078e-06

thanks a lot!
Alex Aasmann

User avatar
Jacob J. Banks
Posts: 97
Joined: Tue Jul 15, 2014 5:17 am

Re: The model appears too weak for static optimization

Post by Jacob J. Banks » Mon Apr 25, 2022 7:50 am

Do you have reserve actuators on the board DoFs? I think you may need some and that is your constraint violation. Otherwise OpenSim can't justify having the board in a given position.

I was recommending you take a single time InvKin and GRF frame (say time 0 /frame 1) and repeat that frame (manually editing it in Excel) for 10 frames. Cut/crop all other data (change headers so that the correct number of rows exist in both GRF and IK file). Then run that in SOpt. This would be a Static frame/trial, so you won't get any 'acceleration' violation violations.

In addition, I always suggest running InvDyn on things. Look at where there may be some unexpectedly high moments (particularly with the board DoFs mentioned earlier).

Otherwise, feel free to zip/attach the model, IK, Ext Force, and GRF files. I'll see what I can find out.
Jake Banks

User avatar
Alexander Aasmann
Posts: 8
Joined: Mon Nov 01, 2021 9:18 am

Re: The model appears too weak for static optimization

Post by Alexander Aasmann » Mon Apr 25, 2022 5:16 pm

Even when i added the actuaters, i still keep receiving the same error.
since I'm just a Bachelor student, i had to ask for permission to upload anything.
I'm attaching the new model and part of the IK movement, any input would be great.

thank you.

Alex Aasmann
Attachments
7s_balance.zip
(712.37 KiB) Downloaded 67 times
test2.zip
(139.94 KiB) Downloaded 46 times

POST REPLY