Hip Reaction Forces to compare with Bergmann/Orthoload

Hi there,

I was wondering if it is possible to get the hip contact forces in the hip joints in the same coordinate system as in Orthoload. Or how can I transfer the AnyBody coordinate system?

I am using the GaitLowerExtremity AMMRV1.4 model.

Best Regards

Patrick

http://wiki.anyscript.org/index.php/All_about_Kinetics#Measure_the_reaction_force_in_a_joint_in_a_certain_coordinate_system

You have to create a new RefFrame (from Orthoload) and transform the AnyBody Reaction Force into the new one. Something like that:

// Hip Reaction Force in different Ref Frame
AnyForceMomentMeasure JointReactionMeasure = {
AnyForceBase &ref1 = Main.Studies…Reaction;
AnyRefNode &Node1 = Main.Studies.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg.NewRefFrame; };
AnyVec3 Vec1 = JointReactionMeasure.F * Main.Studies.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg.NewRefFrame.Axes;

And how do I create a new RefFrame?
This is what I am trying:

// Hip Reaction Force in different Ref Frame
AnyFolder OrtholoadCoords = 
{  
  AnyRefNode OrtholoadRefFrame  = 
  {
    AnyVec3 sRel = Main.Studies.HumanModel.BodyModel.Left.Leg.Jnt.Hip.Pos;
    AnyVec3 AnyMat33 ARel = ???;,
    AnyDrawRefFrame drw = {}; 
  };  
  AnyForceMomentMeasure JointReactionMeasure = {
    AnyForceBase &ref1 = Main.Studies.InverseDynamicStudy.Output.HumanModel.Left.Leg.MomentMeasure.HipNetMoment.F;
    AnyRefNode &Node1 = Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.OrtholoadRefFrame;
  };
  AnyVec3 Vec1 = JointReactionMeasure.F * Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.OrtholoadRefFrame.Axes;  
};

And i get:
Scanning…
Parsing…
Constructing model tree…
ERROR(SCR.PRS2) : Y:/A…y/A…4/A…n/M…s/G…t/orthoload_coords.any : ‘sRel’ : Object already auto declared by owner : Main.Studies.OrtholoadCoords.OrtholoadRefFrame
Model loading skipped

Try a RefNode within the original HipJoint RefNode, then rotate it until it fits:

AnyRefNode HipJoint2 = {

     ARel=RotMat(-24*pi/180,z);

    sRel = {0, 0, 0};
   };

Thanks, that works. But what exactly does:
ARel=RotMat(-24*pi/180,z);?
“24°” and “z” - I thought a 3x3 matrix was needed?

Sorry, that could be found in the reference…

Where exactly are the hip joint forces located in the GaitLowerExtremity model?
Main.Studies.HumanModel.BodyModel.Left.Leg.Jnt.Hip.Constraints.Reaction
Main.Studies.InverseDynamicStudy.Output.HumanModel.Left.Leg.MomentMeasure.HipNetMoment
don’t work.

AnyForceMomentMeasure JointReactionMeasure = {
    AnyForceBase &ref1 = Main.Studies.InverseDynamicStudy.Output.HumanModel.Left.Leg.JntDOF.Hip.Constraints.Reaction;
    AnyRefNode &Node1 = Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.HipJoint.OrtholoadRefFrame;
  };
  AnyVec3 Vec1 = JointReactionMeasure.F * Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.HipJoint.OrtholoadRefFrame;

Doesn’t work:
ERROR(SCR.PRS9) : Y:/A…y/A…4/A…n/M…s/G…t/orthoload_coords.any : ‘Reaction’ : Unresolved object
Model loading skipped

How can I process the forces? I thought they could be found in Main.Studies.InverseDynamicStudy.Output.HumanModel.Left.Leg.JntDOF.Hip.Constraints.Reaction.Fout but that doesn’t work either.

You need to multiply with the .Axes:

AnyVec3 Vec1 = JointReactionMeasure.F * Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.HipJoint.OrtholoadRefFrame.Axes

then look at the Vec1.

Could you prepare and upload a file that could be included into the standard GaitLowerExtremity. Then I can help you with this.

Like proposed I created the new coordinate system in AMMRV1.4/Body/AAUHuman/LegTD/Seg.any :

AnyVec3 HipJointStandard=  {0.0, 0.0, ..Sign*0.0};
  AnyRefNode HipJoint = {
    sRel = .Scale(.HipJointStandard);
    ARel = RotMat(...Sign*-30*pi/180,y) * RotMat(-18*pi/180,z);
    AnyDrawRefFrame drw = {};
    
    //new orthoload coordinate system
    AnyRefNode OrtholoadRefFrame = {      
      ARel=RotMat(-90*pi/180,y)*RotMat(296*pi/180,x);
      sRel = {0, 0, 0};
      AnyDrawRefFrame drw = {
        ScaleXYZ = {1.01,1.01,1.01};
        RGB = {0,1,0};
      };
    };     
  };

This coordinate system is only adjusted visually.

Then I included the attached file into main.

Any help would be deeply appreciated!

Hi Patrick,

please try not to change the files in the Body section. This will also affect the other models in the repository and might lead to unwanted changes in the other models.

if you include following lines in the Study of your GaitLowerExtremity it will work.
I open up first the HipJoint Node and create a new coordinate system in there (New_CS) and then…

Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.HipJoint = {
//new coordinate system
AnyRefNode New_CS = {
ARel=RotMat(-90*pi/180,y)RotMat(296pi/180,x);
sRel = {0, 0, 0};
AnyDrawRefFrame drw = {
ScaleXYZ = {1.01,1.01,1.01};
RGB = {0,1,0};
};
};
};

// Hip Reaction Force in different Ref Frame
AnyForceMomentMeasure JointReactionMeasure = {
AnyForceBase &ref1 = Main.Studies.HumanModel.BodyModel.Left.Leg.Jnt.Hip.Constraints.Reaction;
AnyRefNode &Node1 = Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.HipJoint;
};

AnyVec3 Vec1 = JointReactionMeasure.F * Main.Studies.HumanModel.BodyModel.Left.Leg.Seg.Thigh.HipJoint.New_CS.Axes;

I hope that helps.

Thank you Amir, the model is running now, without errors. Unfortunately the forces are quite unexpected but I guess that is another problem which is not dependant on the chosen coordinate systems.

One more small question:
The values given in
Main.Studies.InverseDynamicStudy.Output.HumanModel.Right.Leg.JntDOF.Hip.Constraints.Reaction.Fout
are in Newton, they are not normalized with body weight?

Hi Patrick

No, they are not.

Pavel

Thank you!