I'm trying to validate an algorithm for computing the angle moments of upper limbs joints knowing the motion and the external forces to the hands using AMS. I would like to compare the results that I obtained with the joint moment measures calculate inside with a full-body AMMR 2.2.3.
Which is the reference frame in which the joint moments are referred to?
In particular:
The GlenoHumeral measures are given in the Humerus segment reference frame.
The Elbow measures are given in the Ulna segment reference frame
the wrist flexion is given in the WristJointSeg and the wrist abduction is given in the hand segment reference frame
if you need to drill deeper into the measures you can follow them by right clicking the joint moment variable in the model view and click "Locate in AnyScript" this can take you to the implementation file (interface.any) where you can see how the measures are build.
and a transformation is needed to map it to the body frame.
So I tried to follow your suggestion of clicking to "Locate in Anyscript" in the joint moment variable to understand the correct definition, but the script with the studies (AnyMocapModel.any) opens;
What did I do wrong?
I am not sure where you read that paragraph so I don't know if it applies to the Joint Moment Measures.
Anyhow, I made a mistake in my first post and you can just ignore that post.
The Joint moment measures are defined in the ammr/Body/AAUHuman/Arm/ArmMoments.any file.
The file contains AnyForceMomentMeasure2 classes of all the measures.
Be aware that there are two versions for some joint; one that measure the forces and moments without contributions from the joint reaction and one with it.
The ones named "NetMomentMuscles" only computes forces and moments based on the muscles that span the joint. These are used to construct the joint moments you find under Main.HumanModel.BodyModel.SelectedOutput.Right.ShoulderArm.JointMomentMeasure and you can see in the code to what reference frame the output moment in expressed.
for instance the ElbowPronation is transformed from global coordinates into the local radius.ps2.rotnode frame with these lines:
//Make transformation to the radius.ps2.rotnode coordinate system
AnyVec3 Mlocal=M*ref.Axes;
AnyVar ElbowPronation=Mlocal[0];
I hope this helps a little.
Remember that the moments expressed in the global reference frame are also available in the M variable of the AnyForceMomentMeasure2 class.