223 lines (181 with data), 7.5 kB
/* Definition of Driver for the segments in the lumbar spine. From PelvisL5 to T12L1
Mark de Zee
*/
AnyFolder &RefHM = Main.HumanModel.BodyModel;
AnyFolder Joints={
AnyRevoluteJoint GroundPelvisJnt = {
Axis = z;
AnyRefNode &GroundNode = Main.Model.EnvironmentModel.GlobalRef.GroundNode;
AnyRefNode &PelvisNode = ..RefHM.Trunk.SegmentsLumbar.PelvisSeg.GroundPelvisJntNode;
};
};
AnyFolder DriversLumbar = {
AnyKinEqSimpleDriver GroundPelvisJntDriver = {
AnyRevoluteJoint &GroundPelvisJoint = ..Joints.GroundPelvisJnt;
DriverPos = {0.0*pi};
DriverVel = {0.0};
Reaction.Type = {On};
};
//Thorax pelvis rotation driver
AnyKinEqSimpleDriver PostureDriver ={
AnyKinMeasure& Ref2 = ..RefHM.Interface.Trunk.PelvisThoraxLateralBending;
AnyKinMeasure& Ref3 = ..RefHM.Interface.Trunk.PelvisThoraxRotation;
AnyKinMeasure& Ref1 = ..RefHM.Interface.Trunk.PelvisThoraxExtension;
DriverPos = pi/180*{0.0,0.0,0.0};
DriverVel = pi/180*{0.0,0.0,0.0};
Reaction.Type = {Off,Off,Off};
};
/// These reaction forces are supporting the lumbar spine.
/// This is necessary, because there are no muscles.
AnyReacForce SacrumPelvisReaction = {
AnyJoint &u2 = ..RefHM.Trunk.JointsLumbar.L5SacrumJnt;
AnyJoint &u3 = ..RefHM.Trunk.JointsLumbar.L4L5Jnt;
AnyJoint &u4 = ..RefHM.Trunk.JointsLumbar.L3L4Jnt;
AnyJoint &u5 = ..RefHM.Trunk.JointsLumbar.L2L3Jnt;
AnyJoint &u6 = ..RefHM.Trunk.JointsLumbar.L1L2Jnt;
AnyJoint &u7 = ..RefHM.Trunk.JointsLumbar.T12L1Jnt;
};
};
AnyFolder DriversCervical = {
AnyKinEqSimpleDriver CervicalDriver ={
AnyKinMeasure& Ref1 = ..RefHM.Interface.Trunk.SkullThoraxFlexion;
AnyKinMeasure& Ref2 = ..RefHM.Interface.Trunk.SkullThoraxLateralBending;
AnyKinMeasure& Ref3 = ..RefHM.Interface.Trunk.SkullThoraxRotation;
DriverPos = pi/180*{0, 0, 0};
DriverVel = pi/180*{0, 0, 0};
Reaction.Type = {Off, Off, Off};
};
};
AnyFolder DriversArms={
// Aliases for convenient referencing
AnyFolder &JntPos=..Mannequin.Posture;
AnyFolder &JntVel=..Mannequin.PostureVel;
//Sterno clavicular joint driver
AnyKinEqSimpleDriver SCDriverRight ={
AnyKinMeasure& ref1 =..RefHM.Interface.Right.SternoClavicularProtraction;
AnyKinMeasure& ref2 =..RefHM.Interface.Right.SternoClavicularElevation;
DriverPos = pi/180*{
.JntPos.Right.SternoClavicularProtraction,
.JntPos.Right.SternoClavicularElevation
};
DriverVel = {
.JntVel.Right.SternoClavicularProtraction,
.JntVel.Right.SternoClavicularElevation
};
Reaction.Type={Off,Off};
};
AnyReacForce SCReacForceRight = {
AnyKinMeasure& ref1 =..RefHM.Interface.Right.SternoClavicularProtraction;
AnyKinMeasure& ref2 =..RefHM.Interface.Right.SternoClavicularElevation;
AnyKinMeasure& ref3 =..RefHM.Interface.Right.SternoClavicularAxialRotation;
};
//Glenohumeral joint
AnyKinEqSimpleDriver GHDriverRight={
AnyKinMeasure& ref1 =..RefHM.Interface.Right.GlenohumeralAbduction;
AnyKinMeasure& ref2 =..RefHM.Interface.Right.GlenohumeralFlexion;
AnyKinMeasure& ref3 =..RefHM.Interface.Right.GlenohumeralExternalRotation;
DriverPos=pi/180*{
.JntPos.Right.GlenohumeralAbduction, //GH joint
.JntPos.Right.GlenohumeralFlexion, //GH joint
.JntPos.Right.GlenohumeralExternalRotation //GH joint
};
DriverVel = pi/180*{
.JntVel.Right.GlenohumeralAbduction, //GH joint
.JntVel.Right.GlenohumeralFlexion, //GH joint
.JntVel.Right.GlenohumeralExternalRotation //GH joint
};
//Reaction.Type={Off,Off,Off};
Reaction.Type={On,On,On};
};
//Elbow flexion driver
AnyKinEqSimpleDriver ElbowFlexionDriverRight={
AnyKinMeasureOrg &Elbow =..RefHM.Interface.Right.ElbowFlexion;
DriverPos=pi/180*{.JntPos.Right.ElbowFlexion};
DriverVel = pi/180*{.JntVel.Right.ElbowFlexion};
Reaction.Type={On};
};
//Elbow pronation driver
AnyKinEqSimpleDriver ElbowPronationDriverRight={
AnyKinMeasure& Elbow =..RefHM.Interface.Right.ElbowPronation;
DriverPos = pi/180*{.JntPos.Right.ElbowPronation };
DriverVel=pi/180*{.JntVel.Right.ElbowPronation };
Reaction.Type={On};
};
//Wrist driver
AnyKinEqSimpleDriver WristDriverRight ={
AnyKinMeasure& ref1 =..RefHM.Interface.Right.WristFlexion;
AnyKinMeasure& ref2 =..RefHM.Interface.Right.WristAbduction;
DriverPos = pi/180*{
.JntPos.Right.WristFlexion,
.JntPos.Right.WristAbduction
};
DriverVel = pi/180*{
.JntVel.Right.WristFlexion,
.JntVel.Right.WristAbduction};
Reaction.Type={On,On};
};
//Sterno clavicular joint driver
AnyKinEqSimpleDriver SCDriverLeft ={
AnyKinMeasure& ref1 =..RefHM.Interface.Left.SternoClavicularProtraction;
AnyKinMeasure& ref2 =..RefHM.Interface.Left.SternoClavicularElevation;
DriverPos = pi/180*{
.JntPos.Left.SternoClavicularProtraction,
.JntPos.Left.SternoClavicularElevation
};
DriverVel = {
.JntVel.Left.SternoClavicularProtraction,
.JntVel.Left.SternoClavicularElevation
};
Reaction.Type={Off,Off};
};
AnyReacForce SCReacForceLeft= {
AnyKinMeasure& ref1 =..RefHM.Interface.Left.SternoClavicularProtraction;
AnyKinMeasure& ref2 =..RefHM.Interface.Left.SternoClavicularElevation;
AnyKinMeasure& ref3 =..RefHM.Interface.Left.SternoClavicularAxialRotation;
};
//Glenohumeral joint
AnyKinEqSimpleDriver GHDriverLeft={
AnyKinMeasure& ref1 =..RefHM.Interface.Left.GlenohumeralAbduction;
AnyKinMeasure& ref2 =..RefHM.Interface.Left.GlenohumeralFlexion;
AnyKinMeasure& ref3 =..RefHM.Interface.Left.GlenohumeralExternalRotation;
DriverPos=pi/180*{
.JntPos.Left.GlenohumeralAbduction, //GH joint
.JntPos.Left.GlenohumeralFlexion, //GH joint
.JntPos.Left.GlenohumeralExternalRotation //GH joint
};
DriverVel = pi/180*{
.JntVel.Left.GlenohumeralAbduction, //GH joint
.JntVel.Left.GlenohumeralFlexion, //GH joint
.JntVel.Left.GlenohumeralExternalRotation //GH joint
};
//Reaction.Type={Off,Off,Off};
Reaction.Type={On,On,On};
};
//Elbow flexion driver
AnyKinEqSimpleDriver ElbowFlexionDriverLeft={
AnyKinMeasureOrg &Elbow =..RefHM.Interface.Left.ElbowFlexion;
DriverPos=pi/180*{.JntPos.Left.ElbowFlexion};
DriverVel = pi/180*{.JntVel.Left.ElbowFlexion};
Reaction.Type={On};
};
//Elbow pronation driver
AnyKinEqSimpleDriver ElbowPronationDriverLeft={
AnyKinMeasure& Elbow =..RefHM.Interface.Left.ElbowPronation;
DriverPos = pi/180*{.JntPos.Left.ElbowPronation };
DriverVel=pi/180*{.JntVel.Left.ElbowPronation };
Reaction.Type={On};
};
//Wrist driver
AnyKinEqSimpleDriver WristDriverLeft ={
AnyKinMeasure& ref1 =..RefHM.Interface.Left.WristFlexion;
AnyKinMeasure& ref2 =..RefHM.Interface.Left.WristAbduction;
DriverPos = pi/180*{
.JntPos.Left.WristFlexion,
.JntPos.Left.WristAbduction
};
DriverVel = pi/180*{
.JntVel.Left.WristFlexion,
.JntVel.Left.WristAbduction};
Reaction.Type={On,On};
};
};