Hello everybody,
I am currently working on a simulation project of the tennis serve and I am trying to use the static optimization tool in order to get muscle forces in the lower limbs. However in each trial, I have this warning message and I would like to find a solution about it. I tried to increase the optimal force of the muscles as well as the max isometric fiber force but none of them seems to have an impact on this. I use a gait_2392 model with the Thelen2003 model for muscles.
Would you happen to have encountered the same trouble as I do ? Or has anyone a suggestion for me ?
thanks.
Here is an example of message I get:
time = 0.8 Performance =12788.5 Constraint violation = 2.17245e-005
SimTK Exception thrown at InteriorPointOptimizer.cpp:261:
Optimizer failed: Ipopt: Maximum iterations exceeded (status -1)
OPTIMIZATION FAILED...
StaticOptimization.record: WARN- The optimizer could not find a solution at time = 0.81
The model appears too weak for static optimization.
Try increasing the strength and/or range of the following force(s):
semimem_r approaching upper bound of 1
vas_med_r approaching upper bound of 1
semimem_l approaching upper bound of 1
sar_l approaching upper bound of 1
flex_dig_l approaching upper bound of 1
per_tert_l approaching upper bound of 1
ext_dig_l approaching upper bound of 1
static optimization failure because of weak muscles
- Frédéric Lamon
- Posts: 27
- Joined: Wed May 06, 2015 1:01 pm
- Brandon Brown
- Posts: 30
- Joined: Thu Jun 28, 2012 3:32 pm
Re: static optimization failure because of weak muscles
Hey,
See if there are coordinate limit forces in your model. I had the same issue you had and what helped me was totally deleting the coordinate limit forces. Besides that, make sure you've got at least an actuator for each degree of freedom (a reserve actuator). Try setting the reserve activations to positive and negative infinity and also the optimal forces to 1. That should get static optimization to work. After that you can adjust the maximum isometric force values to see if you can get the reserves closer to zero.
Brandon
See if there are coordinate limit forces in your model. I had the same issue you had and what helped me was totally deleting the coordinate limit forces. Besides that, make sure you've got at least an actuator for each degree of freedom (a reserve actuator). Try setting the reserve activations to positive and negative infinity and also the optimal forces to 1. That should get static optimization to work. After that you can adjust the maximum isometric force values to see if you can get the reserves closer to zero.
Brandon
- Frédéric Lamon
- Posts: 27
- Joined: Wed May 06, 2015 1:01 pm
Re: static optimization failure because of weak muscles
Hello Brandon,
thanks a lot for your answer. I cannot find the coordinate limit force you are talking about in my model. Could please show me how it looks like so that I know where to look ?
Otherwise for the actuators I have already all the control values to -inf or inf and optimal forces are mostly set to 1 except for a few where they are a lot bigger, but I don't think it should be a problem. Thanks again and I look forward to reading your reply.
Cheers,
Fred
thanks a lot for your answer. I cannot find the coordinate limit force you are talking about in my model. Could please show me how it looks like so that I know where to look ?
Otherwise for the actuators I have already all the control values to -inf or inf and optimal forces are mostly set to 1 except for a few where they are a lot bigger, but I don't think it should be a problem. Thanks again and I look forward to reading your reply.
Cheers,
Fred
- Brandon Brown
- Posts: 30
- Joined: Thu Jun 28, 2012 3:32 pm
Re: static optimization failure because of weak muscles
Hello Fred,
The coordinate limit forces should be in the same section of your model (in the coding which defines the model) as where the muscle forces are. You could use notepad ++. Just open the model file in notepad++, switch the language to xml to make it easier to see, and then search for the term CoordinateLimitForce.
If there are any coordinate limit forces in the model, you will find them there.
Brandon
The coordinate limit forces should be in the same section of your model (in the coding which defines the model) as where the muscle forces are. You could use notepad ++. Just open the model file in notepad++, switch the language to xml to make it easier to see, and then search for the term CoordinateLimitForce.
If there are any coordinate limit forces in the model, you will find them there.
Brandon
- Frédéric Lamon
- Posts: 27
- Joined: Wed May 06, 2015 1:01 pm
Re: static optimization failure because of weak muscles
Hello Brandon,
So I looked for them but I don't have any Coordinate limit forces in my model. I have all the residual actuators with the optimal force of 1 and the control values -inf or inf and I tried to increase the max isometric force by three times, however I still get the same error messages and I really have no clue about what to do. Because if I keep increasing the fiber force (I tried by 10 times) I still get the same error message and also a new one about the actuators, so I do not see how to go forward from here. Have you got any idea ?
here is the new error message I get as well :
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):
pelvis_tilt: constraint violation = -0.207162
pelvis_list: constraint violation = -0.23397
pelvis_rotation: constraint violation = 0.0281827
pelvis_tx: constraint violation = -0.000263692
pelvis_ty: constraint violation = 0.115089
pelvis_tz: constraint violation = -0.000486201
hip_flexion_r: constraint violation = 0.494505
hip_adduction_r: constraint violation = -0.000277909
hip_rotation_r: constraint violation = 0.0246666
knee_flexion_r: constraint violation = -0.00696985
knee_adduction_r: constraint violation = -0.0638235
knee_rotation_r: constraint violation = -2.30273
ankle_flexion_r: constraint violation = 4.97413
ankle_inversion_r: constraint violation = -6.69013
ankle_rotlong_r: constraint violation = 1.94637
mtp_angle_r: constraint violation = 13.1015
hip_flexion_l: constraint violation = -0.18012
hip_adduction_l: constraint violation = -0.0175926
hip_rotation_l: constraint violation = 0.174051
knee_flexion_l: constraint violation = -0.118035
knee_adduction_l: constraint violation = -0.178487
knee_rotation_l: constraint violation = -1.01066
ankle_flexion_l: constraint violation = -0.290475
ankle_inversion_l: constraint violation = -2.72794
ankle_rotlong_l: constraint violation = -1.19471
mtp_angle_l: constraint violation = -1.58191
lumbar_extension: constraint violation = 0.556515
lumbar_bending: constraint violation = -0.117269
lumbar_rotation: constraint violation = 0.0125433
Thanks.
Fred
So I looked for them but I don't have any Coordinate limit forces in my model. I have all the residual actuators with the optimal force of 1 and the control values -inf or inf and I tried to increase the max isometric force by three times, however I still get the same error messages and I really have no clue about what to do. Because if I keep increasing the fiber force (I tried by 10 times) I still get the same error message and also a new one about the actuators, so I do not see how to go forward from here. Have you got any idea ?
here is the new error message I get as well :
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):
pelvis_tilt: constraint violation = -0.207162
pelvis_list: constraint violation = -0.23397
pelvis_rotation: constraint violation = 0.0281827
pelvis_tx: constraint violation = -0.000263692
pelvis_ty: constraint violation = 0.115089
pelvis_tz: constraint violation = -0.000486201
hip_flexion_r: constraint violation = 0.494505
hip_adduction_r: constraint violation = -0.000277909
hip_rotation_r: constraint violation = 0.0246666
knee_flexion_r: constraint violation = -0.00696985
knee_adduction_r: constraint violation = -0.0638235
knee_rotation_r: constraint violation = -2.30273
ankle_flexion_r: constraint violation = 4.97413
ankle_inversion_r: constraint violation = -6.69013
ankle_rotlong_r: constraint violation = 1.94637
mtp_angle_r: constraint violation = 13.1015
hip_flexion_l: constraint violation = -0.18012
hip_adduction_l: constraint violation = -0.0175926
hip_rotation_l: constraint violation = 0.174051
knee_flexion_l: constraint violation = -0.118035
knee_adduction_l: constraint violation = -0.178487
knee_rotation_l: constraint violation = -1.01066
ankle_flexion_l: constraint violation = -0.290475
ankle_inversion_l: constraint violation = -2.72794
ankle_rotlong_l: constraint violation = -1.19471
mtp_angle_l: constraint violation = -1.58191
lumbar_extension: constraint violation = 0.556515
lumbar_bending: constraint violation = -0.117269
lumbar_rotation: constraint violation = 0.0125433
Thanks.
Fred
Re: static optimization failure because of weak muscles
Do you reserve or residual actuators on every open coordinate of the model? Even if one coordinate is unactuated the optimizer will be unable to find a solution.
- Frédéric Lamon
- Posts: 27
- Joined: Wed May 06, 2015 1:01 pm
Re: static optimization failure because of weak muscles
Hello James,
Yes I am quite sure that all my DOF are covered by residual actuators.
Yes I am quite sure that all my DOF are covered by residual actuators.
- Frédéric Lamon
- Posts: 27
- Joined: Wed May 06, 2015 1:01 pm
Re: static optimization failure because of weak muscles
Hello everybody,
So I would like to thank James for his help. We discovered that the point of application of the external forces (COP) really need to be precise in order for SO to work. I had made a mistake in changing the coordinates from my lab system to the Opensim environment and so the COP were not quite right.
In order to visualize if your forces are correctly positioned, I would recommend the use of associating a motion data to your loaded motion and load the ..._St_kinetics.mot file (where the external forces are registered).
I hope it will be able to help.
Cheers
So I would like to thank James for his help. We discovered that the point of application of the external forces (COP) really need to be precise in order for SO to work. I had made a mistake in changing the coordinates from my lab system to the Opensim environment and so the COP were not quite right.
In order to visualize if your forces are correctly positioned, I would recommend the use of associating a motion data to your loaded motion and load the ..._St_kinetics.mot file (where the external forces are registered).
I hope it will be able to help.
Cheers
- Christine Dailey
- Posts: 17
- Joined: Fri Feb 09, 2018 6:55 am
Re: static optimization failure because of weak muscles
I am having the same problems. I increased my optimal force to 1000 and still get the errors.
Within my model, there are no muscles that control lumbar flexion/extension and so all the other lower limb muscles are trying to control trunk motion, without much success. Instead of adding extra muscles that cross the lumbar joint, I am trying to add a torque actuator at the lumbar joint. As well as reserve and residual actuators to the model. Therefore,
I made one point actuator and a torque for the pelvis and then reserve actuators for hip, knee, and ankle; my model only has the right leg and pelvis This didnt work so I added reserve actuators for the mtp and the subtalar.
I picked my pelvis coordinates from my model. I wanted it (well I think I want it) to be placed at the top of the middle posterior pelvic area (where the lumbar would contact if I had one.) at (0.055 0.95 -0.51) relative to ground. This didnt work so I also tried doing it relative to pelvis at ( -0.14 0.08 -0.009) . However this made the program crash twice.
Am I missing something? Where should it be placed in?
Within my model, there are no muscles that control lumbar flexion/extension and so all the other lower limb muscles are trying to control trunk motion, without much success. Instead of adding extra muscles that cross the lumbar joint, I am trying to add a torque actuator at the lumbar joint. As well as reserve and residual actuators to the model. Therefore,
I made one point actuator and a torque for the pelvis and then reserve actuators for hip, knee, and ankle; my model only has the right leg and pelvis This didnt work so I added reserve actuators for the mtp and the subtalar.
I picked my pelvis coordinates from my model. I wanted it (well I think I want it) to be placed at the top of the middle posterior pelvic area (where the lumbar would contact if I had one.) at (0.055 0.95 -0.51) relative to ground. This didnt work so I also tried doing it relative to pelvis at ( -0.14 0.08 -0.009) . However this made the program crash twice.
Am I missing something? Where should it be placed in?
- Attachments
-
- gait2392__custom33_17_RRA_Actuators.xml
- (7.82 KiB) Downloaded 128 times
-
- gait2392__custom33_17.osim
- (291.82 KiB) Downloaded 116 times