I have a few questions about static optimization failures, specifically as it relates to constraint violations.
This is a typical failure message we get when running SOs. On average, I would say only about 5-10% of our SOs fail for a specific posture.
In other subjects, this list of constraint violations may be much longer (e.g. 20+ coordinates with tiny constraint violations).OPTIMIZATION FAILED...
StaticOptimization.record: WARN- The optimizer could not find a solution at time = 0
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):
T1_r1R_X: constraint violation = 6.10875e-006
SternumRotZ: constraint violation = -5.3001e-006
SternumRotX: constraint violation = 2.44671e-006
SternumRotY: constraint violation = -1.3608e-006
elv_angle_r: constraint violation = -1.04284e-006
elv_angle_l: constraint violation = -1.38743e-006
time = 0 Performance =2.62315 Constraint violation = 9.00582e-006
My 2 main questions are:
1. What is the best solution to fix these "failures"? I have read other forum suggestions to use reserve actuators -- but would this require us to add actuators to every DOF in the model? That's a huge set of actuators. Additionally, why do you think for the majority of subjects we don't get these constraint violation failures? In cases where specific muscles are too weak, the message is clear and makes sense. It's a little tougher to make sense of these constraint violation values.
2. The model is very complex with a lot of coordinates/DOFs. Does it make sense to use the default optimizer threshold value and error tolerance in a highly complex model as it would be for something simpler? Is it safe to assume that as you add more DOFs and muscles that the "Constraint Violation" value reported at the timepoint will naturally be higher? The constraint violations we see in our failures is often very small, like the one above. We've seen previously that when we get really low constraint violations (even though SO fails), the forces and loading values that come out look pretty realistic. The higher the constraint violation, the further it seems to not be anywhere close to a valid solution?
Thanks in advance for any thoughts and guidance, and sorry for the length! Regards.
Brett