550 lines (497 with data), 18.9 kB
//*****************************************************************************************
// ANY - KIN - MEASURES
//*****************************************************************************************
AnyFolder Drivers = {
//******************************************************
// Hip-Segment
//******************************************************
AnyKinLinear LinMainTrans={
Ref=0;
AnyFixedRefFrame &ref1= ...Ground;
AnyRefFrame &ref2=...Seg.SpinePelvis.Hip;
};
AnyKinRotational RotMainRot={
Type = RotAxesAngles;
Axis1 = y;
Axis2 = z;
Axis3 = x;
AnyFixedRefFrame &ref1 = ...Ground;
AnyRefFrame &ref2 = ...Seg.SpinePelvis.Hip;
//Ref=0;
};
//*******************************************************
// Measures between Spine/Pelvis and Femur
//*******************************************************
#if FRACTUREMODEL
AnyKinRotational LinHipRot = {
//Ref = 1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
AnyRefFrame &spine = ...Ground;
//AnyRefFrame &LabOrigin = ..Seg.SpinePelvis;
AnyRefFrame &P1 = ...Seg.Femur_p;
};
AnyKinRotational LinHipRot_anatomisch = {
//Ref = 1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
// AnyRefFrame &spine = ..Ground;
AnyRefFrame &LabOrigin = ...Seg.SpinePelvis;
AnyRefFrame &P1 = ...Seg.Femur_p;
};
#else
AnyKinRotational LinHipRot = {
//Ref = 1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
AnyRefFrame &spine = ...Ground;
//AnyRefFrame &LabOrigin = ..Seg.SpinePelvis;
AnyRefFrame &P1 = ...Seg.Femur;
};
AnyKinRotational LinHipRot_anatomisch = {
//Ref = 1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
// AnyRefFrame &spine = ...Ground;
AnyRefFrame &LabOrigin = ...Seg.SpinePelvis;
AnyRefFrame &P1 = ...Seg.Femur;
};
#endif
//*******************************************************
// Measures between Femur and Tibia
//*******************************************************
AnyKinRotational LinKneeRot = {
//Ref = -1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
AnyRefFrame &spine = ...Ground;
// AnyRefFrame &LabOrigin = ...Seg.Femur;
AnyRefFrame &P1 = ...Seg.Tibia;
};
#if FRACTUREMODEL
AnyKinRotational LinKneeRot_anatomisch = {
//Ref = -1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
// AnyRefFrame &spine = ...Ground;
AnyRefFrame &LabOrigin = ...Seg.Femur_d;
AnyRefFrame &P1 = ...Seg.Tibia;
};
#else
AnyKinRotational LinKneeRot_anatomisch = {
//Ref = -1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
// AnyRefFrame &spine = ..Ground;
AnyRefFrame &LabOrigin = ...Seg.Femur;
AnyRefFrame &P1 = ...Seg.Tibia;
};
#endif
//*******************************************************
// Measures between Tibia and Metatarsus
//*******************************************************
AnyKinRotational LinAnkleRot = {
//Ref = -1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
AnyRefFrame &spine = ...Ground;
// AnyRefFrame &LabOrigin = ...Seg.Tibia;
AnyRefFrame &P1 = ...Seg.Metatarsus;
};
AnyKinRotational LinAnkleRot_anatomisch = {
//Ref = -1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
// AnyRefFrame &spine = ...Ground;
AnyRefFrame &LabOrigin = ...Seg.Tibia;
AnyRefFrame &P1 = ...Seg.Metatarsus;
};
//*******************************************************
// Measures between Metatarsus and Phalanges
//*******************************************************
AnyKinRotational LinPhalRot = {
//Ref = -1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
AnyRefFrame &spine = ...Ground;
//AnyRefFrame &LabOrigin = ...Seg.Metatarsus;
AnyRefFrame &P1 = ...Seg.Phalanges;
};
AnyKinRotational LinPhalRot_anatomisch = {
//Ref = -1;
Axis1 = y;
Axis2 = z;
Axis3 = x;
Type = RotAxesAngles;
// AnyRefFrame &spine = ...Ground;
AnyRefFrame &LabOrigin = ...Seg.Metatarsus;
AnyRefFrame &P1 = ...Seg.Phalanges;
};
//*******************************************************
// Measures between Femur and Patella
//*******************************************************
AnyKinRotational LinPatRot = {
//Ref = -1;
Type = RotAxesAngles;
Axis1 = y;
Axis2 = z;
Axis3 = x;
AnyRefFrame &spine = ...Ground;
// AnyRefFrame &LabOrigin = ...Seg.Femur;
AnyRefFrame &P1 = ...Seg.Patella;
};
#if FRACTUREMODEL
AnyKinRotational LinPatRot_anatomisch = {
//Ref = -1;
Type = RotAxesAngles;
Axis1 = y;
Axis2 = z;
Axis3 = x;
// AnyRefFrame &spine = ...Ground;
AnyRefFrame &LabOrigin = ...Seg.Femur_d;
AnyRefFrame &P1 = ...Seg.Patella;
};
#else
AnyKinRotational LinPatRot_anatomisch = {
//Ref = -1;
Type = RotAxesAngles;
Axis1 = y;
Axis2 = z;
Axis3 = x;
// AnyRefFrame &spine = ...Ground;
AnyRefFrame &LabOrigin = ...Seg.Femur;
AnyRefFrame &P1 = ...Seg.Patella;
};
#endif
//*******************************************************
// GRF Segment Measures
//*******************************************************
AnyKinLinear LinGroundMTrans = {
Ref = 1;
// AnyRefFrame &ref1= ...Ground;
AnyRefFrame &ref1= ...Seg.Metatarsus;
AnyRefFrame &ref2 = ...GroundSegmentM;
};
AnyKinRotational RotGroundMRot={
//Ref = 1;
// AnyRefFrame &ref1= ...Ground;
AnyRefFrame &ref1= ...Seg.Metatarsus;
AnyRefFrame &ref2 = ...GroundSegmentM;
Type = RotVector;
};
AnyKinLinear LinGroundPTrans = {
Ref = 1;
// AnyRefFrame &ref1= ...Ground;
AnyRefFrame &ref1= ...Seg.Phalanges;
AnyRefFrame &ref2 = ...GroundSegmentP;
};
AnyKinRotational RotGroundPRot={
//Ref = 1;
// AnyRefFrame &ref1= ...Ground;
AnyRefFrame &ref1= ...Seg.Phalanges;
AnyRefFrame &ref2= ...GroundSegmentP;
Type=RotVector;
};
//***************************************************************************
// DRIVERS
//***************************************************************************
//*******************************************
// Spine/Pelvis Driver
//*******************************************
AnyKinEqInterPolDriver DriverMainTrans = {
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\Main_trans.txt";
AnyKinMeasure& ref = .LinMainTrans; //reference to the measure being driven
Reaction.Type={On, On, On};
MeasureOrganizer = {0, 1, 2};
};
AnyKinEqInterPolDriver DriverMainRot = {
// Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\Main_rot.txt";
AnyKinMeasure& ref = .RotMainRot;
Reaction.Type={On, On, On};
MeasureOrganizer = {2, 0, 1};
};
//*******************************************
// Hip Driver
//*******************************************
AnyKinEqInterPolDriver DriverHipRotX = {
//AnyRevoluteJoint &Jnt = ...Jnts.Hip;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\hip_rot_x.txt";
// AnyKinMeasure& Lin = ...Drivers.LinHipRot;
AnySphericalJoint &Lin = ...Jnts.Hip;
MeasureOrganizer = {2};
Reaction.Type = {Off};
};
AnyKinEqInterPolDriver DriverHipRotY = {
//AnyRevoluteJoint &Jnt = ...Jnts.Hip;
// Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
// Type = Bezier;
FileName = "..\Input\Drivers\hip_rot_y.txt";
// AnyKinMeasure& Lin = ...Drivers.LinHipRot;
AnySphericalJoint &Lin = ...Jnts.Hip;
MeasureOrganizer = {0};
Reaction.Type = {Off};
};
AnyKinEqInterPolDriver DriverHipRotZ = {
//AnyRevoluteJoint &Jnt = ...Jnts.Hip;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\hip_rot_z.txt";
// AnyKinMeasure& Lin = ...Drivers.LinHipRot;
AnySphericalJoint &Lin = ...Jnts.Hip;
MeasureOrganizer = {1};
Reaction.Type = {Off};
};
//*****************************************************
// Knee Driver
//*****************************************************
AnyKinEqInterPolDriver DriverKneeRotX = {
//AnyRevoluteJoint &Jnt = ...Jnts.Knee;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\knee_rot_x.txt";
// AnyKinMeasure& Lin = ...Drivers.LinKneeRot;
AnySphericalJoint &Lin = ...Jnts.Knee;
MeasureOrganizer = {2};
Reaction.Type = {On};
};
AnyKinEqInterPolDriver DriverKneeRotY = {
//AnyRevoluteJoint &Jnt = ...Jnts.Knee;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\knee_rot_y.txt";
// AnyKinMeasure& Lin = ...Drivers.LinKneeRot;
AnySphericalJoint &Lin = ...Jnts.Knee;
MeasureOrganizer = {0};
Reaction.Type = {Off};
};
AnyKinEqInterPolDriver DriverKneeRotZ = {
//AnyRevoluteJoint &Jnt = ...Jnts.Knee;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\knee_rot_z.txt";
// AnyKinMeasure& Lin = ...Drivers.LinKneeRot;
AnySphericalJoint &Lin = ...Jnts.Knee;
MeasureOrganizer = {1};
Reaction.Type = {On};
};
//*******************************************************
// Ankle Driver
//*******************************************************
AnyKinEqInterPolDriver DriverAnkleRotX = {
//AnyRevoluteJoint &Jnt = ...Jnts.Ankle;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\ankle_rot_X.txt";
// AnyKinMeasure& Lin = ...Drivers.LinAnkleRot;
AnySphericalJoint &Lin = ...Jnts.Ankle;
MeasureOrganizer = {2};
Reaction.Type = {On};
};
AnyKinEqInterPolDriver DriverAnkleRotY = {
//AnyRevoluteJoint &Jnt = ...Jnts.Ankle;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\ankle_rot_Y.txt";
// AnyKinMeasure& Lin = ...Drivers.LinAnkleRot;
AnySphericalJoint &Lin = ...Jnts.Ankle;
MeasureOrganizer = {0};
Reaction.Type = {Off};
};
AnyKinEqInterPolDriver DriverAnkleRotZ = {
//AnyRevoluteJoint &Jnt = ...Jnts.Ankle;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\ankle_rot_Z.txt";
// AnyKinMeasure& Lin = ...Drivers.LinAnkleRot;
AnySphericalJoint &Lin = ...Jnts.Ankle;
MeasureOrganizer = {1};
Reaction.Type = {On};
};
//*******************************************************
// Phalanx Driver
//*******************************************************
AnyKinEqInterPolDriver DriverPhalRotX = {
//AnyRevoluteJoint &Jnt = ...Jnts.Phal;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\phal_rot_x.txt";
// AnyKinMeasure& Lin = ...Drivers.LinPhalRot;
AnySphericalJoint &Lin = ...Jnts.Phal;
MeasureOrganizer = {2};
Reaction.Type = {On};
};
AnyKinEqInterPolDriver DriverPhalRotY = {
//AnyRevoluteJoint &Jnt = ...Jnts.Phal;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\phal_rot_Y.txt";
// AnyKinMeasure& Lin = ...Drivers.LinPhalRot;
AnySphericalJoint &Lin = ...Jnts.Phal;
MeasureOrganizer = {0};
Reaction.Type = {Off};
};
AnyKinEqInterPolDriver DriverPhalRotZ = {
//AnyRevoluteJoint &Jnt = ...Jnts.Phal;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\phal_rot_Z.txt";
// AnyKinMeasure& Lin = ...Drivers.LinPhalRot;
AnySphericalJoint &Lin = ...Jnts.Phal;
MeasureOrganizer = {1};
Reaction.Type = {On};
};
//*******************************************************
// Patello Femoral Joint Driver
//*******************************************************
// AnyKinEqInterPolDriver DriverPatRot = {
// //AnyRevoluteJoint &Jnt = ...Jnts.Pat;
// //Type = PiecewiseLinear;
// Type = Bspline;
// BsplineOrder = 4;
// FileName = "drivers\pat_rot.txt";
// AnyKinMeasure& Lin = ...Drivers.LinPatRot;
// MeasureOrganizer = {0};
// Reaction.Type = {On};
// };
AnyKinEqInterPolDriver DriverPatRotX = {
//AnyRevoluteJoint &Jnt = ...Jnts.Phal;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\pat_rot_x.txt";
// AnyKinMeasure& Lin = ...Drivers.LinPatRot;
AnySphericalJoint &Lin = ...Jnts.Pat;
MeasureOrganizer = {2};
Reaction.Type = {On};
};
AnyKinEqInterPolDriver DriverPatRotY = {
//AnyRevoluteJoint &Jnt = ...Jnts.Phal;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\pat_rot_Y.txt";
// AnyKinMeasure& Lin = ...Drivers.LinPatRot;
AnySphericalJoint &Lin = ...Jnts.Pat;
MeasureOrganizer = {0};
Reaction.Type = {On};
};
AnyKinEqInterPolDriver DriverPatRotZ = {
//AnyRevoluteJoint &Jnt = ...Jnts.Phal;
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
FileName = "..\Input\Drivers\pat_rot_Z.txt";
// AnyKinMeasure& Lin = ...Drivers.LinPatRot;
AnySphericalJoint &Lin = ...Jnts.Pat;
MeasureOrganizer = {1};
Reaction.Type = {On};
};
//*******************************************************
// Ground Segment Drivers
//*******************************************************
// The center of pressure has been moved sligthly sideways to obtain realistic
// abduction/adduction moment of the Ankle
AnyKinEqInterPolDriver DriverGroundMTrans = {
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
MeasureOrganizer = {0, 1, 2};
FileName = "..\Input\Drivers\GroundDriver_trans_M.txt";
AnyKinMeasure& ref = .LinGroundMTrans;
Reaction.Type={Off, Off, Off};
};
AnyKinEqSimpleDriver DriverGroundMRot = {
AnyKinRotational &ref1= .RotGroundMRot;
DriverPos={0,0,0};
DriverVel={0,0,0};
Reaction.Type={Off,Off,Off};
MeasureOrganizer = {0, 1, 2};
};
AnyKinEqInterPolDriver DriverGroundPTrans = {
//Type = PiecewiseLinear;
Type = Bspline;
BsplineOrder = 4;
MeasureOrganizer = {0, 1, 2};
FileName = "..\Input\Drivers\GroundDriver_trans_P.txt";
AnyKinMeasure& ref = .LinGroundPTrans;
Reaction.Type={Off, Off, Off};
};
AnyKinEqSimpleDriver DriverGrounPRot = {
AnyKinRotational &ref1= .RotGroundPRot;
DriverPos={0,0,0};
DriverVel={0,0,0};
Reaction.Type={Off,Off,Off};
MeasureOrganizer = {0,1,2};
};
AnyReacForce GroundFootContactForceM = {
AnyKinLinear Lin={
// very very important this ensure that the reaction is between artifical segment and the foot
// and not between foot and globalref if Ref had been equal -1 which is default
Ref=0;
AnySeg &ref1= ....GroundSegmentM;
AnySeg &ref2 = ....Seg.Metatarsus;
// AnySeg &ref2=...Seg.Tibia;
};
AnyKinRotational Rot= {
AnySeg &ref1 = .Lin.ref1;
AnySeg &ref2 = .Lin.ref2;
//AnySeg &ref2 = ...Seg.Tibia;
Type=RotVector;
};
};
AnyReacForce GroundFootContactForceP={
AnyKinLinear Lin={
// very very important this ensure that the reaction is between artifical segment and the foot
// and not between foot and globalref if Ref had been equal -1 which is default
Ref=0;
AnySeg &ref1= ....GroundSegmentP;
AnySeg &ref2= ....Seg.Phalanges;
};
AnyKinRotational Rot= {
AnySeg &ref1 = .Lin.ref1;
AnySeg &ref2 = .Lin.ref2;
Type=RotVector;
};
};
}; // AnyFolder Drivers