Static Optimization : physical weakness
Posted: Wed Jan 02, 2013 12:39 am
Hi everybody,
I am using the Vasavada’s neck model, and I am trying to perform Static Optimization (SO). Nevertheless, in most cases, the optimization does not succeed because the muscles are weak, and that’s why my SO takes always a very long time to converge (or sometimes never converge at all). Moreover, SO failed on each frame. This is an extract of the error message I showed:
-----------------------------------------------------------------------------------------------------------------------------------------------
time = 3 Performance =7.92019 Constraint violation = 7.3747
SimTK Exception thrown at InteriorPointOptimizer.cpp:261:
Optimizer failed: Ipopt: Infeasible problem detected (status 2)
OPTIMIZATION FAILED...
StaticOptimization.record: WARN- The optimizer could not find a solution at time = 3.1
The model appears too weak for static optimization.
Try increasing the strength and/or range of the following force(s):
long_cap_sklc4 approaching upper bound of 1
long_cap_sklc4_l approaching upper bound of 1
-----------------------------------------------------------------------------------------------------------------------------------------------
When I checked the Opensim Userguide on “Getting Started with Static Optimization”, I found this paragraph; I believe my problem matches with this description (because my ID results did not show large torques)
" 1. If the residual actuators are weak, increase the maximum control value of a residual, while lowering its maximum force. This allows the optimizer to generate a large force (if necessary) to match accelerations, but large control values are penalized more heavily. In static optimization, ideal actuator excitations are treated as activations in the cost function.
2. If the muscles are weak, append Coordinate Actuators to the model at the joints in the model. This will allow you to see how much "reserve" actuation is required at a given joint and then strengthen the muscles in your model accordingly.
3. If troubleshooting a weak model and optimization is slow each time, try reducing the parameter that defines the maximum number of iterations. "
In the light of this description, I believe I am involved by the points 1 and 2, even if I am not sure. I didn’t know how to formulate my question, and then I thought it may be better to number them:
1) Do the muscle are actuators? Because on the Opensim’s GUI, the navigator’s tree cannot extend “actuator”, but when I run a simulation (SO or FD for example) I can read on the message box: “ACTUATORS (78) actuator[0] = stern_mast actuator[1] = cleid_mast actuator[2] = cleid_occ etc.”
2) Does anybody know how can I append “Coordinate Actuator” on my model? Must I add this on my osim model or in my xml settings? I am sorry but I do not figure out this point.
3) I have two different motions for the same movement (neck’s extension-flexion): the first one has been obtained by several frames with fixed value of coordinates. I got the other one with the traditional method with markers and IK. With these two motions, I get two ID results clearly different. The first one gives me constant torques (I had always a warning on the messagebox : WARNING- Did not find column <name of the joint> in storage object.) whereas the second seems OK (I attached the results on this post). Does it means that my first motion must not be used on SO?
4) As I failed to perform a SO on Opensim with the Neck Model, I tried to do exactly the same thing with the Gait2354_Simbody tutorial’s model. But once more, it didn’t work. The only thing I did was to input the motion “subject01_walk1_ik”, exactly how I do with my neck model (with the motion appropriate of course) May I have miss a step in both cases?
I am sorry if my problem has been shown several times but I did not manage to fix it myself. Thank for people who could give me some advices!!
Happy new year,
Pierre
I am using the Vasavada’s neck model, and I am trying to perform Static Optimization (SO). Nevertheless, in most cases, the optimization does not succeed because the muscles are weak, and that’s why my SO takes always a very long time to converge (or sometimes never converge at all). Moreover, SO failed on each frame. This is an extract of the error message I showed:
-----------------------------------------------------------------------------------------------------------------------------------------------
time = 3 Performance =7.92019 Constraint violation = 7.3747
SimTK Exception thrown at InteriorPointOptimizer.cpp:261:
Optimizer failed: Ipopt: Infeasible problem detected (status 2)
OPTIMIZATION FAILED...
StaticOptimization.record: WARN- The optimizer could not find a solution at time = 3.1
The model appears too weak for static optimization.
Try increasing the strength and/or range of the following force(s):
long_cap_sklc4 approaching upper bound of 1
long_cap_sklc4_l approaching upper bound of 1
-----------------------------------------------------------------------------------------------------------------------------------------------
When I checked the Opensim Userguide on “Getting Started with Static Optimization”, I found this paragraph; I believe my problem matches with this description (because my ID results did not show large torques)
" 1. If the residual actuators are weak, increase the maximum control value of a residual, while lowering its maximum force. This allows the optimizer to generate a large force (if necessary) to match accelerations, but large control values are penalized more heavily. In static optimization, ideal actuator excitations are treated as activations in the cost function.
2. If the muscles are weak, append Coordinate Actuators to the model at the joints in the model. This will allow you to see how much "reserve" actuation is required at a given joint and then strengthen the muscles in your model accordingly.
3. If troubleshooting a weak model and optimization is slow each time, try reducing the parameter that defines the maximum number of iterations. "
In the light of this description, I believe I am involved by the points 1 and 2, even if I am not sure. I didn’t know how to formulate my question, and then I thought it may be better to number them:
1) Do the muscle are actuators? Because on the Opensim’s GUI, the navigator’s tree cannot extend “actuator”, but when I run a simulation (SO or FD for example) I can read on the message box: “ACTUATORS (78) actuator[0] = stern_mast actuator[1] = cleid_mast actuator[2] = cleid_occ etc.”
2) Does anybody know how can I append “Coordinate Actuator” on my model? Must I add this on my osim model or in my xml settings? I am sorry but I do not figure out this point.
3) I have two different motions for the same movement (neck’s extension-flexion): the first one has been obtained by several frames with fixed value of coordinates. I got the other one with the traditional method with markers and IK. With these two motions, I get two ID results clearly different. The first one gives me constant torques (I had always a warning on the messagebox : WARNING- Did not find column <name of the joint> in storage object.) whereas the second seems OK (I attached the results on this post). Does it means that my first motion must not be used on SO?
4) As I failed to perform a SO on Opensim with the Neck Model, I tried to do exactly the same thing with the Gait2354_Simbody tutorial’s model. But once more, it didn’t work. The only thing I did was to input the motion “subject01_walk1_ik”, exactly how I do with my neck model (with the motion appropriate of course) May I have miss a step in both cases?
I am sorry if my problem has been shown several times but I did not manage to fix it myself. Thank for people who could give me some advices!!
Happy new year,
Pierre