[770c98]: / Application / Examples / StandingPosturePredictionWithLoad / Posture_Motion / ExternalForceBalanceControlSimpleWithClass.any

Download this file

477 lines (394 with data), 24.2 kB


AnyFolder Settings ={
  //these sections determine the amount of weight the torque minimization drivers will have
  //for each joint
  AnyFolder OverallWeightBalanceControl= {
    AnyVar  WeightOnSoftDriver =1; 
    AnyVar WeightOnEqFunction=10*0.00025;
  };
  AnyFolder MinMomentOnKneeJnt= {
    AnyVar  WeightOnSoftDriver =1;
    AnyVar WeightOnEqFunction=2*0.00025;
  };
  AnyFolder MinMomentOnL5SacrumJnt= {
    AnyVar  WeightOnSoftDriver =1;
    AnyVar WeightOnEqFunction=2*0.00025;
  };
  AnyFolder MinMomentOnRightshoulderJnt= {
    AnyVar  WeightOnSoftDriver =1;
    AnyVar WeightOnEqFunction=2*0.00025;
  };
  AnyFolder MinMomentOnRightElbowJnt= {
    AnyVar  WeightOnSoftDriver =1;
    AnyVar WeightOnEqFunction=2*0.00025;
  };
  AnyFolder MinMomentOnLeftshoulderJnt= {
    AnyVar  WeightOnSoftDriver =1;
    AnyVar WeightOnEqFunction=2*0.00025;
  };
  AnyFolder MinMomentOnLeftElbowJnt= {
    AnyVar  WeightOnSoftDriver =1;
    AnyVar WeightOnEqFunction=2*0.00025;
  };
};

//Make a visual representation of human + object CoM
AnyFolder VisualAid ={
  AnyKinCoM CoM ={
    AnyFolder &ref1=Main.HumanModel.BodyModel; 
    AnyFolder &ref2=  Main.Model.Environment.HandSeg;
  };
  AnyDrawSphere DrwCoMAndMass ={
    RGB={0,1,0};
    ScaleXYZ={1,1,1}*0.035;
    Position ={.CoM.Pos[0],.CoM.Pos[1],0};
  };
};


//distribute the load between the hands
#if LoadInRightHand  == 1 & LoadInLeftHand == 1
    AnyFloat HandWeightRight=0.5*Main.Model.Environment.HandSeg.Mass*{Main.Study.Gravity[0]*one_vec,Main.Study.Gravity[1]*one_vec,Main.Study.Gravity[2]*one_vec};
    AnyFloat HandWeightLeft=HandWeightRight;
    AnyFloat HandForceRight= 0.5*   Main.InputParameters.HandForce;
    AnyFloat HandForceLeft=   HandForceRight;
    
 #endif

 #if LoadInRightHand  == 1 & LoadInLeftHand == 0
    AnyFloat HandWeightRight=Main.Model.Environment.HandSeg.Mass*{Main.Study.Gravity[0]*one_vec,Main.Study.Gravity[1]*one_vec,Main.Study.Gravity[2]*one_vec};
    AnyFloat HandWeightLeft=0;
    AnyFloat HandForceRight=    Main.InputParameters.HandForce;
    AnyFloat HandForceLeft=  0;
    
 #endif

 #if LoadInRightHand  == 0 & LoadInLeftHand == 1
    AnyFloat HandWeightRight=0;
    AnyFloat HandWeightLeft=Main.Model.Environment.HandSeg.Mass*{Main.Study.Gravity[0]*one_vec,Main.Study.Gravity[1]*one_vec,Main.Study.Gravity[2]*one_vec};
    AnyFloat HandForceRight= 0;
    AnyFloat HandForceLeft=     Main.InputParameters.HandForce;
  #endif 

AnyVar MassOfSegments = 
//trunk
Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.SacrumSeg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L5Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L4Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L3Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L2Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L1Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.SkullSeg.Mass+ 
Main.HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg.Mass+ 
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C1Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C2Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C3Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C4Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C5Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C6Seg.Mass+
Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C7Seg.Mass+
//Right arm
Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula.Mass+ 
Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula.Mass+ 
Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus.Mass+ 
Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna.Mass+ 
Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius.Mass+ 
Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand.Mass+ 
//Left arm
Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Clavicula.Mass+ 
Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula.Mass+ 
Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus.Mass+ 
Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna.Mass+ 
Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius.Mass+ 
Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand.Mass+
//right leg    
Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.Mass+ 
Main.HumanModel.BodyModel.Right.Leg.Seg.Shank.Mass+ 
Main.HumanModel.BodyModel.Right.Leg.Seg.Patella.Mass+ 
Main.HumanModel.BodyModel.Right.Leg.Seg.Talus.Mass+
Main.HumanModel.BodyModel.Right.Leg.Seg.Foot.Mass+
//left leg    
Main.HumanModel.BodyModel.Left.Leg.Seg.Thigh.Mass+ 
Main.HumanModel.BodyModel.Left.Leg.Seg.Shank.Mass+ 
Main.HumanModel.BodyModel.Left.Leg.Seg.Patella.Mass+ 
Main.HumanModel.BodyModel.Left.Leg.Seg.Talus.Mass+
Main.HumanModel.BodyModel.Left.Leg.Seg.Foot.Mass;


AnyVar MassOfSegmentsAboveSacrum = 
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L5Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L4Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L3Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L2Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L1Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.SkullSeg.Mass+ 
    Main.HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg.Mass+ 
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C1Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C2Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C3Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C4Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C5Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C6Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C7Seg.Mass+
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Clavicula.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand.Mass;


    
AnyVar MassOfSegmentsAboveKnee = 
    Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.SacrumSeg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L5Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L4Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L3Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L2Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L1Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.SkullSeg.Mass+ 
    Main.HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg.Mass+ 
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C1Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C2Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C3Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C4Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C5Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C6Seg.Mass+
    Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C7Seg.Mass+
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Clavicula.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius.Mass+ 
    Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand.Mass;


  AnyVar MassOfSegmentsBelowShoulder = 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand.Mass;

AnyVar MassOfSegmentsBelowElbow = 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius.Mass+ 
    Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand.Mass;



AnyInt size=SizesOf(Main.InputParameters.HandForceTime);
AnyFloat one_vec=ones(size[0],1)';


CreateTorqueDriver  OverallWeightBalanceControl(
CreateZeroMomentPointAsExtraSeg=1,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.Model.Environment.GlobalRef, 
TargetPointForZeroMoment=Main.Model.Environment.GlobalRef.FootCenterPoint) ={
  
  InitialPositionForPointWithZeroMoment=Main.Model.Environment.GlobalRef.FootCenterPoint.sRel;
  WeightOnSoftDriver=.Settings.OverallWeightBalanceControl.WeightOnSoftDriver;
  WeightOnEqFunction=.Settings.OverallWeightBalanceControl.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
  ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegments;
  HumanSegs ={
    AnyFolder   &HumanSegs = Main.HumanModel;  
  };
};



CreateTorqueDriver  MinMomentOnL5SacrumJnt(
CreateZeroMomentPointAsExtraSeg=0,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.SacrumSeg.SacrumL5JntNode, 
TargetPointForZeroMoment=Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.SacrumSeg.SacrumL5JntNode) ={
  
  InitialPositionForPointWithZeroMoment=Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.SacrumSeg.r0;
  WeightOnSoftDriver=.Settings.MinMomentOnL5SacrumJnt.WeightOnSoftDriver/.MassOfSegmentsAboveSacrum;
  WeightOnEqFunction=.Settings.MinMomentOnL5SacrumJnt.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
   ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegmentsAboveSacrum;
  HumanSegs ={
   AnyFolder &ref3= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L5Seg;
    AnyFolder &ref4= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L4Seg;
    AnyFolder &ref5= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L3Seg;
    AnyFolder &ref6= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L2Seg;
    AnyFolder &ref7= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L1Seg;
    AnyFolder &ref8= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.SkullSeg; 
    AnyFolder &ref9= Main.HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg; 
    AnyFolder &ref10= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C1Seg;
    AnyFolder &ref11= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C2Seg;
    AnyFolder &ref12= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C3Seg;
    AnyFolder &ref13= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C4Seg;
    AnyFolder &ref14= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C5Seg;
    AnyFolder &ref15= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C6Seg;
    AnyFolder &ref16= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C7Seg;
    AnyFolder &ref17= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula; 
    AnyFolder &ref18= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula; 
    AnyFolder &ref19= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus; 
    AnyFolder &ref20= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref21= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius; 
    AnyFolder &ref22= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand; 
    AnyFolder &ref23= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Clavicula; 
    AnyFolder &ref24= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula; 
    AnyFolder &ref25= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus; 
    AnyFolder &ref26= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref27= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius; 
    AnyFolder &ref28= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand;
  };
};










CreateTorqueDriver  MinMomentOnRightKnee(
CreateZeroMomentPointAsExtraSeg=0,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.KneeJoint, 
TargetPointForZeroMoment=Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.KneeJoint) ={
  
  InitialPositionForPointWithZeroMoment=Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.r0;
  WeightOnSoftDriver=.Settings.MinMomentOnKneeJnt.WeightOnSoftDriver/.MassOfSegmentsAboveKnee;
  WeightOnEqFunction=.Settings.MinMomentOnKneeJnt.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
    ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegmentsAboveKnee;
  HumanSegs ={
    AnyFolder &ref0=     Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh;
    AnyFolder &ref1=    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
    AnyFolder &ref2=    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.SacrumSeg;
    AnyFolder &ref3=    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L5Seg;
    AnyFolder &ref4= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L4Seg;
    AnyFolder &ref5= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L3Seg;
    AnyFolder &ref6= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L2Seg;
    AnyFolder &ref7= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L1Seg;
    AnyFolder &ref8= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.SkullSeg; 
    AnyFolder &ref9= Main.HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg; 
    AnyFolder &ref10= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C1Seg;
    AnyFolder &ref11= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C2Seg;
    AnyFolder &ref12= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C3Seg;
    AnyFolder &ref13= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C4Seg;
    AnyFolder &ref14= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C5Seg;
    AnyFolder &ref15= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C6Seg;
    AnyFolder &ref16= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C7Seg;
    AnyFolder &ref17= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula; 
    AnyFolder &ref18= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula; 
    AnyFolder &ref19= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus; 
    AnyFolder &ref20= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref21= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius; 
    AnyFolder &ref22= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand; 
    AnyFolder &ref23= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Clavicula; 
    AnyFolder &ref24= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula; 
    AnyFolder &ref25= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus; 
    AnyFolder &ref26= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref27= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius; 
    AnyFolder &ref28= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand;
  };
};



CreateTorqueDriver  MinMomentOnLeftKnee(
CreateZeroMomentPointAsExtraSeg=0,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.HumanModel.BodyModel.Left.Leg.Seg.Thigh.KneeJoint, 
TargetPointForZeroMoment=Main.HumanModel.BodyModel.Left.Leg.Seg.Thigh.KneeJoint) ={
  
  InitialPositionForPointWithZeroMoment=Main.HumanModel.BodyModel.Left.Leg.Seg.Thigh.r0;
  WeightOnSoftDriver=.Settings.MinMomentOnKneeJnt.WeightOnSoftDriver/.MassOfSegmentsAboveKnee;
  WeightOnEqFunction=.Settings.MinMomentOnKneeJnt.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
    ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegmentsAboveKnee;
  HumanSegs ={
    AnyFolder &ref0=     Main.HumanModel.BodyModel.Left.Leg.Seg.Thigh;
    AnyFolder &ref1=    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
    AnyFolder &ref2=    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.SacrumSeg;
    AnyFolder &ref3=    Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L5Seg;
    AnyFolder &ref4= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L4Seg;
    AnyFolder &ref5= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L3Seg;
    AnyFolder &ref6= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L2Seg;
    AnyFolder &ref7= Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.L1Seg;
    AnyFolder &ref8= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.SkullSeg; 
    AnyFolder &ref9= Main.HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg; 
    AnyFolder &ref10= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C1Seg;
    AnyFolder &ref11= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C2Seg;
    AnyFolder &ref12= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C3Seg;
    AnyFolder &ref13= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C4Seg;
    AnyFolder &ref14= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C5Seg;
    AnyFolder &ref15= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C6Seg;
    AnyFolder &ref16= Main.HumanModel.BodyModel.Trunk.SegmentsCervicalSpine.C7Seg;
    AnyFolder &ref17= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula; 
    AnyFolder &ref18= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula; 
    AnyFolder &ref19= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus; 
    AnyFolder &ref20= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref21= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius; 
    AnyFolder &ref22= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand; 
    AnyFolder &ref23= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Clavicula; 
    AnyFolder &ref24= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula; 
    AnyFolder &ref25= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus; 
    AnyFolder &ref26= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref27= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius; 
    AnyFolder &ref28= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand;
  };
};










#if LoadInRightHand==1
 
  
  

CreateTorqueDriver  MinMomentOnRightElbowJnt2(
CreateZeroMomentPointAsExtraSeg=0,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus.fe, 
TargetPointForZeroMoment=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus.fe) ={
  
  InitialPositionForPointWithZeroMoment=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus.r0;
  WeightOnSoftDriver=.Settings.MinMomentOnRightElbowJnt.WeightOnSoftDriver/.MassOfSegmentsBelowElbow;
  WeightOnEqFunction=.Settings.MinMomentOnRightElbowJnt.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
  ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegmentsBelowElbow;
  HumanSegs ={
      AnyFolder &ref20= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref21= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius; 
    AnyFolder &ref22= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand;   };
};



CreateTorqueDriver  MinMomentOnRightShoulderJnt(
CreateZeroMomentPointAsExtraSeg=0,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula.gh, 
TargetPointForZeroMoment=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula.gh) ={
  
  InitialPositionForPointWithZeroMoment=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Scapula.r0;
  WeightOnSoftDriver=.Settings.MinMomentOnRightshoulderJnt.WeightOnSoftDriver/.MassOfSegmentsBelowElbow;
  WeightOnEqFunction=.Settings.MinMomentOnRightshoulderJnt.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
  ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegmentsBelowElbow;
  HumanSegs ={
    AnyFolder &ref19= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Humerus; 
    AnyFolder &ref20= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref21= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Radius; 
    AnyFolder &ref22= Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand;   };
};

#endif




#if LoadInLeftHand==1
 
  

CreateTorqueDriver  MinMomentOnLeftElbowJnt(
CreateZeroMomentPointAsExtraSeg=0,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus.fe, 
TargetPointForZeroMoment=Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus.fe) ={
  
  InitialPositionForPointWithZeroMoment=Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus.r0;
  WeightOnSoftDriver=.Settings.MinMomentOnLeftElbowJnt.WeightOnSoftDriver/.MassOfSegmentsBelowShoulder;
  WeightOnEqFunction=.Settings.MinMomentOnLeftElbowJnt.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
  ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegmentsBelowShoulder;
  HumanSegs ={
    AnyFolder &ref20= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref21= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius; 
    AnyFolder &ref22= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand;   };
};







  


CreateTorqueDriver  MinMomentOnLeftShoulderJnt(
CreateZeroMomentPointAsExtraSeg=0,
ForceApplicationPoint=Main.Model.Environment.HandSeg,
LevelForMeasurePlane=Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula.gh, 
TargetPointForZeroMoment=Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula.gh) ={
  
  InitialPositionForPointWithZeroMoment=Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Scapula.r0;
  WeightOnSoftDriver=.Settings.MinMomentOnLeftshoulderJnt.WeightOnSoftDriver/.MassOfSegmentsBelowShoulder;
  WeightOnEqFunction=.Settings.MinMomentOnLeftshoulderJnt.WeightOnEqFunction;
  GravityVector=Main.Study.Gravity ;
  ExternalForce_T=Main.InputParameters.HandForceTime;
  ExternalForce_Data=.HandForceRight+.HandForceLeft+.HandWeightRight+.HandWeightLeft;
  MassOfHumanSegments= .MassOfSegmentsBelowShoulder;
  HumanSegs ={
     AnyFolder &ref19= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Humerus; 
      AnyFolder &ref20= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Ulna; 
    AnyFolder &ref21= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Radius; 
    AnyFolder &ref22= Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Hand;   };
};

#endif