[770c98]: / Application / Examples / StandingModel / Model / JointsAndDrivers.any

Download this file

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