Switch to side-by-side view

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