StaticOptimization: ERROR- overconstrained system

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Mojtaba Safari
Posts: 12
Joined: Wed Oct 10, 2018 11:11 am

StaticOptimization: ERROR- overconstrained system

Post by Mojtaba Safari » Sat Dec 26, 2020 3:24 pm

Hello. I have used Gait2392_Simbody model and have only added a balance board which rotates in the direction of Z axes The balance board has been fixed with calcaneus using the ConstraintSet method. My GRF file is the sum of load forces on both foot not one foot at a time. For this reason my GRF file is applied to the balance board so that the force is divided between the two feet. In order to have less unknown force, I have omitted all muscles except glut_med1_r but I still receive the following error:

StaticOptimization: ERROR- overconstrained system -- need at least as many
forces as there are degrees of freedom.

I want to know where the problem lies. Isn't OpenSim capable of distributing the force loaded between the two feet? Or the problem is somewhere else?

Thanks for your guidance.

Tags:

User avatar
Thomas Uchida
Posts: 1793
Joined: Wed May 16, 2012 11:40 am

Re: StaticOptimization: ERROR- overconstrained system

Post by Thomas Uchida » Sun Dec 27, 2020 6:51 am

Perhaps you are missing one or more reserve actuators? In general, there should be one added to every degree of freedom in your model ("need at least as many forces as there are degrees of freedom").

User avatar
Mojtaba Safari
Posts: 12
Joined: Wed Oct 10, 2018 11:11 am

Re: StaticOptimization: ERROR- overconstrained system

Post by Mojtaba Safari » Sun Jan 03, 2021 1:21 am

I have added one missing reserve actuator and StaticOptimization runs but I still have the following error:

Executing the analyses from 0.5 to 0.525...
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.5

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 = 10.8166
pelvis_list: constraint violation = -0.711392
pelvis_rotation: constraint violation = -3.86423
pelvis_tx: constraint violation = 0.124545
pelvis_ty: constraint violation = -0.0513628
pelvis_tz: constraint violation = -0.556194
hip_flexion_r: constraint violation = 1.00246
hip_adduction_r: constraint violation = -1.08037
hip_rotation_r: constraint violation = 4.32344
knee_angle_r: constraint violation = -11.3793
ankle_angle_r: constraint violation = -1.09145
subtalar_angle_r: constraint violation = -0.339304
hip_flexion_l: constraint violation = 0.0194512
hip_adduction_l: constraint violation = 0.424066
hip_rotation_l: constraint violation = -2.42981
knee_angle_l: constraint violation = -11.1692
ankle_angle_l: constraint violation = -0.329806
subtalar_angle_l: constraint violation = -0.431749
lumbar_extension: constraint violation = -0.000419061
lumbar_rotation: constraint violation = 1.47346e-006


time = 0.5 Performance =4.50735 Constraint violation = 20.3851
Bounds for glut_med1_r: 0 to 1
Bounds for glut_med2_r: 0 to 1
Bounds for glut_med3_r: 0 to 1
Bounds for glut_min1_r: 0 to 1
Bounds for glut_min2_r: 0 to 1
Bounds for glut_min3_r: 0 to 1
Bounds for semimem_r: 0 to 1
Bounds for semiten_r: 0 to 1
Bounds for bifemlh_r: 0 to 1
Bounds for bifemsh_r: 0 to 1
Bounds for sar_r: 0 to 1
Bounds for add_long_r: 0 to 1
Bounds for add_brev_r: 0 to 1
Bounds for add_mag1_r: 0 to 1
Bounds for add_mag2_r: 0 to 1
Bounds for add_mag3_r: 0 to 1
Bounds for tfl_r: 0 to 1
Bounds for pect_r: 0 to 1
Bounds for grac_r: 0 to 1
Bounds for glut_max1_r: 0 to 1
Bounds for glut_max2_r: 0 to 1
Bounds for glut_max3_r: 0 to 1
Bounds for iliacus_r: 0 to 1
Bounds for psoas_r: 0 to 1
Bounds for quad_fem_r: 0 to 1
Bounds for gem_r: 0 to 1
Bounds for peri_r: 0 to 1
Bounds for rect_fem_r: 0 to 1
Bounds for vas_med_r: 0 to 1
Bounds for vas_int_r: 0 to 1
Bounds for vas_lat_r: 0 to 1
Bounds for med_gas_r: 0 to 1
Bounds for lat_gas_r: 0 to 1
Bounds for soleus_r: 0 to 1
Bounds for tib_post_r: 0 to 1
Bounds for flex_dig_r: 0 to 1
Bounds for flex_hal_r: 0 to 1
Bounds for tib_ant_r: 0 to 1
Bounds for per_brev_r: 0 to 1
Bounds for per_long_r: 0 to 1
Bounds for per_tert_r: 0 to 1
Bounds for ext_dig_r: 0 to 1
Bounds for ext_hal_r: 0 to 1
Bounds for glut_med1_l: 0 to 1
Bounds for glut_med2_l: 0 to 1
Bounds for glut_med3_l: 0 to 1
Bounds for glut_min1_l: 0 to 1
Bounds for glut_min2_l: 0 to 1
Bounds for glut_min3_l: 0 to 1
Bounds for semimem_l: 0 to 1
Bounds for semiten_l: 0 to 1
Bounds for bifemlh_l: 0 to 1
Bounds for bifemsh_l: 0 to 1
Bounds for sar_l: 0 to 1
Bounds for add_long_l: 0 to 1
Bounds for add_brev_l: 0 to 1
Bounds for add_mag1_l: 0 to 1
Bounds for add_mag2_l: 0 to 1
Bounds for add_mag3_l: 0 to 1
Bounds for tfl_l: 0 to 1
Bounds for pect_l: 0 to 1
Bounds for grac_l: 0 to 1
Bounds for glut_max1_l: 0 to 1
Bounds for glut_max2_l: 0 to 1
Bounds for glut_max3_l: 0 to 1
Bounds for iliacus_l: 0 to 1
Bounds for psoas_l: 0 to 1
Bounds for quad_fem_l: 0 to 1
Bounds for gem_l: 0 to 1
Bounds for peri_l: 0 to 1
Bounds for rect_fem_l: 0 to 1
Bounds for vas_med_l: 0 to 1
Bounds for vas_int_l: 0 to 1
Bounds for vas_lat_l: 0 to 1
Bounds for med_gas_l: 0 to 1
Bounds for lat_gas_l: 0 to 1
Bounds for soleus_l: 0 to 1
Bounds for tib_post_l: 0 to 1
Bounds for flex_dig_l: 0 to 1
Bounds for flex_hal_l: 0 to 1
Bounds for tib_ant_l: 0 to 1
Bounds for per_brev_l: 0 to 1
Bounds for per_long_l: 0 to 1
Bounds for per_tert_l: 0 to 1
Bounds for ext_dig_l: 0 to 1
Bounds for ext_hal_l: 0 to 1
Bounds for ercspn_r: 0 to 1
Bounds for ercspn_l: 0 to 1
Bounds for intobl_r: 0 to 1
Bounds for intobl_l: 0 to 1
Bounds for extobl_r: 0 to 1
Bounds for extobl_l: 0 to 1
Bounds for FX: -1.#INF to 1.#INF
Bounds for FY: -1.#INF to 1.#INF
Bounds for FZ: -1.#INF to 1.#INF
Bounds for MX: -1.#INF to 1.#INF
Bounds for MY: -1.#INF to 1.#INF
Bounds for MZ: -1.#INF to 1.#INF
Bounds for bboard_rz: -1.#INF to 1.#INF
Bounds for hip_flexion_r: -1.#INF to 1.#INF
Bounds for hip_adduction_r: -1.#INF to 1.#INF
Bounds for hip_rotation_r: -1.#INF to 1.#INF
Bounds for knee_angle_r: -1.#INF to 1.#INF
Bounds for ankle_angle_r: -1.#INF to 1.#INF
Bounds for subtalar_angle_r: -1.#INF to 1.#INF
Bounds for mtp_angle_r: -1.#INF to 1.#INF
Bounds for hip_flexion_l: -1.#INF to 1.#INF
Bounds for hip_adduction_l: -1.#INF to 1.#INF
Bounds for hip_rotation_l: -1.#INF to 1.#INF
Bounds for knee_angle_l: -1.#INF to 1.#INF
Bounds for ankle_angle_l: -1.#INF to 1.#INF
Bounds for subtalar_angle_l: -1.#INF to 1.#INF
Bounds for mtp_angle_l: -1.#INF to 1.#INF
Bounds for lumbar_extension: -1.#INF to 1.#INF
Bounds for lumbar_bending: -1.#INF to 1.#INF
Bounds for lumbar_rotation: -1.#INF to 1.#INF
SimTK Exception thrown at InteriorPointOptimizer.cpp:261:
Optimizer failed: Ipopt: Maximum iterations exceeded (status -1)
OPTIMIZATION FAILED...

The Troubleshooting for Static Optimization reports the following:
If a constraint violation is reported, this could be a sign that the optimizer couldn't solve for muscle forces while enforcing the inverse dynamics solution.

This likely means that there is noise in the data or there is a sudden jump in accelerations in one frame.

I have collected motion data with 120 hertz sampling rate, can this be the reason for getting a high constraint violation? or is constraint violation is the result of fixing calcaneus with balance board?

User avatar
rui zhuang
Posts: 2
Joined: Wed Oct 20, 2021 7:51 am

Re: StaticOptimization: ERROR- overconstrained system

Post by rui zhuang » Sun Nov 28, 2021 5:54 pm

Hi,I have the same problem,do you have a solution for this?
Could you tell me if you have?
Thank you so much! :D

User avatar
rui zhuang
Posts: 2
Joined: Wed Oct 20, 2021 7:51 am

Re: StaticOptimization: ERROR- overconstrained system

Post by rui zhuang » Sun Nov 28, 2021 7:34 pm

I just solved the problem by increasing the optimal_force of PointActuator and TorqueActuator :D

POST REPLY