[bfdf16]: / Tools / GRFPrediction / WeakResiduals.any

Download this file

85 lines (74 with data), 2.7 kB

AnyFolder HumanGroundResiduals = {
  AnyComponentDefinition obj = {};
  
  AnyFolder CenterOfMass = {
    AnySeg DummySeg={
      Mass=0;
      Jii={0,0,0};
    };
    AnyKinEqSimpleDriver  FixRotation ={
      AnyKinRotational rot ={
        AnySeg &ref1=..DummySeg;
        Type=RotAxesAngles;
      };
      DriverPos ={0,0,0}; DriverVel={0,0,0};
    };
    AnyKinEqSimpleDriver  DummySegDriver ={
      AnyKinMeasureLinComb LinComb ={
        AnyKinLinear LinSeg ={
          AnySeg &ref=...DummySeg;
        };
        AnyKinCoM CoMMeasure =  {
          AnyFolder& ref = Main.HumanModel.BodyModel;
        };
        Coef ={{1,0,0,-1,0,0},{0,1,0,0,-1,0},{0,0,1,0,0,-1}};
        OutDim =3;
      };
      DriverPos ={0,0,0}; DriverVel={0,0,0};
    };
  };

  
  AnyFolder &PelvisSegment = ..BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
  AnyFolder &COMSegment = CenterOfMass.DummySeg;
  
  AnyFolder Measures = {
    AnyKinLinear LinearCOM ={
        AnySeg &ref2 = ..COMSegment;
    };   
    AnyKinRotational RotationalPelvis ={
        AnySeg &ref2 = ..PelvisSegment;
        Type=RotVector;
        AngVelOnOff = On; 
    };
  };
  
  AnyFolder WeakRecruitedResiduals = 
  {

    AnyRecruitedActuator Linear_1 = {
      AnyKinMeasure& ref= ..Measures.LinearCOM;
      Type = NonNegative;
      Strength = 5;
      SET_DEFAULT_ACTUATOR_VOLUME;
    };
    AnyRecruitedActuator Linear_2 = {
      AnyKinMeasure& ref= ..Measures.LinearCOM;
      Type = NonPositive;
      Strength = 5;
      SET_DEFAULT_ACTUATOR_VOLUME;
    };
    AnyRecruitedActuator Rotational_1 = {
      AnyKinMeasure& ref= ..Measures.RotationalPelvis;
      Type = NonNegative;
      Strength = 2;
      SET_DEFAULT_ACTUATOR_VOLUME;
    };
    AnyRecruitedActuator Rotational_2 = {
      AnyKinMeasure& ref= ..Measures.RotationalPelvis;
      Type = NonPositive;
      Strength = 2;
      SET_DEFAULT_ACTUATOR_VOLUME;
    };

       
  };
  AnyVar PosX_Force = WeakRecruitedResiduals.Linear_1.Fout[0]+WeakRecruitedResiduals.Linear_2.Fout[0];
  AnyVar PosY_Force = WeakRecruitedResiduals.Linear_1.Fout[1]+WeakRecruitedResiduals.Linear_2.Fout[1];
  AnyVar PosZ_Force = WeakRecruitedResiduals.Linear_1.Fout[2]+WeakRecruitedResiduals.Linear_2.Fout[2];
  AnyVar RotX_Torque = WeakRecruitedResiduals.Rotational_1.Fout[2]+WeakRecruitedResiduals.Rotational_2.Fout[2];
  AnyVar RotY_Torque = WeakRecruitedResiduals.Rotational_1.Fout[1]+WeakRecruitedResiduals.Rotational_2.Fout[1];
  AnyVar RotZ_Torque = WeakRecruitedResiduals.Rotational_1.Fout[0]+WeakRecruitedResiduals.Rotational_2.Fout[0];
  
};