For the gaitlowerextremity model I need to use moment of forces generated by the joints instead of the muscles. In the joints and drivers optimized file I set the Reaction.type to on. My question is where I can find the generated moments, because in the standard output the joint moments of forces are 0 now. And if it is not visible yet how can I generate this output?
Then the joint muscles on knee joints will not work because the reaction of those joints are ‘on’.
Then, you can see the moments of this joints here:
Main.Studies.InverseDynamicStudy.ModelEnvironmentConnection.JointsAndDrivers.JntDriverLeftLegTD.Reaction.Fout[3]
Main.Studies.InverseDynamicStudy.ModelEnvironmentConnection.JointsAndDrivers.JntDriverRightLegTD.Reaction.Fout[3]
I adjusted the model and found the new moments of forces, but I have one important question left: Since I use other reference frames in the segments and joint nodes how can I generate the moments of forces with the adjusted reference frames?
That class I am already using but it will show the same results as in the standard output I constructed it as follows:
[SIZE=3]AnyForceMomentMeasure2[/SIZE] AnklePlantarFlexionNetMomentAnalyse = {
[SIZE=3]AnyRefNode[/SIZE] &ref=Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Shank.AnkleJointAnalyseRight;
[SIZE=3]AnyRefNode[/SIZE] &ref2=Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Talus.AnkleJointAnalyseRight;
[SIZE=3]
[/SIZE][SIZE=3]AnySeg[/SIZE] &seg1 =Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Foot;
[SIZE=3]
[/SIZE][SIZE=3]// #include “C:\bestanden\AMMRV1.4 - kopie\Body\AAUHuman\LegTD\LegMuscleNamesAnalyse.any”
[/SIZE]
[SIZE=3]// IncludeGravity=On;
[/SIZE][SIZE=3]AnyReacForce[/SIZE] &jnt1=Main.Studies.HumanModel.BodyModel.Right.Leg.Jnt.Ankle.Constraints.Reaction;
[SIZE=3]AnyReacForce[/SIZE] &jnt2=Main.Studies.HumanModel.BodyModel.Right.Leg.Jnt.SubTalar.Constraints.Reaction;
[SIZE=3][/SIZE][SIZE=3]
[/SIZE][SIZE=3]AnyVec3[/SIZE] Mlocal=M*ref.Axes;
First, I don’t know how you defined your ‘AnkleJointAnalyseRight’ node as the point of interest for AnyForceMomentMeasure2 class if you do not upload your model.
So I’m sorry I can’t make the exact answer for you.
Generally, the joint muscles(when using “BodyPartsSetup2.any” file in the inverse dynamics) are just torque generators for human joints.
So even if we put ‘AnyReacForce’ on the joint drivers, the resultant torque should be same from the result of joint muscles.
When using the forceplates the ankle joint forces are correctly calculated, but this is not the case for the moment of forces. How is that moment of force exactly calculated in the analysis?
How can I use the anyforcemoment2 class if there are no muscles available(since there are no useful moment data)?
Are the reaction forces calculated in a local reference frame or in the global reference framework?
If they are local is it possible to replace those reactions with my own output?
I’m sorry for not understanding your intention of question very well early.
First, I would suggest you to use “BodyPartsSetup.any” file to include all muscles again when you are doing InverseDynamics.
Also set the reaction’s type as ‘off’ in the joint drivers to make sure that muscles will work(“JointsAndDriversOptimized.any”).
Then, in the ‘Main.Studies.HumanModel.BodyModel.Right.Leg.MomentMeasure’ folder,
you can see several moment measures.
(\AMMRV1.4\Body\AAUHuman\BodyModels\GenericBodyModel\RightLegTDSimpleMuscles.any)
AnyForceMomentMeasure2 AnklePlantarFlexionNetMoment
-> This will consider both all muscle forces and joint reactions related to Ankle joint
AnyForceMomentMeasure2 AnklePlantarFlexionNetMomentMuscle
-> This will consider only muscle forces related to Ankle joint
AnyForceMomentMeasure AnkleJointReactionMoments
-> This will consider only joint reactions related to Ankle joint
So as far as I understand, you may need the third measure.
And the output(M) of AnyForceMomentMeasure and AnyForceMomentMeasure2 are represented with respect to global coordinate system.
But in the third one(AnkleJointReactionMoments) you can also see ‘Mlocal’ value, which transforms M into local coordinate system of Ankle joint.
Then also you can see that Mlocal[2] value is always almost zero.
If you can compare these three measures, I hope that you can see what you want to do.
Actually I need to have the reaction moments as constructed in
Main.Studies.InverseDynamicStudy.ModelEnvironmentConnection.JointsAndDrivers.JntDriverRightLegTD.Reaction.Fout. But those reaction moments are constructed in the local reference framework so I made this transformation:
[SIZE=3][SIZE=3]AnyFloat [/SIZE]GlobalAnklePlantarFlectionMoment=[SIZE=3] [/SIZE]AnklePlantarFlexionReactionMomentLocal*Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Foot.Axes’;
Is this correct and how do I get the resultant of this transformation?
So, you should use ’ Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Shank.AnkleJoint’ reference node to transfrom AnyReacForce value into global value.
So my answer is, AnyFloat GlobalAnklePlantarFlectionMoment_Right=
AnklePlantarFlexionReactionMomentLocal_Right*
Main.Studies.HumanModel.BodyModel.Right.Leg.Seg.Shank.AnkleJoint.Axes’;
Thank you for your reply but I have one remaining question left: You obtain 9 values after this multiply and what do I have to do with those 9 values to obtain the global moment of force?
Now I’m finalizing the answer to your question.
There are no 9 values to see. There are only 3 values.
If you want to see the global moment vectors in GaitFullBody model
Main.Studies.HumanModel.BodyModel.Right.Leg.MomentMeasure.AnkleJointReactionMoments.M
Main.Studies.HumanModel.BodyModel.Left.Leg.MomentMeasure.AnkleJointReactionMoments.M
If you want to see the local moment vectors in GaitFullBody model
Main.Studies.HumanModel.BodyModel.Right.Leg.MomentMeasure.AnkleJointReactionMoments.Mlocal
Main.Studies.HumanModel.BodyModel.Left.Leg.MomentMeasure.AnkleJointReactionMoments.Mlocal