--- a +++ b/Tools/GRFPrediction/WeakResiduals.any @@ -0,0 +1,84 @@ +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]; + +}; +