Singular KKT matrix error while using standing

Hello, I am a new Anybody user and I am having problems with solving Inverse Dynamics.
My goal is to study lumbar loads while I change body weight and body height. I am using a Standing Model and I wanted to investigate the ranges 50-120 kg and 150-200 cm (using steps of 5 cm and 5 kg).
The model is presenting me the following error but only for certains combination of weight and height and I don't know how to solve it.
"Muscle recruitment solver : solver aborted due to singular KKT matrix".
For example, the model works with 195 cm and all the possible weights, but it doesn't work using 200 cm and any of the possible weight.
I tried to look for this topic here, but I didn't manage to solve it.
I am attaching the zip-file of the combination 200cm-120kg. Please help me! (33.2 KB)

Hi @Sabry394

After a quick look at your model i think your problem is that when you scale the stature beyond 195 - the feet are no longer positioned inside the trigger box that decides if the grf prediction is on - effectively he have no support under the feets.

Try and adjust the size of the box or move the model up.

Best Regards,
AnyBody Technology

Hi @Bjorn,
thank you for your reply, I will try as you said. In the meantime I tried the following change in order to control foot positioning: I commented the input #define EXCLUDE_FOOT_CONSTRAINTS.
I'd like to know what you think about it.
Best regards

If you disable the predefined foot constraints you will be able to move the feet and define new drivers if you like.

However if you enable the #define EXCLUDE_FOOT_CONSTRAINTS the drivers ensure that the model is moved so it stands correctly on the included trigger boxes for the GRF prediction.

If you define it you can set the stature of the model to 2m and then the drivers will move the model up so he stands correctly and you can run the analysis. But if you exclude it - you will manually (or by new drivers) place the model to ensure it can utilize the GRF prediction.

Best Regards,

ok, I don't know if I completely understood what you mean. I tried to follow your previous suggestion and I changed the positioning of the model, lifting it up by 5.

// Positioning of the right and left feet. 
    // Ground-foot constraints can be excluded with:
    Environment.GlobalRef.RightFootPrint = {
      AnyVec3 HeelPosition = {-0.08, 5, 0.14};
      AnyVec3 ToeDirection = {1, 5, 0.1}; 
    Environment.GlobalRef.LeftFootPrint = {
      AnyVec3 HeelPosition = {-0.08, 5, -0.14};
      AnyVec3 ToeDirection = {1, 5, -0.1}; 

I loaded the new model, run the analysis and it worked for 200cm but the error wasn't solved for height lower than 175 cm (I didn't mention it but before I had the same problem for heights lower than 175).

I don't understand also how to adjust the size of the box as you said

If you go to the definition of the GRF in the GRFPrediction.any file, try to change the LimitDistHigh and LimitDistLow this will make the cylinder for contact detection larger (higher)

If you click the line

  // See: #include "<ANYBODY_PATH_AMMR>/Tools/GRFPrediction/FootPlateConditionalContact.any" 

it will open the class and you can see all the options.

If the foot nodes are within this the displayed cylinder you can transmit a force.

Best regards

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.