[38ba34]: / Application / Examples / ArmCurl / Model / JointsAndDrivers.any

Download this file

599 lines (495 with data), 21.6 kB

//


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" 
  };
  
  
};