The orientation of GRF prediction

April'7 Hey, I want to get a GRF prediction , but the orientation(blue line) is like this ,i don't know how to change this to get the correct orientation. AnyBody 6.0 (64-bit)

Thank you for help!

Hi Chengyong,

Please explain a bit about the model, AMMR version and what you did?

It may look like the person is "hanging upside down in his feet's, this would explain the direction of the vectors to me.

I would try to flip the person around so he would be standing the other way upside down, this might solve the problem.

Best regards
Søren

Thank you, Søren!

First ,I use the c3d to driver my model ,but i don't have the forceplate ,so i want to use the GRF prediction . I have the motion of UpperExtremities,so I make my legs fixed on the ground.

Second, the AMMR version i use is 1.6.2,i download the GRF prediction model.I change the c3d
based on this model.

Best wishes

I don't know how to flip the person around,what can i do?

I think you are right it is not super easy to change the direction of how the motion was recorded in this model.

I suggest instead:

  • Change direction of gravity
  • Flip the frame which is used for the GRF prediction basis so that it points upwards look in the Forceplate_GRFPrediction.any file and change the PLATE_BASE_FRAME to a frame which is pointing upwards.
  • You can simply create a new frame for this using an AnyFixedRefFrame with altered Axes value e.g. Axes= RotMat(0.5*pi, x) (not sure on if it should be x since i can not see it on picture.)

Best regards
Søren

I believe these steps must be valid.I want to know if I need to do all of the three steps or only need one step.And I want to know the specific operations about three steps.thank you very much !

I follow your advices,and I change the direction of gravity,also flip the AnyFixedRefFrame to make it point upside,such as the following picture,but I don't know how to change the PLATE_BASE_FRAME,please give me some detalis,thang you very much !

Best wishes!

AnyBody 6.0 (64-bit).2 AnyBody 6.0 .1

Hi

If you have changed the direction of the GlobalRefFrame you are fine, this is the one which is used by the GRF prediction, then you do not need a new frame.

From the picture it looks like the frame is a bit high with respect to the ground this may impact the way the predictions are done so it might be a good idea to raise it a bit in the z direction to make it on line with feet surface. To do that change the "Origin" value of the frame.

So you do not need to change the PLATE_BASE_FRAME since you simply modified the frame it was already pointing at which i think is fine.

Concerning the question how to change it, this would is done in the "Forceplate_GRFPrediction.any " file

By changing the line " PLATE_BASE_FRAME = Main.EnvironmentModel.GlobalRef" to be pointing at something else.

#include "<ANYBODY_PATH_AMMR>/Tools/GRFPrediction/FootPlateConditionalContact.any"
  FootPlateConditionalContact GRF_Prediction_Right(
  NORMAL_DIRECTION = "Y",
  NUMBER_OF_NODES = 25,
  NODES_FOLDER = FootNodes,
  SHOW_TRIGGER_VOLUME = ON,
  PLATE_BASE_FRAME = Main.EnvironmentModel.GlobalRef) 
  {
    CreateFootContactNodes25 FootNodes(foot_ref = 
    Main.HumanModel.BodyModel.Right.Leg.Seg.Foot) = {};
    
    // Additional force plate settings
    Settings = 
    {
      LimitDistHigh = 0.015; // Vertical height
    };
  };

Best regards
Søren

Thank you for the details! I run the Inverse dynamic analysis,but I can't find the GRF prediction(blue line ),it is just like nothing.AnyBody 6.0 .3

Hi,I have done the model,but GRF prediction does not work , I have no ideals ,so I want some help .

Best wishes!

Hi Chengyong,

Sorry for slow response we have been away for eastern.

Please upload the model so i can see exactly what you have done, at this point i am unsure why it seems not to work.

Please ensure that you do run the inverse study, if you ran a kinematic study it could explain it.

Best regards
Søren

OK,never mind.The problem is solved.Now ,I have some questions.when I run the InverseDynamicAnalysis wherethe total steps are 600,stopped at 243 step ,error
like these :nverseDynamicStudy.InverseDynamics : Muscle recruitment solver : solver aborted due to singular KKT matrix. What I can do?

Best wishes.

Hi Chengyong,

First of all, questions related to this particular error are already covered on the forum many times - please try using search buttons next time for common keywords.

The message is an indicator that something is out of balance and muscle/reaction forces used in this situation are not sufficient to provide dynamic support. Sometimes this is caused by a motion that is not optimal or there are errors in it, e.g. a twisted foot that makes muscle unable to provide support or situations like that. More rarely muscles are missing to carry a certain degree of freedom and I expect that this is not the case of a full-body model.

Here is a wiki page on this topic:

Regards,
Pavel

Just a small comment to Pavels reply. Your model is using GRF prediction, please try to adjust the height limits in the GRF prediction class. It can be that the detection of contact is off which could have the effect you see. So increasing height limits may improve the model.

Thank you! Now,I want to let my foot fixed on the ground ,and then run the analysis,and how i can do to fix my feet on the ground ?

Hi

I am not sure i understand what you would like to do, as i recall your model it is driven by C3D data so motion is input. Do you now seek to alter the motion by locking the foot kinematically ? if so this is possible but it may ruin model balance.

Please add more description on what you try to achieve?

Best regards
Søren

Thanks for your response! I want to seek to alter the motion by locking the foot kinematically.My c3d is about the moton of the trunk and UpperExtremities,but I want to make a full body model ,so I want to fix my feet on the ground without any motion.

best wishes !

Ok i understand

I would look in the StandingModel for inspiration on how to do this. it has drivers which add constraints between foot and ground.

Best regards
Søren

That would be nice .I also take the same step,I hope we will find a great solution .

Best wishes!