Determining joint reaction forces

Hello,

firstly some scripting code:

Joint definition:

   AnySphericalJoint Knee = {
     Orientation.Type = RotAxesAngles;
     Orientation.Axis1 = y;
     Orientation.Axis2 = z;
     Orientation.Axis3 = x;
     AnyRefNode &femur = Main.RatModel.Seg.Femur.Knee;
     AnyRefNode &tibia = Main.RatModel.Seg.Tibia.Knee;
   }; // Knee joint

Measure:

   AnyKinRotational LinKneeRot = {
     Axis1 = y;
     Axis2 = z;
     Axis3 = x;
     Type = RotAxesAngles;
     AnyRefFrame &femur = Main.RatModel.Seg.Femur;
     AnyRefFrame &tibia = Main.RatModel.Seg.Tibia;
   };

Drivers:

   AnyKinEqInterPolDriver DriverKneeRotX = {
     Type = Bspline;
     BsplineOrder = 4;
     FileName = "drivers\knee_rot_x.txt";
     AnyKinMeasure &Lin = Main.RatModel.Drivers.LinKneeRot;
     MeasureOrganizer = {2};
     Reaction.Type = {On};
   };
   AnyKinEqInterPolDriver DriverKneeRotY = {
     Type = Bspline;
     BsplineOrder = 4;
     FileName = "drivers\knee_rot_y.txt";
     AnyKinMeasure &Lin = Main.RatModel.Drivers.LinKneeRot;
     MeasureOrganizer = {0};
     Reaction.Type = {Off};
   };
   AnyKinEqInterPolDriver DriverKneeRotZ = {
     Type = Bspline;
     BsplineOrder = 4;
     FileName = "drivers\knee_rot_z.txt";
     AnyKinMeasure &Lin = Main.RatModel.Drivers.LinKneeRot;
     MeasureOrganizer = {1};
     Reaction.Type = {On};
   };

This is the way I’m determining the reaction forces in the knee joint:

 AnyForceMomentMeasure Knee =     {
   AnyRefFrame &Pelvis_Femur = Main.RatModel.Seg.Femur2.Knee;
   AnyReacForce &Knee_Loads =

Main.RatModel.Jnts.Knee.Constraints.Reaction;
AnyReacForce &KneeX_Loads =
Main.RatModel.Drivers.DriverKneeRotX.Reaction;
AnyReacForce &KneeY_Loads =
Main.RatModel.Drivers.DriverKneeRotY.Reaction;
AnyReacForce &KneeZ_Loads =
Main.RatModel.Drivers.DriverKneeRotZ.Reaction;
};

Now to my question: If I wanted to have the reaction forces in the
knee joint calculated referring to the local (anatomic)
co-ordinatesystem, is this the right way to do it? If so, do the
values in Main.MyStudy.Output.Knee.F[0], Main.MyStudy.Output.Knee.F[1]
and Main.MyStudy.Output.Hip.F[2] have the same order as defined in the
joint definition (Orientation.Axis1 = y complies with F[0],
Orientation.Axis2 = z complies with F[1] and Orientation.Axis3 = x
complies with F[2])?

Thanks a lot in advance.

Kind regards,

Dieter

Hi Dieter,

The object AnyForceMomentMeasure will not give you the reaction forces in
local coordinate system as you expect. There is a good explanation in the
reference manual of this object that I invite you to read.

In few words AnyForceMomentMeasure gives the equivalent force and moment in
global coordinates of all forces defined in the object at the specified
point (reference frame). So the outputs Main.MyStudy.Output.Knee.F[0], …
are in global, and they don’t refer exactly to the forces you defined but to
an equivalent force at a certain point.

If you want to see the reaction moments you can go in the ChartFX to
.DriverKneeRotX.Constraint.Reaction.Fout. The force will be display in the
local coordinate system of the femur as it is the first ref frame defined in
the AnyKinRotational.

Best regards,

Sylvain, AnyBody Support


From: anyscript@yahoogroups.com [mailto:anyscript@yahoogroups.com] On Behalf
Of dieterkassgim
Sent: 28. oktober 2008 11:33
To: anyscript@yahoogroups.com
Subject: [AnyScript] Determining joint reaction forces

Hello,

firstly some scripting code:

Joint definition:

AnySphericalJoint Knee = {
Orientation.Type = RotAxesAngles;
Orientation.Axis1 = y;
Orientation.Axis2 = z;
Orientation.Axis3 = x;
AnyRefNode &femur = Main.RatModel.Seg.Femur.Knee;
AnyRefNode &tibia = Main.RatModel.Seg.Tibia.Knee;
}; // Knee joint

Measure:

AnyKinRotational LinKneeRot = {
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
AnyRefFrame &femur = Main.RatModel.Seg.Femur;
AnyRefFrame &tibia = Main.RatModel.Seg.Tibia;
};

Drivers:

AnyKinEqInterPolDriver DriverKneeRotX = {
Type = Bspline;
BsplineOrder = 4;
FileName = “drivers\knee_rot_x.txt”;
AnyKinMeasure &Lin = Main.RatModel.Drivers.LinKneeRot;
MeasureOrganizer = {2};
Reaction.Type = {On};
};
AnyKinEqInterPolDriver DriverKneeRotY = {
Type = Bspline;
BsplineOrder = 4;
FileName = “drivers\knee_rot_y.txt”;
AnyKinMeasure &Lin = Main.RatModel.Drivers.LinKneeRot;
MeasureOrganizer = {0};
Reaction.Type = {Off};
};
AnyKinEqInterPolDriver DriverKneeRotZ = {
Type = Bspline;
BsplineOrder = 4;
FileName = “drivers\knee_rot_z.txt”;
AnyKinMeasure &Lin = Main.RatModel.Drivers.LinKneeRot;
MeasureOrganizer = {1};
Reaction.Type = {On};
};

This is the way I’m determining the reaction forces in the knee joint:

AnyForceMomentMeasure Knee = {
AnyRefFrame &Pelvis_Femur = Main.RatModel.Seg.Femur2.Knee;
AnyReacForce &Knee_Loads =
Main.RatModel.Jnts.Knee.Constraints.Reaction;
AnyReacForce &KneeX_Loads =
Main.RatModel.Drivers.DriverKneeRotX.Reaction;
AnyReacForce &KneeY_Loads =
Main.RatModel.Drivers.DriverKneeRotY.Reaction;
AnyReacForce &KneeZ_Loads =
Main.RatModel.Drivers.DriverKneeRotZ.Reaction;
};

Now to my question: If I wanted to have the reaction forces in the
knee joint calculated referring to the local (anatomic)
co-ordinatesystem, is this the right way to do it? If so, do the
values in Main.MyStudy.Output.Knee.F[0], Main.MyStudy.Output.Knee.F[1]
and Main.MyStudy.Output.Hip.F[2] have the same order as defined in the
joint definition (Orientation.Axis1 = y complies with F[0],
Orientation.Axis2 = z complies with F[1] and Orientation.Axis3 = x
complies with F[2])?

Thanks a lot in advance.

Kind regards,

Dieter

[Non-text portions of this message have been removed]