Greetings Dave,
I’ve made adjustments based on your feedback to improve the accuracy of the MoCap model.
I changed the contact direction to {2,0,1} instead of the default {0,1,2}.
I also increased UserDefinedLimitHigh to 1.5 and seemed to get a reaction from the contact points at Leg.
So I took the liberty to make the same changes in my SeatSupport.any and BackRestSupport.any.
I initially just changed the direction but realized I only get reaction from contact points at Seat and not BackRest so I changed the threshold for the contact in my BackRest alone respective to the distance I saw in the GUI.
The seat is individually fixed to the global ref using AnyKinEq with Reaction.Type = {On, On, On, On, On, On};.
Adding additional AnykinEq over constraints the model. The following is the code structure I am using now:
AnyKinLinear BackRestGlobalLinMeasure =
{
//RefFrames = ;
//viewKinMeasure.Visible = Off;
//Type = CartesianCoord;
//Ref = -1;
//LineLineDistanceAxes = {{x, x}};
//LineLineDistanceAxisLength = 10.0;
//AngularAxis = z;
AnyRefFrame &SegNode = Main.EnvironmentModel.EnvironmentModel.BackRest.BackRestSeatJntNode ;
AnyRefFrame &GroundNode = Main.EnvironmentModel.EnvironmentModel.GlobalRef.GroundNode ;
};
AnyKinRotational BackRestGlobalRotMeasure =
{
//viewKinMeasure.Visible = Off;
Type = RotVector;
//Axis1 = z;
//Axis2 = y;
//Axis3 = x;
//DirCosineAxes = {{x, x}, {x, y}, {x, z}, {y, x}, {y, y}, {y, z}, {z, x}, {z, y}, {z, z}};
//AngVelOnOff = Off;
//AngVelGlobal = Off;
AnyRefFrame &GroundNode = Main.EnvironmentModel.EnvironmentModel.GlobalRef.GroundNode ;
AnyRefFrame &SegNode = Main.EnvironmentModel.EnvironmentModel.BackRest.BackRestSeatJntNode ;
};
AnyKinEq BackRestGlobalConst =
{
//viewKinMeasure.Visible = Off;
MeasureOrganizer = {0, 1, 2, 3, 4, 5};
//CType = ;
//WeightFun = ;
AnyKinMeasure &LinMeasure = Main.EnvironmentModel.EnvironmentModel.Jnt.BackRestGlobalLinMeasure;
AnyKinMeasure &RotMeasure = Main.EnvironmentModel.EnvironmentModel.Jnt.BackRestGlobalRotMeasure;
};
AnyKinLinear HeadRestGlobalLinMeasure =
{
//RefFrames = ;
//viewKinMeasure.Visible = Off;
//Type = CartesianCoord;
//Ref = -1;
//LineLineDistanceAxes = {{x, x}};
//LineLineDistanceAxisLength = 10.0;
//AngularAxis = z;
AnyRefFrame &SegNode = Main.EnvironmentModel.EnvironmentModel.HeadRest.HeadRestBackRestJntNode ;
AnyRefFrame &GroundNode = Main.EnvironmentModel.EnvironmentModel.GlobalRef.GroundNode ;
};
AnyKinRotational HeadRestGlobalRotMeasure =
{
//viewKinMeasure.Visible = Off;
Type = RotVector;
//Axis1 = z;
//Axis2 = y;
//Axis3 = x;
//DirCosineAxes = {{x, x}, {x, y}, {x, z}, {y, x}, {y, y}, {y, z}, {z, x}, {z, y}, {z, z}};
//AngVelOnOff = Off;
//AngVelGlobal = Off;
AnyRefFrame &SegNode = Main.EnvironmentModel.EnvironmentModel.HeadRest.HeadRestBackRestJntNode ;
AnyRefFrame &GroundNode = Main.EnvironmentModel.EnvironmentModel.GlobalRef.GroundNode ;
};
AnyKinEq HeadRestGlobalConst =
{
//viewKinMeasure.Visible = Off;
MeasureOrganizer = {0, 1, 2, 3, 4, 5};
//CType = ;
//WeightFun = ;
AnyKinMeasure &LinMeasure = Main.EnvironmentModel.EnvironmentModel.Jnt.HeadRestGlobalLinMeasure;
AnyKinMeasure &RotMeasure = Main.EnvironmentModel.EnvironmentModel.Jnt.HeadRestGlobalRotMeasure;
};
AnyKinLinear LegRestGlobalLinMeasure =
{
//RefFrames = ;
//viewKinMeasure.Visible = Off;
//Type = CartesianCoord;
//Ref = -1;
//LineLineDistanceAxes = {{x, x}};
//LineLineDistanceAxisLength = 10.0;
//AngularAxis = z;
AnyRefFrame &SegNode = Main.EnvironmentModel.EnvironmentModel.LegRest.LegRestSeatJntNode ;
AnyRefFrame &GroundNode = Main.EnvironmentModel.EnvironmentModel.GlobalRef.GroundNode ;
};
AnyKinRotational LegGlobalRotMeasure =
{
//viewKinMeasure.Visible = Off;
Type = RotVector;
//Axis1 = z;
//Axis2 = y;
//Axis3 = x;
//DirCosineAxes = {{x, x}, {x, y}, {x, z}, {y, x}, {y, y}, {y, z}, {z, x}, {z, y}, {z, z}};
//AngVelOnOff = Off;
//AngVelGlobal = Off;
AnyRefFrame &SegNode = Main.EnvironmentModel.EnvironmentModel.LegRest.LegRestSeatJntNode ;
AnyRefFrame &GroundNode = Main.EnvironmentModel.EnvironmentModel.GlobalRef.GroundNode ;
};
AnyKinEq LegRestGlobalConst =
{
//viewKinMeasure.Visible = Off;
MeasureOrganizer = {0, 1, 2, 3, 4, 5};
//CType = ;
//WeightFun = ;
AnyKinMeasure &LinMeasure = Main.EnvironmentModel.EnvironmentModel.Jnt.LegRestGlobalLinMeasure;
AnyKinMeasure &RotMeasure = Main.EnvironmentModel.EnvironmentModel.Jnt.LegGlobalRotMeasure;
};
However, I presume they are linked to each other and the Seat via joint definitions. 1) Is the approach right?
I am attaching a picture of my model now after the InverseDynamics Study.
The results seem to be slightly better now. When compared to the ID study of SPLB model they seem to be in close - medium vicinity. However, the right leg seems to exhibit more joint reaction force compared to the left when it is the left ankle that is under load. 2) How do I validate the results?
Please let me know if you need additional information.
Thank you.
With Regards,
Romy Jemals.