Hi Sven,
Welcome to AnyBody world!
When I looked into your model, your model is ‘kinematcally’ right.
But not ‘kinetically’.
Attached please find the modified version of your model.
I did some change on your model, especially in ‘RightLegTDDrivers.any’ file.
AnyKinEqSimpleDriver RToeLateralContactNode ={
AnyKinLinear ToeLateralContactNodePos = {
AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
AnyRefNode &Ball = Main.Model.HumanModel.Right.Leg.Seg.Foot.ToeLateralContactNode;
};
MeasureOrganizer = {1}; // Only the y coordinate
//DriverPos = {0.1};
DriverPos = {0.0};
DriverVel = {0};
Reaction.Type = {Off}; // Provide ground reaction forces
};
AnyKinEqSimpleDriver RToeMedialContactNode ={
AnyKinLinear ToeMedialContactNodePos = {
AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
AnyRefNode &Ball = Main.Model.HumanModel.Right.Leg.Seg.Foot.ToeMedialContactNode;
};
MeasureOrganizer = {1}; // Only the y coordinate
//DriverPos = {0.1};
DriverPos = {0.0};
DriverVel = {0};
Reaction.Type = {Off}; // Provide ground reaction forces
};
AnyKinEqSimpleDriver RHeelContactNode ={
AnyKinLinear HeelContactNodePos = {
AnyFixedRefFrame &Ground = Main.Model.EnvironmentModel.GlobalRef;
AnyRefNode &Ball = Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.HeelContactNodeLow;
};
MeasureOrganizer = {1}; // Only the y coordinate
//DriverPos = {0.1};
DriverPos = {0.0};
DriverVel = {0};
Reaction.Type = {Off}; // Provide ground reaction forces
};
These three constraints determine the kinematic contact between the right foot and ground.
But in your original code, the ‘DriverPos’ values were all 0.1.
So actually, the right foot does not contact to the ground.
So I’ve changed these values as zero.
Let’s see the following code in the same file.
AnyFolder ConditionalContact={
AnyVar StaticFrictionCoefficient=0.9;
AnyVar Strength=2000;
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 "..\..\..\Body\AAUHuman\ToolBox\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 "..\..\..\Body\AAUHuman\ToolBox\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 "..\..\..\Body\AAUHuman\ToolBox\FrictionContactMuscles\ContactSurfaceLinPush.any"
};
};
The above code defines so-called ‘conditional contact elements’ using AnyGeneralMuscle objects.
These objects will create some reaction forces if the distance of those nodes are close to the GlobalRef node within some value.
So this is the reason why I had to move the position of the human model close to the ground.
I hope this may help to you.
Best regards,
Moonki