Download this file

561 lines (457 with data), 23.5 kB

/**    Drivers for a box lift model. 
       The posture is controlled by the Mannequin.any file. 
*/
AnyFolder Joints = {
  
  
  AnyKinEqSimpleDriver RHBoxDriver = {
    AnyRevoluteJoint RHBox = {
      AnyRefNode &Box = Main.Model.EnvironmentModel.Box.Right;
      AnySeg &Hand = ....BodyModel.Right.ShoulderArm.Seg.Glove;
      Axis = z;
      Constraints.Reaction.Type={Off,Off,Off,Off,Off};
    };
    DriverPos = {-10}*pi/180;
    DriverVel = {0};
    Reaction.Type = {Off};
    
  };
  AnyKinEqSimpleDriver LHBoxDriver = {
    AnyRevoluteJoint LHBox = {
      AnyRefNode &Box = Main.Model.EnvironmentModel.Box.Left;
      AnySeg &Hand = Main.Model.BodyModel.Left.ShoulderArm.Seg.Glove;
      Axis = z;
      Constraints.Reaction.Type={Off,Off,Off,Off,Off};
    };
    DriverPos = {-10}*pi/180;
    DriverVel = {0};
    Reaction.Type = {Off};
  };
  
  AnyReacForce RHBoxRot ={
    AnyKinRotational Rot = {
      AnyRefNode &Box = Main.Model.EnvironmentModel.Box.Right;
      AnySeg &Hand = Main.Model.BodyModel.Right.ShoulderArm.Seg.Glove;
      Type=RotVector;  };
  };
  
  AnyReacForce LHBoxRot={
    AnyKinRotational Rot = {
      AnyRefNode &Box = Main.Model.EnvironmentModel.Box.Left;
      AnySeg &Hand = Main.Model.BodyModel.Left.ShoulderArm.Seg.Glove;
      Type=RotVector;
      
    };
  };
  
  
  AnyVar FrictionStrength=200;
  AnyVar Strength =4000;
  
  AnyFolder HandSupportLeft = {
    AnyRefNode &StartNode = Main.Model.EnvironmentModel.Box.Left2;
    AnySeg &EndNode = Main.Model.BodyModel.Left.ShoulderArm.Seg.Glove;    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
    
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
    AnyFolder &DrawRef=Main.DrawSettings;
    AnyVar ScaleFactor =0.5;
    #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 HandSupportRight = {
    AnyRefNode &StartNode = Main.Model.EnvironmentModel.Box.Right2;
    
    AnySeg &EndNode = Main.Model.BodyModel.Right.ShoulderArm.Seg.Glove;    //The terms push and pull are determined wrt. the coordinate system of the StartNode!
    
    AnyVector StrengthOfReactionsLin = {.FrictionStrength,.FrictionStrength,.Strength,.FrictionStrength,.FrictionStrength,.FrictionStrength}; //List of strengths for the linear muscles
    AnyFolder &DrawRef=Main.DrawSettings;
    AnyVar ScaleFactor =0.5;
    #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 Drivers = {
  
  // Aliases for convenient referencing
  AnyFolder &JntPos=..Mannequin.Posture;  
  AnyFolder &JntVel=..Mannequin.PostureVel;  
  AnyFolder &Thorax = ..BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
  AnyFolder &LegR = ..BodyModel.Right.Leg;
  AnyFolder &LegL = ..BodyModel.Left.Leg;
  AnyFolder &RefHM = Main.Model.BodyModel;
  AnyFolder &ref=Main.Model.BodyModel.Trunk;
  
  
  
  AnyKinEqSimpleDriver BoxRot = {
    AnyKinRotational Rot = {
      Type = RotAxesAngles;
      AnyFixedRefFrame &ground = Main.Model.EnvironmentModel.GlobalRef;
      AnySeg &box = Main.Model.EnvironmentModel.Box;
    };
    MeasureOrganizer = {0,1,2};
    DriverPos = {0,0,0};
    DriverVel = {0,0,0};
    Reaction.Type = {Off,Off,Off};
  };
  
//  AnyKinEqSimpleDriver Box = {
//    AnyKinLinear pos = {
//      AnyFixedRefFrame &ground = Main.Model.EnvironmentModel.GlobalRef;
//      AnySeg &box = Main.Model.EnvironmentModel.Box;
//    };
//    DriverPos = {0.53, 1.35, 0};
//    DriverVel = {0,0,0};
//    Reaction.Type = {Off,Off,Off};
//  };
  
  
  
  // Position the Ankles right above the z axis
  AnyKinEqSimpleDriver RAnkleX = {
    AnyKinLinear AnklePos = {
      AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
      AnyRefNode &Ankle = ..LegR.Seg.Talus.AnkleJoint;
    };
    MeasureOrganizer = {0};  // Only the x coordinate
    DriverPos = {0.0};
    DriverVel = {0.0};
    Reaction.Type = {Off};
  };
  
  AnyKinEqSimpleDriver LAnkleX ={
    AnyKinLinear AnklePos = {
      AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
      AnyRefNode &Ankle = ..LegL.Seg.Talus.AnkleJoint;
    };
    MeasureOrganizer = {0};  // Only the x coordinate
    DriverPos = {0.0};
    DriverVel = {0.0};
    Reaction.Type = {Off};
  };
  
  //Constrain the collective CoM to be right above the GlobalRef
  AnyKinEqSimpleDriver CoMDriver = {
    AnyKinCoM CoM = {
      AnyFolder &Body = Main.Model.BodyModel;
      AnyFolder &Environment = Main.Model.EnvironmentModel;      
    };
    MeasureOrganizer = {0,2};  // Only the x and z directions
    DriverPos = {0.1, 0};
    DriverVel = {0.0, 0.1};
    Reaction.Type = {Off,Off};
  };  
  
  //Constrain the feet to be symmetrical about the xy plane
  AnyKinEqSimpleDriver FeetXDriver = {
    AnyKinCoM CoM = {
      AnySeg &rf = Main.Model.BodyModel.Right.Leg.Seg.Foot;
      AnySeg &ff = Main.Model.BodyModel.Left.Leg.Seg.Foot;
    };
    MeasureOrganizer = {2};  // Only the z direction
    DriverPos = {0};
    DriverVel = {0};
    Reaction.Type = {Off};  // Carried by friction muscles.
  };
  
  
  // ************************************
  // 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};  
//  };  
  
  
  // ************************************
  // Drivers for the right arm
  // ************************************
  
  
//  //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.WristAbduction       };
//    DriverVel = pi/180*{         .JntVel.Right.WristAbduction       };
//    Reaction.Type={Off};
//  };
//  
  // ************************************
  // Drivers for the left arm
  // ************************************
  
//  //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};
//  };
  
  
  
  // ************************************
  // Drivers for the right leg
  // ************************************
  
//  //Hip driver 
//  AnyKinEqSimpleDriver HipDriverRight={
//    AnyKinMeasure& ref1 =...BodyModel.Interface.Right.HipFlexion;
//    AnyKinMeasure& ref2 =...BodyModel.Interface.Right.HipExternalRotation;
//    AnyKinMeasure& ref3 =...BodyModel.Interface.Right.HipAbduction;
//    DriverPos= pi/180*{
//      .JntPos.Right.HipFlexion,
//      .JntPos.Right.HipExternalRotation,
//      .JntPos.Right.HipAbduction
//    };    
//    DriverVel = pi/180*{
//      .JntVel.Right.HipFlexion,
//      .JntVel.Right.HipExternalRotation,
//      .JntVel.Right.HipAbduction
//    };    
//    Reaction.Type={Off,Off,Off};
//    
//  };
//  
//  //Knee driver
//  AnyKinEqSimpleDriver KneeDriverRight={
//    AnyKinMeasureOrg  &Knee = ...BodyModel.Interface.Right.KneeFlexion;
//    DriverPos=pi/180*{.JntPos.Right.KneeFlexion};  
//    DriverVel = pi/180*{.JntVel.Right.KneeFlexion};  
//    Reaction.Type={Off};
//  };
//  
//  //Ankle driver
//  AnyKinEqSimpleDriver AnkleDriverRight={
//    AnyKinMeasure& ref2=...BodyModel.Interface.Right.AnkleEversion;
//    DriverPos = pi/180*{      .JntPos.Right.SubTalarEversion    };  
//    DriverVel=pi/180*{      .JntVel.Right.SubTalarEversion    };  
//    Reaction.Type={Off};
//  };
  
  
  
  
  // ************************************
  // Drivers for the left leg
  // ************************************
  
//  //Hip driver 
//  AnyKinEqSimpleDriver HipDriverLeft={
//    AnyKinMeasure& ref1 =...BodyModel.Interface.Left.HipFlexion;
//    AnyKinMeasure& ref2 =...BodyModel.Interface.Left.HipExternalRotation;
//    AnyKinMeasure& ref3 =...BodyModel.Interface.Left.HipAbduction;
//    DriverPos= pi/180*{
//      .JntPos.Left.HipFlexion,
//      .JntPos.Left.HipExternalRotation,
//      .JntPos.Left.HipAbduction
//    };    
//    DriverVel = pi/180*{
//      .JntVel.Left.HipFlexion,
//      .JntVel.Left.HipExternalRotation,
//      .JntVel.Left.HipAbduction
//    };    
//    Reaction.Type={Off,Off,Off};
//    
//  };
//  
//  //Knee driver
//  AnyKinEqSimpleDriver KneeDriverLeft={
//    AnyKinMeasureOrg  &Knee = ...BodyModel.Interface.Left.KneeFlexion;
//    DriverPos=pi/180*{.JntPos.Left.KneeFlexion};  
//    DriverVel = pi/180*{.JntVel.Left.KneeFlexion};  
//    Reaction.Type={Off};
//  };
//  
//  //Ankle driver
//  AnyKinEqSimpleDriver AnkleDriverLeft={
//    AnyKinMeasure& ref2=...BodyModel.Interface.Left.AnkleEversion;
//    DriverPos = pi/180*{      .JntPos.Left.SubTalarEversion    };  
//    DriverVel=pi/180*{      .JntVel.Left.SubTalarEversion    };  
//    Reaction.Type={Off};
//  };
  
  
  
  // Place the right toe and heel on the ground
  AnyKinEq RToeGroundConstraint ={
    AnyKinLinear ToePos = {
      AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
      AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.ToeJoint;
    };
    MeasureOrganizer = {1};  // Only the y coordinate
    Reaction.Type={Off};
  };
  
  AnyKinEqSimpleDriver RHeelGroundConstraint ={
    AnyKinLinear HeelPos = {
      AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
      AnyRefNode &Ball = Main.Model.BodyModel.Right.Leg.Seg.Foot.HeelJoint;
    };
    MeasureOrganizer = {1};  // Only the y coordinate
    DriverPos = {0.0};
    DriverVel = {0.0};
    Reaction.Type = {Off};   // Provide ground reaction forces
  };
  
  // Place the left toe and heel on the ground
  AnyKinEq LToeGroundConstraint ={
    AnyKinLinear ToePos = {
      AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
      AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.ToeJoint;
    };
    MeasureOrganizer = {1};  // Only the y coordinate
    Reaction.Type={Off};
  };
  
  AnyKinEqSimpleDriver LHeelGroundConstraint ={
    AnyKinLinear HeelPos = {
      AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
      AnyRefNode &Ball = Main.Model.BodyModel.Left.Leg.Seg.Foot.HeelJoint;
    };
    MeasureOrganizer = {1};  // Only the y coordinate
    DriverPos = {0.0};
    DriverVel =  {0.0};
    Reaction.Type = {Off};  // Do not Provide ground reaction
  };  
  
  
  
  AnyFolder ConditionalContact={
    AnyVar StaticFrictionCoefficient=0.8;
    AnyVar Strength=2000;
    
    AnyFolder ToeLateralContactNodeLeft= {
      
      AnyRefFrame &TargetObject=  ..LegL.Seg.Foot.ToeLateralContactNode;//Location where the force is applied
      AnyRefFrame &BaseObject=Main.Model.EnvironmentModel.GlobalRef; //Object which delivers the forces  
      AnyRefFrame &StrengthObject=TargetObject; //Node used for strength measurement, occasionally this is different from the target object
      
      AnyFolder &DrawRef=Main.DrawSettings; //reference to the folder which contains drawsettings
      //low limit for the strength measure function, if the distance measured along Direction[0] is below this val. the strength will be zero (negative)
      AnyVar UserDefinedLimitLow=-0.05; 
      //high limit for the strength measure function, if the distance measured along Direction[0] is above this val. the strength will be zero
      AnyVar UserDefinedLimitHigh=0.05; 
      
      //high limit for the strength measure function, if the radius measured along the plane with Direction[0] as normal is above this val. the strength will be zero
      AnyVar UserDefinedRadiusLimit=0.4; 
      
      AnyVar Strength =.Strength;  //strength of muscles
      AnyVar StaticFrictionCoefficient=.StaticFrictionCoefficient; //Friction coefficient
      AnyVar ScaleFactor =1; //scale factor for draw vectors it can be set differently than by the drawsettings
      
      
      AnyIntArray Direction={1,0,2}; //first element gives normal direction
      #include  "<ANYBODY_PATH_MODELUTILS>\FrictionContactMuscles\ContactSurfaceLinPush.any"
    };
    
    
    AnyFolder ToeMedialContactNodeLeft= {
      AnyRefNode &TargetObject = ..LegL.Seg.Foot.ToeMedialContactNode;
      AnyRefFrame &BaseObject=Main.Model.EnvironmentModel.GlobalRef; //Object which delivers the forces  
      AnyRefFrame &StrengthObject=TargetObject; //Node used for strength measurement, occasionally this is different from the target object
      
      AnyFolder &DrawRef=Main.DrawSettings; //reference to the folder which contains drawsettings
      //low limit for the strength measure function, if the distance measured along Direction[0] is below this val. the strength will be zero (negative)
      AnyVar UserDefinedLimitLow=-0.05; 
      //high limit for the strength measure function, if the distance measured along Direction[0] is above this val. the strength will be zero
      AnyVar UserDefinedLimitHigh=0.05; 
      
      //high limit for the strength measure function, if the radius measured along the plane with Direction[0] as normal is above this val. the strength will be zero
      AnyVar UserDefinedRadiusLimit=0.4; 
      
      AnyVar Strength =.Strength;  //strength of muscles
      AnyVar StaticFrictionCoefficient=.StaticFrictionCoefficient; //Friction coefficient
      AnyVar ScaleFactor =1; //scale factor for draw vectors it can be set differently than by the drawsettings
      
      
      AnyIntArray Direction={1,0,2}; //first element gives normal direction
      #include  "<ANYBODY_PATH_MODELUTILS>\FrictionContactMuscles\ContactSurfaceLinPush.any"
      
    };
    
    
    AnyFolder HeelSupportLeft = {
      AnyRefNode &TargetObject = ..LegL.Seg.Foot.HeelJoint;
      AnyRefFrame &BaseObject=Main.Model.EnvironmentModel.GlobalRef; //Object which delivers the forces  
      AnyRefFrame &StrengthObject=TargetObject; //Node used for strength measurement, occasionally this is different from the target object
      
      AnyFolder &DrawRef=Main.DrawSettings; //reference to the folder which contains drawsettings
      //low limit for the strength measure function, if the distance measured along Direction[0] is below this val. the strength will be zero (negative)
      AnyVar UserDefinedLimitLow=-0.05; 
      //high limit for the strength measure function, if the distance measured along Direction[0] is above this val. the strength will be zero
      AnyVar UserDefinedLimitHigh=0.05; 
      
      //high limit for the strength measure function, if the radius measured along the plane with Direction[0] as normal is above this val. the strength will be zero
      AnyVar UserDefinedRadiusLimit=0.4; 
      
      AnyVar Strength =.Strength;  //strength of muscles
      AnyVar StaticFrictionCoefficient=.StaticFrictionCoefficient; //Friction coefficient
      AnyVar ScaleFactor =1; //scale factor for draw vectors it can be set differently than by the drawsettings
      
      
      AnyIntArray Direction={1,0,2}; //first element gives normal direction
      #include  "<ANYBODY_PATH_MODELUTILS>\FrictionContactMuscles\ContactSurfaceLinPush.any"
      
    };
    
    AnyFolder ToeMedialContactNodeRight = {
      AnyRefNode &TargetObject = ..LegR.Seg.Foot.ToeMedialContactNode;
      AnyRefFrame &BaseObject=Main.Model.EnvironmentModel.GlobalRef; //Object which delivers the forces  
      AnyRefFrame &StrengthObject=TargetObject; //Node used for strength measurement, occasionally this is different from the target object
      
      AnyFolder &DrawRef=Main.DrawSettings; //reference to the folder which contains drawsettings
      //low limit for the strength measure function, if the distance measured along Direction[0] is below this val. the strength will be zero (negative)
      AnyVar UserDefinedLimitLow=-0.05; 
      //high limit for the strength measure function, if the distance measured along Direction[0] is above this val. the strength will be zero
      AnyVar UserDefinedLimitHigh=0.05; 
      
      //high limit for the strength measure function, if the radius measured along the plane with Direction[0] as normal is above this val. the strength will be zero
      AnyVar UserDefinedRadiusLimit=0.4; 
      
      AnyVar Strength =.Strength;  //strength of muscles
      AnyVar StaticFrictionCoefficient=.StaticFrictionCoefficient; //Friction coefficient
      AnyVar ScaleFactor =1; //scale factor for draw vectors it can be set differently than by the drawsettings
      
      
      AnyIntArray Direction={1,0,2}; //first element gives normal direction
      #include  "<ANYBODY_PATH_MODELUTILS>\FrictionContactMuscles\ContactSurfaceLinPush.any"
    };
    
    AnyFolder ToeLateralContactNodeRight = {
      AnyRefNode &TargetObject  = ..LegR.Seg.Foot.ToeLateralContactNode;
      AnyRefFrame &BaseObject=Main.Model.EnvironmentModel.GlobalRef; //Object which delivers the forces  
      AnyRefFrame &StrengthObject=TargetObject; //Node used for strength measurement, occasionally this is different from the target object
      
      AnyFolder &DrawRef=Main.DrawSettings; //reference to the folder which contains drawsettings
      //low limit for the strength measure function, if the distance measured along Direction[0] is below this val. the strength will be zero (negative)
      AnyVar UserDefinedLimitLow=-0.05; 
      //high limit for the strength measure function, if the distance measured along Direction[0] is above this val. the strength will be zero
      AnyVar UserDefinedLimitHigh=0.05; 
      
      //high limit for the strength measure function, if the radius measured along the plane with Direction[0] as normal is above this val. the strength will be zero
      AnyVar UserDefinedRadiusLimit=0.4; 
      
      AnyVar Strength =.Strength;  //strength of muscles
      AnyVar StaticFrictionCoefficient=.StaticFrictionCoefficient; //Friction coefficient
      AnyVar ScaleFactor =1; //scale factor for draw vectors it can be set differently than by the drawsettings
      
      
      AnyIntArray Direction={1,0,2}; //first element gives normal direction
      #include  "<ANYBODY_PATH_MODELUTILS>\FrictionContactMuscles\ContactSurfaceLinPush.any"
    };
    
    
    
    AnyFolder HeelSupportRight = {
      
      AnyRefNode &TargetObject = ..LegR.Seg.Foot.HeelJoint;
      AnyRefFrame &BaseObject=Main.Model.EnvironmentModel.GlobalRef; //Object which delivers the forces  
      AnyRefFrame &StrengthObject=TargetObject; //Node used for strength measurement, occasionally this is different from the target object
      
      AnyFolder &DrawRef=Main.DrawSettings; //reference to the folder which contains drawsettings
      //low limit for the strength measure function, if the distance measured along Direction[0] is below this val. the strength will be zero (negative)
      AnyVar UserDefinedLimitLow=-0.05; 
      //high limit for the strength measure function, if the distance measured along Direction[0] is above this val. the strength will be zero
      AnyVar UserDefinedLimitHigh=0.05; 
      
      //high limit for the strength measure function, if the radius measured along the plane with Direction[0] as normal is above this val. the strength will be zero
      AnyVar UserDefinedRadiusLimit=0.4; 
      
      AnyVar Strength =.Strength;  //strength of muscles
      AnyVar StaticFrictionCoefficient=.StaticFrictionCoefficient; //Friction coefficient
      AnyVar ScaleFactor =1; //scale factor for draw vectors it can be set differently than by the drawsettings
      
      
      AnyIntArray Direction={1,0,2}; //first element gives normal direction
      #include  "<ANYBODY_PATH_MODELUTILS>\FrictionContactMuscles\ContactSurfaceLinPush.any"
    };
  };   
  
  
  
  
  
};//Drivers