Huge MZ value after running RRA - IPOPT and CFSQP optimizers

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Laura Martin
Posts: 4
Joined: Wed Jan 24, 2018 8:21 am

Huge MZ value after running RRA - IPOPT and CFSQP optimizers

Post by Laura Martin » Tue Oct 23, 2018 9:58 am

Hello,

I am using the model on https://simtk.org/projects/runningsim and I am checking what were the differences between IPOPT and CFSQP optimizers when performing RRA because I am getting a really big value for MZ after performing the RRA on a sprint start. My results in the first passage using IPOPT were the following:

Code: Select all

*      Summary of Mass Adjustments to Reduce Residuals     *
************************************************************
* Body adjusted: torso
* Mass Center (COM) adjustment: dx =-0.1, dz =0.1
* New COM location: ~[0.07,0.32,-0.1]
************************************************************
* Recommended mass adjustments:                             
*  Total mass change: 4.53431
*  ground: orig mass = 0, new mass = 0
*  pelvis: orig mass = 9.82401, new mass = 10.5345
*  femur_r: orig mass = 7.75894, new mass = 8.32005
*  tibia_r: orig mass = 3.09268, new mass = 3.31634
*  talus_r: orig mass = 0.0834169, new mass = 0.0894494
*  calcn_r: orig mass = 1.04271, new mass = 1.11812
*  toes_r: orig mass = 0.180681, new mass = 0.193747
*  femur_l: orig mass = 7.75894, new mass = 8.32005
*  tibia_l: orig mass = 3.09268, new mass = 3.31634
*  talus_l: orig mass = 0.0834169, new mass = 0.0894494
*  calcn_l: orig mass = 1.04271, new mass = 1.11812
*  toes_l: orig mass = 0.180681, new mass = 0.193747
*  torso: orig mass = 22.3779, new mass = 23.9962
*  humerus_r: orig mass = 1.69545, new mass = 1.81806
*  ulna_r: orig mass = 0.506758, new mass = 0.543405
*  radius_r: orig mass = 0.506758, new mass = 0.543405
*  hand_r: orig mass = 0.381632, new mass = 0.409231
*  humerus_l: orig mass = 1.69545, new mass = 1.81806
*  ulna_l: orig mass = 0.506758, new mass = 0.543405
*  radius_l: orig mass = 0.506758, new mass = 0.543405
*  hand_l: orig mass = 0.381632, new mass = 0.409231

*                   Final Average Residuals                *
************************************************************
* After torso COM and Kinematics adjustments:
*  FX=0.10638 FY=-6.95764 FZ=5.33278
*  MX=-16.1113 MY=-19.1823 MZ=-126.022 
However, when I introduce the recommended mass adjustments on the adjusted model, save it and run the RRA tool on the new model, I am getting a greater total mass change and larger residuals in every iteration.

I was really impressed by the huge value of MZ, especially compared to MX and MY. Therefore, before getting the right adjusted model, I decided to see what the difference between IPOPT and CFSQP optimizers was since in the README_RunningSimulationInfo.pdf it says that they had to utilize the CFSQP optimizer instead of IPOPT to get a solution with CMC.

In the project https://simtk.org/projects/nmbl_running, they use the same model and the CFSQP optimizer. Their result of Run_20002_cycle1 after running RRA is:

Code: Select all

CMCTool.adjustCOMToReduceResiduals:
torso weight = 254.943
dx=-0.040762, dz=-0.0104535

dmass = 0.208157

Recommended mass adjustments:
ground:  orig mass = 0, new mass = 0
pelvis:  orig mass = 11.4128, new mass = 11.4454
femur_r:  orig mass = 9.01374, new mass = 9.0395
tibia_r:  orig mass = 3.59284, new mass = 3.60311
talus_r:  orig mass = 0.0969073, new mass = 0.0971843
calcn_r:  orig mass = 1.21134, new mass = 1.2148
toes_r:  orig mass = 0.209901, new mass = 0.210501
femur_l:  orig mass = 9.01374, new mass = 9.0395
tibia_l:  orig mass = 3.59284, new mass = 3.60311
talus_l:  orig mass = 0.0969073, new mass = 0.0971843
calcn_l:  orig mass = 1.21134, new mass = 1.2148
toes_l:  orig mass = 0.209901, new mass = 0.210501
torso:  orig mass = 25.9969, new mass = 26.0712
humerus_r:  orig mass = 1.96964, new mass = 1.97527
ulna_r:  orig mass = 0.588712, new mass = 0.590394
radius_r:  orig mass = 0.588712, new mass = 0.590394
hand_r:  orig mass = 0.443351, new mass = 0.444618
humerus_l:  orig mass = 1.96964, new mass = 1.97527
ulna_l:  orig mass = 0.588712, new mass = 0.590394
radius_l:  orig mass = 0.588712, new mass = 0.590394
hand_l:  orig mass = 0.443351, new mass = 0.444618

Average residuals:
FX=0.0403019 FY=0.510056 FZ=-0.327813
MX=-3.96862 MY=-1.15364 MZ=4.24877
If I change some commands (e.g. replacing <Force> by <PointActuator>, but keeping the same values in Actuators, Control Constraints, and Tasks files) in the setup files in order to be able to use the IPOPT, I get the following results:

Code: Select all

*      Summary of Mass Adjustments to Reduce Residuals     *
************************************************************
* Body adjusted: torso
* Mass Center (COM) adjustment: dx =0.040623, dz =0.0103843
* New COM location: ~[-0.0711287,0.325394,-0.0103843]
************************************************************
* Recommended mass adjustments:                             
*  Total mass change: -0.229713
*  ground: orig mass = 0, new mass = 0
*  pelvis: orig mass = 11.4128, new mass = 11.3768
*  femur_r: orig mass = 9.01374, new mass = 8.98531
*  tibia_r: orig mass = 3.59284, new mass = 3.58151
*  talus_r: orig mass = 0.0969073, new mass = 0.0966017
*  calcn_r: orig mass = 1.21134, new mass = 1.20752
*  toes_r: orig mass = 0.209901, new mass = 0.209239
*  femur_l: orig mass = 9.01374, new mass = 8.98531
*  tibia_l: orig mass = 3.59284, new mass = 3.58151
*  talus_l: orig mass = 0.0969073, new mass = 0.0966017
*  calcn_l: orig mass = 1.21134, new mass = 1.20752
*  toes_l: orig mass = 0.209901, new mass = 0.209239
*  torso: orig mass = 25.9969, new mass = 25.915
*  humerus_r: orig mass = 1.96964, new mass = 1.96343
*  ulna_r: orig mass = 0.588712, new mass = 0.586855
*  radius_r: orig mass = 0.588712, new mass = 0.586855
*  hand_r: orig mass = 0.443351, new mass = 0.441953
*  humerus_l: orig mass = 1.96964, new mass = 1.96343
*  ulna_l: orig mass = 0.588712, new mass = 0.586855
*  radius_l: orig mass = 0.588712, new mass = 0.586855
*  hand_l: orig mass = 0.443351, new mass = 0.441953

*                   Final Average Residuals                *
************************************************************
* After torso COM and Kinematics adjustments:
*  FX=0.183416 FY=-0.469217 FZ=0.501359
*  MX=-4.75134 MY=0.664486 MZ=37.4188
Indeed, the most remarkable change between the optimizers is the value of MZ.

Therefore, my question is if anybody knows why there is an order of magnitude in average MZ when using IPOPT instead of CFSQP, or why they said they had to change from IPOPT to CFSQP.

Thank you in advance,

Laura

Tags:

POST REPLY