[38ba34]: / Body / AAUHuman / Arm / Calibration / ArmCal4.any

Download this file

262 lines (220 with data), 8.8 kB

///This is the calibration file it will calibrate the supraspinatus, infraspinatus and triceps muscles neutral pos
AnyFolder ArmCal4 ={
  AnyComponentDefinition obj = {};  
  
  AnyFolder &ThoraxSegs =  ...BodyModel.Trunk.SegmentsThorax;
  AnyFolder &LumbarSegs =  ...BodyModel.Trunk.SegmentsLumbar;
  AnyFolder &CervicalSegs =  ...BodyModel.Trunk.SegmentsCervicalSpine;
  AnyFolder &LumbarSpineJoints =  ...BodyModel.Trunk.JointsLumbar;
  AnyFolder &LumbarCervicalJoints =  ...BodyModel.Trunk.JointsCervicalSpine;

  
  AnyFolder &SegSideCal = .SideHumanFolderRef.ShoulderArm.Seg;
  AnyFolder &JointsSideCal = .SideHumanFolderRef.ShoulderArm.Jnt;
  
  #if BM_ARM_DELTOID_WRAPPING == _DELTOID_WRAPPING_RAKE_
  AnyFolder& DeltoidRakeRef = .SideHumanFolderRef.ShoulderArm.Mus.ArtificialRake;
  #else
  AnyFolder& DeltoidWrappingPosteriorRef = .SideHumanFolderRef.ShoulderArm.Mus.DeltoidWrappingPosterior;
  AnyFolder& DeltoidWrappingLateralRef = .SideHumanFolderRef.ShoulderArm.Mus.DeltoidWrappingLateral;
  AnyFolder& DeltoidWrappingAnteriorRef = .SideHumanFolderRef.ShoulderArm.Mus.DeltoidWrappingAnterior;
  #endif
  AnyFolder& TricepsLHWrappingRef = .SideHumanFolderRef.ShoulderArm.Mus.TricepsLHWrapping;
    
  AnyFolder &MusParCalSide =  .SideHumanFolderRef.ShoulderArm.MuscleModels;
  
  AnyFixedRefFrame ground = {
    AnyRefNode node = { 
      ARel=.....BodyModel.Trunk.SegmentsThorax.ThoraxSeg.Axes0; 
      sRel=.....BodyModel.Trunk.SegmentsThorax.ThoraxSeg.r0;
    };
  };
  
  AnySphericalJoint ThoraxGround={
    AnyRefFrame &Ground = .ground.node;
    AnyRefFrame &Sacrum= ....BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
  };
  
  AnyKinEqSimpleDriver  ThoraxGroundDriver = {
    AnySphericalJoint &Jnt = .ThoraxGround;
    DriverPos = {0,0,0};
    DriverVel = {0,0,0};
    Reaction.Type = {Off,Off,Off}; 
  };
  
  
  AnyKinEqSimpleDriver NeckJntDriver = {
    AnyKinMeasure& lb = ....BodyModel.Interface.Trunk.SkullThoraxLateralBending;
    AnyKinMeasure& ar = ....BodyModel.Interface.Trunk.SkullThoraxRotation;
    AnyKinMeasure& fe = ....BodyModel.Interface.Trunk.SkullThoraxFlexion;
    DriverPos = {0,0,0};
    DriverVel = {0,0,0};
    Reaction.Type = {On,On,On};
  };
  
  AnyKinEqSimpleDriver ThoraxDriver ={
    AnyKinMeasure& Ref2 = ....BodyModel.Interface.Trunk.PelvisThoraxLateralBending;        
    AnyKinMeasure& Ref3 = ....BodyModel.Interface.Trunk.PelvisThoraxRotation;   
    AnyKinMeasure& Ref1 = ....BodyModel.Interface.Trunk.PelvisThoraxExtension;
    DriverPos = pi/180*{0,0,0};
    DriverVel = pi/180*{0,0,0};
    Reaction.Type = {On,On,On};  
  };
  
  #if !BM_ARM_SHOULDER_RHYTHM
  AnyKinEqSimpleDriver SCDriver ={
    AnyKinMeasureOrg SC_measure = {
      AnyKinMeasure& ref = ...SideInterfaceFolderRef.SternoClavicularProtraction.SCRot;
      MeasureOrganizer = {0,1};
    };
    DriverPos = {-0.2536878, 0.06273779}; 
    DriverVel = {0.0,0.0};
    Reaction.Type={Off,Off};
  };
  #endif
  
  AnyKinEqSimpleDriver WristDriver ={
    AnyKinMeasure& WF = ..SideInterfaceFolderRef.WristFlexion;
    AnyKinMeasure& WA = ..SideInterfaceFolderRef.WristAbduction;
    DriverPos = {0,0};
    DriverVel = {0,0};
    Reaction.Type={On,On};
  };
  
  AnyKinEqSimpleDriver FEDriver ={
    AnyKinMeasure& FE = ..SideInterfaceFolderRef.ElbowFlexion;
    DriverPos = {65*pi/180};  
    DriverVel = {0};
    Reaction.Type = {Off};  
  };
  
  AnyKinEqSimpleDriver PSDriver ={
    AnyKinMeasure& PS = ..SideInterfaceFolderRef.ElbowPronation;
    DriverPos = pi/180*{-90.0};  
    DriverVel = pi/180*{ 0.0 };
    Reaction.Type = {Off};  
  };
  
  AnyKinEqSimpleDriver GHDriver ={
    AnyKinRotational &GHRotR = ..SideInterfaceFolderRef.GlenohumeralFlexion.GHMeasure;
    DriverPos = pi/180*{0,0,0 };  
    DriverVel = {0,0,0};
    Reaction.Type = {Off,Off,Off};  
  };
  
  //---------------------------------------------------------------------
  //Finger drivers
  #if BM_ARM_DETAILED_HAND
  //finger1
  AnyKinEqSimpleDriver CMC1Flexion={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.CMCFlexion;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };
  
  AnyKinEqSimpleDriver CMC1Abduction={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.CMCAbduction;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };
  

  
  AnyKinEqSimpleDriver MCP1Flexion={
    
    AnyRevoluteJoint &ref=..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.MCPFlexion;
    DriverPos={0}*pi/180;
    DriverVel={0};
    
  };
  AnyKinEqSimpleDriver MCP1Abduction={
    
    AnyRevoluteJoint &ref=..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.MCPAbduction;
    DriverPos={0}*pi/180;
    DriverVel={0};
    
  };
  
  AnyKinEqSimpleDriver DIP1={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger1.Jnt.DIP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };
  
  
 // finger2
//    AnyKinEqSimpleDriver CMC2={
//      AnyUniversalJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.CMC;
//      DriverPos={0,0};  
//      DriverVel={0,0};
//    };
  AnyKinEqSimpleDriver MCP2={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.MCP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };  
  AnyKinEqSimpleDriver PIP2={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.PIP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };
    AnyKinEqSimpleDriver DIP2={
      AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger2.Jnt.DIP;
      DriverPos={0};  
      DriverVel={0};
    };
  
  
  
 // finger3
//    AnyKinEqSimpleDriver CMC3={
//      AnyUniversalJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.CMC;
//      DriverPos={0,0};  
//      DriverVel={0,0};
//    };
  AnyKinEqSimpleDriver MCP3={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.MCP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };  
  AnyKinEqSimpleDriver PIP3={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.PIP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };
    AnyKinEqSimpleDriver DIP3={
      AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger3.Jnt.DIP;
      DriverPos={0};  
      DriverVel={0};
    };
  
  
  //finger4
//    AnyKinEqSimpleDriver CMC4={
//      AnyUniversalJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.CMC;
//      DriverPos={0,0}*pi/180;  
//      DriverVel={0,0};
//    };
  AnyKinEqSimpleDriver MCP4={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.MCP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };  
  AnyKinEqSimpleDriver PIP4={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.PIP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };
    AnyKinEqSimpleDriver DIP4={
      AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger4.Jnt.DIP;
      DriverPos={0}*pi/180;  
      DriverVel={0};
    };
  
  
 // finger5
//    AnyKinEqSimpleDriver CMC5={
//      AnyUniversalJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.CMC;
//      DriverPos={0,0};  
//      DriverVel={0,0};
//    };
  AnyKinEqSimpleDriver MCP5={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.MCP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };  
  AnyKinEqSimpleDriver PIP5={
    AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.PIP;
    DriverPos={0}*pi/180;  
    DriverVel={0};
  };
    AnyKinEqSimpleDriver DIP5={
      AnyRevoluteJoint &ref=  ..SideHumanFolderRef.ShoulderArm.Seg.Hand.Finger5.Jnt.DIP;
      DriverPos={0};  
      DriverVel={0};
    };
  #endif
  
  AnyString MusPrefix = CompleteNameOf(&.SideHumanFolderRef.ShoulderArm.Mus);

  AnyObjectPtrArray supraspinatusMuscles = ObjSearch(MusPrefix+".supraspinatus*", "AnyMuscle");
  AnyObjectPtrArray infraspinatusMuscles = ObjSearch(MusPrefix+".infraspinatus*", "AnyMuscle");
  AnyObjectPtrArray TricepsMuscles = ObjSearch(MusPrefix+".Triceps*", "AnyMuscle");

};


// The study: Operations to be performed on the model
AnyBodyCalibrationStudy ArmCalibrationStudy4 = {
  AnyFolder &ref=.ArmCal4; 
  nStep = 1;
  MuscleArr = arrcat(
      ref.supraspinatusMuscles,
      ref.infraspinatusMuscles,
      ref.TricepsMuscles
  );
  Kinematics.KinematicTol = 1e-07;
  Kinematics.SmallStepAssumptionOnOff = Off;
  InitialConditions.PosAnalysisOnlyOnOff = On;
  Kinematics.PosAnalysisOnlyOnOff = On;
};