--- a +++ b/Application/Examples/ArmCurl/Model/JointsAndDrivers.any @@ -0,0 +1,598 @@ +// + + +AnyFolder Drivers = { + AnyComponentDefinition obj = {}; + // Aliases for convenient referencing + AnyFolder &JntPos=..Mannequin.Posture; + AnyFolder &JntVel=..Mannequin.PostureVel; + AnyFolder &Thorax = ..BodyModel.Trunk.SegmentsThorax.ThoraxSeg; + + AnyFolder &RefHM = Main.Model.BodyModel; + AnyFolder &RefEM = Main.Model.EnvironmentModel ; + + // Use default mannequin drivers to control the hand posture + AnyFolder& HandPostureRight = Main.HumanModel.DefaultMannequinDrivers.HandDriversRight; + AnyFolder& HandPostureLeft= Main.HumanModel.DefaultMannequinDrivers.HandDriversLeft; + + AnyKinEqSimpleDriver PelvisDrv={ + AnyKinRotational PelvisGroundRotMeasure = { + AnyRefFrame &Ref1 = ..RefEM.GlobalRef.PelvisNode; + AnyRefFrame &Ref2 = ..RefHM.Trunk.SegmentsLumbar.PelvisSeg; + Type = RotVector; + }; + AnyKinLinear PelvisGroundLinMeasure = { + AnyRefFrame &Ref1 = ..RefEM.GlobalRef.PelvisNode; + AnyRefFrame &Ref2 = ..RefHM.Trunk.SegmentsLumbar.PelvisSeg; + }; + MeasureOrganizer={0,1,3,4,5}; + DriverPos={0,0,0,0,0}; + DriverVel={0,0,0,0,0}; + }; + + //Make a linear measure between ThoraxRest and thorax + AnyKinEqSimpleDriver ThoraxDrv={ + AnyKinLinear lin={ + Ref=0; + AnySeg &ref1=..RefEM.ThoraxRest; + AnyRefNode &ref2=..RefHM.Trunk.SegmentsThorax.ThoraxSeg.ij; + }; + MeasureOrganizer={1}; + DriverPos={-0.05}; + DriverVel={0.0}; + }; + + + AnyFolder &ref=Main.Model.BodyModel.Trunk; + + + // ************************************ + // Drivers for the spine + // ************************************ + + //Neck driver + AnyKinEqSimpleDriver NeckJntDriver = { + AnyKinMeasure& lb = ...BodyModel.Interface.Trunk.SkullThoraxLateralBending; + AnyKinMeasure& ar = ...BodyModel.Interface.Trunk.SkullThoraxRotation; + AnyKinMeasure& fe = ...BodyModel.Interface.Trunk.SkullThoraxFlexion; + DriverPos = pi/180*{.JntPos.NeckLateralBending, .JntPos.NeckRotation, -1*.JntPos.NeckExtension}; + DriverVel = pi/180*{.JntVel.NeckLateralBending, .JntVel.NeckRotation, -1*.JntVel.NeckExtension}; + Reaction.Type = {Off, Off, Off}; + }; + + + + //Thorax pelvis rotation driver + AnyKinEqSimpleDriver PostureDriver ={ + AnyKinMeasure& Ref2 = ...BodyModel.Interface.Trunk.PelvisThoraxLateralBending; + AnyKinMeasure& Ref3 = ...BodyModel.Interface.Trunk.PelvisThoraxRotation; + AnyKinMeasure& Ref1 = ...BodyModel.Interface.Trunk.PelvisThoraxExtension; + + DriverPos = pi/180*{ + .JntPos.PelvisThoraxLateralBending, + .JntPos.PelvisThoraxRotation, + .JntPos.PelvisThoraxExtension + }; + DriverVel = pi/180*{ + .JntVel.PelvisThoraxLateralBending, + .JntVel.PelvisThoraxRotation, + .JntVel.PelvisThoraxExtension + }; + Reaction.Type = {Off,Off,Off}; + }; + + + + AnyFolder Right ={ + + Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand.Carpals = { + AnyRefNode GripCenter = {sRel = .PalmJoint.sRel + {0.025, -0.02, 0}; }; + }; + + + //Make a linear measure between the hand and the handle + AnyKinEqSimpleDriver HandDrv={ + AnyKinLinear lin={ + AnyRefNode &ref1=...RefEM.Right.Handle.Node2; + AnyRefFrame &ref2=...RefHM.Right.ShoulderArm.Seg.Hand.Carpals.GripCenter; + }; + DriverPos={0,0,0}; + DriverVel={0,0,0}; + }; + + //Make a rotational reaction in the hand + AnyReacForce HandRotCon={ + AnyKinRotational rot={ + AnyRefNode &ref1=...RefEM.Right.Handle.Node2; + AnyRefFrame &ref2=...RefHM.Right.ShoulderArm.Seg.Hand.Carpals.GripCenter; + Type=RotVector; + }; + }; + + + + + //Make a linear measure between ArmRest and elbow + AnyKinEqSimpleDriver ElbowDrv={ + AnyKinLinear lin={ + Ref=0; + AnySeg &ref1=...RefEM.ArmRest; + AnyRefNode &ref2=...RefHM.Right.ShoulderArm.Seg.Humerus.fe; + }; + MeasureOrganizer={1}; + DriverPos={-0.05}; + DriverVel={0.0}; + }; + + //Make a reaction force measure between ArmRest and elbow + AnyReacForce ElbowReactions={ + AnyKinMeasureOrg MeasureOrg={ + AnyKinLinear lin={ + Ref=0; + AnySeg &ref1=....RefEM.ArmRest; +// ref1={AnyDrawRefFrame drw={};}; + AnyRefNode &ref2=....RefHM.Right.ShoulderArm.Seg.Humerus.fe; + }; + MeasureOrganizer={0,2}; + + }; + }; + + //Sterno clavicular joint driver + AnyKinEqSimpleDriver SCDriverRight ={ + AnyKinMeasure& ref1 =....BodyModel.Interface.Right.SternoClavicularProtraction; + AnyKinMeasure& ref2 =....BodyModel.Interface.Right.SternoClavicularElevation; + DriverPos = pi/180*{ + ..JntPos.Right.SternoClavicularProtraction, + ..JntPos.Right.SternoClavicularElevation + }; + DriverVel = { + ..JntVel.Right.SternoClavicularProtraction, + ..JntVel.Right.SternoClavicularElevation + }; + Reaction.Type={Off,Off}; + }; + + + //Wrist driver + AnyKinEqSimpleDriver WristDriverRight ={ + AnyKinMeasure& ref1 =....BodyModel.Interface.Right.WristFlexion; + AnyKinMeasure& ref2 =....BodyModel.Interface.Right.WristAbduction; + DriverPos = pi/180*{ + ..JntPos.Right.WristFlexion, + ..JntPos.Right.WristAbduction + }; + + DriverVel = pi/180*{ + ..JntVel.Right.WristFlexion, + ..JntVel.Right.WristAbduction}; + Reaction.Type={Off,Off}; + }; + + + //Glenohumeral joint + AnyKinEqSimpleDriver GHDriverRight={ + AnyKinMeasure& ref1 =....BodyModel.Interface.Right.GlenohumeralAbduction; + DriverPos=pi/180*{ + ..JntPos.Right.GlenohumeralAbduction //GH joint + }; + DriverVel = pi/180*{ + ..JntVel.Right.GlenohumeralAbduction //GH joint + }; + Reaction.Type={Off}; + }; + //Elbow pronation driver + AnyKinEqSimpleDriver ElbowPSDriverRight={ + AnyKinMeasure& Elbow =....BodyModel.Interface.Right.ElbowPronation; + DriverPos=pi/180*{..JntPos.Right.ElbowPronation }; + DriverVel = pi/180*{..JntVel.Right.ElbowPronation }; + Reaction.Type={Off}; + }; + + + //Hip driver + AnyKinEqSimpleDriver HipDriverRight={ + AnyKinMeasure& ref2 =....BodyModel.Interface.Right.HipExternalRotation; + DriverPos= pi/180*{ + ..JntPos.Right.HipExternalRotation + }; + DriverVel = pi/180*{ + ..JntVel.Right.HipExternalRotation + }; + Reaction.Type={Off}; + + }; + + + };//right + + + AnyFolder Left ={ + + Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand.Carpals = { + AnyRefNode GripCenter = {sRel = .PalmJoint.sRel + {0.025, -0.02, 0}; }; + }; + + //Make a linear measure between the hand and the handle + AnyKinEqSimpleDriver HandDrv={ + AnyKinLinear lin={ + AnyRefNode &ref1=...RefEM.Left.Handle.Node2; + AnyRefFrame &ref2=...RefHM.Left.ShoulderArm.Seg.Hand.Carpals.GripCenter; + }; + DriverPos={0,0,0}; + DriverVel={0,0,0}; + }; + + //Make a rotational reaction in the hand + AnyReacForce HandRotCon={ + AnyKinRotational rot={ + AnyRefNode &ref1=...RefEM.Left.Handle.Node2; + AnyRefFrame &ref2=...RefHM.Left.ShoulderArm.Seg.Hand.Carpals.GripCenter; + Type=RotVector; + }; + }; + + //Make a linear measure between ArmRest and elbow + AnyKinEqSimpleDriver ElbowDrv={ + AnyKinLinear lin={ + Ref=0; + AnySeg &ref1=...RefEM.ArmRest; + AnyRefNode &ref2=...RefHM.Left.ShoulderArm.Seg.Humerus.fe; + }; + MeasureOrganizer={1}; + DriverPos={-0.05}; + DriverVel={0.0}; + }; + + //Make a reaction force measure between ArmRest and elbow + AnyReacForce ElbowReactions={ + AnyKinMeasureOrg MeasureOrg={ + AnyKinLinear lin={ + Ref=0; + AnySeg &ref1=....RefEM.ArmRest; + AnyRefNode &ref2=....RefHM.Left.ShoulderArm.Seg.Humerus.fe; + }; + MeasureOrganizer={0,2}; + + }; + }; + //Sterno clavicular joint driver + AnyKinEqSimpleDriver SCDriverLeft ={ + AnyKinMeasure& ref1 =....BodyModel.Interface.Left.SternoClavicularProtraction; + AnyKinMeasure& ref2 =....BodyModel.Interface.Left.SternoClavicularElevation; + + DriverPos = pi/180*{ + ..JntPos.Left.SternoClavicularProtraction, + ..JntPos.Left.SternoClavicularElevation + }; + + DriverVel = pi/180*{ + ..JntVel.Left.SternoClavicularProtraction, + ..JntVel.Left.SternoClavicularElevation + }; + + Reaction.Type={Off,Off}; + }; + + + + //Wrist driver + AnyKinEqSimpleDriver WristDriverLeft ={ + AnyKinMeasure& ref1 =....BodyModel.Interface.Left.WristFlexion; + AnyKinMeasure& ref2 =....BodyModel.Interface.Left.WristAbduction; + DriverPos = pi/180*{ + ..JntPos.Left.WristFlexion, + ..JntPos.Left.WristAbduction}; + + DriverVel = pi/180*{ + ..JntVel.Left.WristFlexion, + ..JntVel.Left.WristAbduction}; + Reaction.Type={Off,Off}; + }; + + //Glenohumeral joint driver + AnyKinEqSimpleDriver GHDriverLeft={ + AnyKinMeasure& ref1 =....BodyModel.Interface.Left.GlenohumeralAbduction; + DriverPos=pi/180*{ + ..JntPos.Left.GlenohumeralAbduction //GH joint + + }; + DriverVel = pi/180*{ + ..JntVel.Left.GlenohumeralAbduction //GH joint + + }; + Reaction.Type={Off}; + }; + + //Elbow pronation driver + AnyKinEqSimpleDriver ElbowPSDriverLeft={ + AnyKinMeasure& Elbow =....BodyModel.Interface.Left.ElbowPronation; + DriverPos= pi/180*{..JntPos.Left.ElbowPronation }; + DriverVel = pi/180*{..JntVel.Left.ElbowPronation }; + Reaction.Type={Off}; + }; + + //Left hip driver + AnyKinEqSimpleDriver HipDriverLeft={ + + AnyKinMeasure& ref2 =....BodyModel.Interface.Left.HipExternalRotation; + + DriverPos=pi/180*{ + + ..JntPos.Left.HipExternalRotation + + }; + DriverVel = pi/180*{ + + ..JntVel.Left.HipExternalRotation + + }; + Reaction.Type={Off}; + }; + + // + // AnyKinRotational GHRotL = { + // AnyRefNode &scapula_gh = ....BodyModel.Trunk.SegmentsThorax.ThoraxSeg.ij; + // AnyRefNode &humerus_gh = ....BodyModel.Left.ShoulderArm.Seg.Humerus.gh; + // Type = RotAxesAngles; + // Axis1 = z; + // Axis2 = x; + // Axis3 = y; + // }; + // + // + // // This kinematic measure compiles all the degrees of freedom controlled by the + // // manikin. + // AnyKinMeasureOrg Left = { + // + // // Arm movements + // AnyKinRotational &GH = .GHRotL; + // + // AnyRevoluteJoint &Elbow =....BodyModel.Left.ShoulderArm.Jnt.HumeroUlnarJoint; + // + // // Forearm pronation/supination + // AnyKinMeasure& ForearmPronat = ....BodyModel.Interface.Left.ElbowPronation; + // + // + // // Leg movements + // AnySphericalJoint &Hip = ....BodyModel.Left.Leg.Jnt.Hip; + // AnyRevoluteJoint &Knee = ....BodyModel.Left.Leg.Jnt.Knee; + // AnyUniversalJoint &Ankle = ....BodyModel.Left.Leg.Jnt.Ankle; + // + // + // MeasureOrganizer={0,4,7}; + // + // }; + // + // + // AnyKinEqSimpleDriver DriverLeft ={ + // AnyKinMeasure& AllDofs = .Left; + // DriverPos = pi/180*{ + // 0, //GH abduction joint + // -160,//.JntPos.Right.ElbowPronationSupination//not in use + // + // 220//..JntPos.Left.HipExternalExternalRotation + // + // }; + // + // // This is static posture, so all velocities are zero. + // DriverVel = pi/180*{ + // 0, + // 0, + // 0 + // + // }; + // + // Reaction.Type = { + // Off,Off,Off + // }; + // }; + }; //Left + + + + // Place the right toe and heel on the ground + AnyKinEq RToeGroundConstraint ={ + AnyKinLinear ToePos = { + AnyRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode.Right; + AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeLateralContactNode; + }; + MeasureOrganizer = {0,1,2}; // Only the y coordinate + Reaction.Type={On,On,On}; + }; + + AnyKinEq RToePGroundConstraint ={ + AnyKinLinear ToePos = { + AnyRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode; + AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeMedialContactNode; + }; + MeasureOrganizer = {1}; // Only the y coordinate + Reaction.Type={Off}; + }; + + AnyKinEqSimpleDriver RHeelGroundConstraint ={ + AnyKinLinear HeelPos = { + AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode; + AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.HeelContactNode; + }; + MeasureOrganizer = {1}; // Only the y coordinate + DriverPos = {0.0}; + DriverVel = {0}; + Reaction.Type = {Off}; // Provide ground reaction forces + }; + + // Place the left toe and heel on the ground + AnyKinEq LToeGroundConstraint ={ + AnyKinLinear ToePos = { + AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode.Left; + AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeLateralContactNode; + }; + MeasureOrganizer = {0,1,2}; // Only the y coordinate + Reaction.Type={On,On,On}; + }; + + + AnyKinEq LToePGroundConstraint ={ + AnyKinLinear ToePos = { + AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode; + AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeMedialContactNode; + }; + MeasureOrganizer = {1}; // Only the y coordinate + Reaction.Type={Off}; + }; + + AnyKinEqSimpleDriver LHeelGroundConstraint ={ + AnyKinLinear HeelPos = { + AnyRefNode &Ground = Main.Model.EnvironmentModel.GlobalRef.FloorNode; + AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.HeelContactNode; + }; + MeasureOrganizer = {1}; // Only the y coordinate + DriverPos = {0.0}; + DriverVel = {0}; + Reaction.Type = {Off}; // Do not Provide ground reaction + }; + + + + + + + AnyVar Strength=2500; + AnyVar FrictionStrength=400; + + AnyFolder HeelSupportLeft = { + AnyComponentDefinition obj = { + SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)"; + SubGroupRegexReplace = "$1"; + }; + AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef; + AnyRefNode &EndNode = Main.Model.BodyModel.Left.Leg.Seg.Foot.HeelJoint; + //The terms push and pull are determined wrt. the coordinate system of the StartNode! + //StrenghtOfReactionsLin = {XPush,XPull,YPush,YPull,ZPush,ZPull} + AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles + AnyFolder &DrawRef=Main.DrawSettings; + AnyVar ScaleFactor=1; + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any" + // #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" + + }; + + + AnyFolder ToeSupportLeft = { + AnyComponentDefinition obj = { + SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)"; + SubGroupRegexReplace = "$1"; + }; + AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef; + AnyRefNode &EndNode = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeJoint; + + //The terms push and pull are determined wrt. the coordinate system of the StartNode! + //StrenghtOfReactionsLin = {XPush,XPull,YPush,YPull,ZPush,ZPull} + AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles + AnyFolder &DrawRef=Main.DrawSettings; + AnyVar ScaleFactor=1; + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any" + //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" + }; + + + AnyFolder ToeSupportPosteriorLeft = { + AnyComponentDefinition obj = { + SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)"; + SubGroupRegexReplace = "$1"; + }; + AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef; + AnyRefNode &EndNode = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeMedialContactNode; + + //The terms push and pull are determined wrt. the coordinate system of the StartNode! + //StrenghtOfReactionsLin = {XPush,XPull,YPush,YPull,ZPush,ZPull} + AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles + AnyFolder &DrawRef=Main.DrawSettings; + AnyVar ScaleFactor=1; + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any" + //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" + }; + + + + + AnyFolder HeelSupportRight = { + AnyComponentDefinition obj = { + SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)"; + SubGroupRegexReplace = "$1"; + }; + AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef; + AnyRefNode &EndNode = Main.Model.BodyModel.Right.Leg.Seg.Foot.HeelJoint; + //The terms push and pull are determined wrt. the coordinate system of the StartNode! + //StrenghtOfReactionsLin = {XPush,XPull,YPush,YPull,ZPush,ZPull} + AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles + AnyFolder &DrawRef=Main.DrawSettings; + AnyVar ScaleFactor=1; + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any" + //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" + }; + + + AnyFolder ToeSupportRight = { + AnyComponentDefinition obj = { + SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)"; + SubGroupRegexReplace = "$1"; + }; + AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef; + AnyRefNode &EndNode = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeJoint; + + //The terms push and pull are determined wrt. the coordinate system of the StartNode! + //StrenghtOfReactionsLin = {XPush,XPull,YPush,YPull,ZPush,ZPull} + AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles + AnyFolder &DrawRef=Main.DrawSettings; + AnyVar ScaleFactor=1; + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any" + //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" + }; + + + + AnyFolder ToeSupportPRight = { + AnyComponentDefinition obj = { + SubGroupRegexSearch = "([_[:alnum:]]+?)\.([_[:alnum:]]+?)"; + SubGroupRegexReplace = "$1"; + }; + AnyFixedRefFrame &StartNode = Main.Model.EnvironmentModel.GlobalRef; + AnyRefNode &EndNode = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeMedialContactNode; + + //The terms push and pull are determined wrt. the coordinate system of the StartNode! + //StrenghtOfReactionsLin = {XPush,XPull,YPush,YPull,ZPush,ZPull} + AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles + AnyFolder &DrawRef=Main.DrawSettings; + AnyVar ScaleFactor=1; + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/XPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPush.any" + //#include "<ANYBODY_PATH_MODELUTILS>/Reactions/YPull.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPush.any" + #include "<ANYBODY_PATH_MODELUTILS>/Reactions/ZPull.any" + }; + + +}; +