83 lines (68 with data), 3.1 kB
// Center of Mass drivers can be excluded
// by setting #define EXCLUDE_COM_BALANCE_DRIVERS
#ifndef EXCLUDE_COM_BALANCE_DRIVERS
//Constrain the collective CoM to be right above the GlobalRef
AnyKinDriver CenterOfMassDriver = {
AnyKinMeasure& CoM = ..BodyModel.Interface.CenterOfMass;
AnyFunConst Position = {
Value = Main.Model.CenterOfMassXZ;
};
MeasureOrganizer = {0,2}; // Only the x and z directions
Reaction.Type = {Off,Off};
};
// Ankles are assigned a lower weight so most of the
// center of mass balancing will happen at the ankle joint.
Main.Model.DefaultMannequinDrivers.DefaultWeakDriverWeight = 0.01;
Main.Model.DefaultMannequinDrivers.AnkleDriverLeftFlexion.WeakDriverWeight = 0.001;
Main.Model.DefaultMannequinDrivers.AnkleDriverRightFlexion.WeakDriverWeight = 0.001;
#endif
// Foot driver constraints can be excluded
// by setting #define EXCLUDE_FOOT_CONSTRAINTS
#ifndef EXCLUDE_FOOT_CONSTRAINTS
// Default drivers for the pelvis position is set to zero
// since foot drivers determines position of the model
Main.Model.DefaultMannequinDrivers.PelvisGroundDriverPosX.WeakDriverWeight = 0;
Main.Model.DefaultMannequinDrivers.PelvisGroundDriverPosY.WeakDriverWeight = 0;
Main.Model.DefaultMannequinDrivers.PelvisGroundDriverPosZ.WeakDriverWeight = 0;
Main.Model.DefaultMannequinDrivers.PelvisGroundDriverRotX.WeakDriverWeight = 0;
Main.Model.DefaultMannequinDrivers.PelvisGroundDriverRotY.WeakDriverWeight = 0;
Main.Model.DefaultMannequinDrivers.PelvisGroundDriverRotZ.WeakDriverWeight = 0;
AnyFolder Right =
{
AnyKinEq HeelFloorConstraint = {
AnyKinLinear HeelMeasure = {
AnyRefFrame &FootPrint = Main.Model.Environment.GlobalRef.RightFootPrint;
AnyRefFrame &Heel = Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.HeelContactNodeLow;
};
Reaction.Type = {Off,Off,Off};
};
AnyKinEq ToeDirectionContraint =
{
AnyKinLinear ToeDirection = {
AnyRefFrame &FootPrint = Main.Model.Environment.GlobalRef.RightFootPrint;
AnyRefFrame &Heel = Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.BigToeNode;
};
MeasureOrganizer = {1,2}; // Only y,z direction
Reaction.Type = {Off,Off};
};
};
AnyFolder Left =
{
AnyKinEq HeelFloorConstraint = {
AnyKinLinear HeelMeasure = {
AnyRefFrame &FootPrint = Main.Model.Environment.GlobalRef.LeftFootPrint;
AnyRefFrame &Heel = Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.HeelContactNodeLow;
};
Reaction.Type = {Off,Off,Off};
};
AnyKinEq ToeDirectionConstraint =
{
AnyKinLinear ToeDirection = {
AnyRefFrame &FootPrint = Main.Model.Environment.GlobalRef.LeftFootPrint;
AnyRefFrame &Heel = Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.BigToeNode;
};
MeasureOrganizer = {1,2}; // Only y,z direction
Reaction.Type = {Off,Off};
};
};
#endif