579 lines (475 with data), 24.1 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 = {-15}*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 = {-15}*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.32, 1.2, 0};
// DriverVel = {0,0,0};
// Reaction.Type = {Off,Off,Off};
// };
// Glenohumeral driver //
// AnyKinEqSimpleDriver RightGHDriver =
// {
// DriverPos = {pi/180*-5};
// DriverVel = {0.0};
// AnyKinMeasure& RGlenohumeralabduction = Main.BodyModel.BodyModel.Right.ShoulderArm.Jnt.GHRot;
// CType = {Soft};
// Reaction.Type = {Off};
// MeasureOrganizer = {1};
// };
// AnyKinEqSimpleDriver LeftGHDriver =
// {
// DriverPos = {pi/180*-5};
// DriverVel = {0.0};
// AnyKinMeasure& LGlenohumeralabduction = Main.BodyModel.BodyModel.Left.ShoulderArm.Jnt.GHRot;
// CType = {Soft};
// Reaction.Type = {Off};
// MeasureOrganizer = {0};
// };
// 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