[bfdf16]: / Body / AAUHuman / LegTLEM2.1 / Calibration / LegCal1.any

Download this file

119 lines (98 with data), 4.3 kB

//This is the calibration1 file, it will calibrate all muscle in the leg in
//a neutral position (all joint angles in the drivers are zero)
//The subsequent calibrations 2 and 3 will overwrite some of the values
//obtained in this study

AnyFolder LegCal1 ={
  AnyComponentDefinition obj = {};  
  AnyFolder &Pelvis = ...BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
  AnyFolder &Sacrum = ...BodyModel.Trunk.SegmentsLumbar.SacrumSeg;
  
  // Segments needed for the Psoas Major muscles
  AnyFolder& SegmentsLumbar =...BodyModel.Trunk.SegmentsLumbar;
  AnyFolder &Thorax = ...BodyModel.Trunk.SegmentsThorax.ThoraxSeg;
  
  AnyFolder &LegSegSide = .SideHumanFolderRef.Leg.Seg;
  
  AnyFolder &LegJointsSide = .SideHumanFolderRef.Leg.Jnt;
  AnyFolder &TrunkJoints = ...BodyModel.Trunk.JointsLumbar;
  
  AnyFolder &MusCalSide =  .SideHumanFolderRef.Leg.Mus;
    
  
  
  AnyFixedRefFrame ground = {
    AnyRefNode node = { 
      ARel=..Pelvis.Axes0;
      sRel=..Pelvis.r0;
    };
  };
  
  AnyKinEq ThoraxFix = 
  {
    AnyKinMeasure& PelvisThoraxExtension = ....BodyModel.Interface.Trunk.PelvisThoraxExtension;
    AnyKinMeasure& PelvisThoraxLateralBending = ....BodyModel.Interface.Trunk.PelvisThoraxLateralBending;
    AnyKinMeasure& PelvisThoraxRotation = ....BodyModel.Interface.Trunk.PelvisThoraxRotation;
  };
  
AnyKinEq PelvisFix = {
    AnyKinLinear Lin = {
      AnyRefFrame &ground = ..ground.node;
      AnyRefFrame &Pelvis = .....BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
    };
    AnyKinRotational Rot = {
      Type = RotAxesAngles;
      AnyRefFrame &ground = ..ground.node;
      AnyRefFrame &Pelvis = .....BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
    };
  };
  
  
  AnyKinEqSimpleDriver Hip = {
    AnyKinRotational &Spherical = ..SideInterfaceFolderRef.HipFlexion.HipMeasure;
    DriverPos = {0,0,0}*pi/180; // Flexion - Abduction - external rotation
    DriverVel = {0,0,0}*pi/180;
    Reaction.Type = {Off,Off,Off};
  };
  
  
  AnyKinEqSimpleDriver Knee = {
    AnyKinMeasure& Hinge = ..SideInterfaceFolderRef.KneeFlexion;
    DriverPos = {0*pi/180};
    DriverVel = {0*pi/180};
    Reaction.Type = {Off};
  };
  
  #if BM_FOOT_MODEL == _FOOT_MODEL_DEFAULT_
  AnyKinEqSimpleDriver Ankle = {
    AnyKinMeasure& Hinge = ..SideInterfaceFolderRef.AnklePlantarFlexion;
    DriverPos = {0*pi/180};
    DriverVel = {0*pi/180};
    Reaction.Type = {Off};
  };

  AnyKinEqSimpleDriver SubTalar = {
    AnyKinMeasure& Hinge = ..SideInterfaceFolderRef.SubTalarEversion;
    DriverPos = {0*pi/180};
    DriverVel = {0*pi/180}; 
    Reaction.Type = {Off};
  };
  #endif

};


// The study: Operations to be performed on the model
AnyBodyCalibrationStudy LegCalibrationStudy1 = {
  AnyFolder &ref=.LegCal1; 
  nStep = 1;
  InitialConditions.SmallStepAssumptionOnOff = Off;
  Kinematics.SmallStepAssumptionOnOff = Off;
  Kinematics.PosAnalysisOnlyOnOff = On;
  InitialConditions.PosAnalysisOnlyOnOff = On;
#if (ANYBODY_V1 > 7)|(ANYBODY_V1 == 7 & ANYBODY_V2 > 2)|(ANYBODY_V1 == 7 & ANYBODY_V2 == 2 & ANYBODY_V3 >= 2)
  MuscleArr = set_difference(
      ObjSearchRecursive(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus),"*", "AnyMuscle&"),
    arrcat(
      ..CALIBRATION_STUDY_REF(2).MuscleArr,
      ..CALIBRATION_STUDY_REF(3).MuscleArr,
      ..CALIBRATION_STUDY_REF(5).MuscleArr,
      ..CALIBRATION_STUDY_REF(6).MuscleArr,
      ..CALIBRATION_STUDY_REF(7).MuscleArr,
      ..CALIBRATION_STUDY_REF(8).MuscleArr
    )
  );
#else
  MuscleArr = arrcat(
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus)+".BicepsFemorisCaput*", "AnyMuscle"),
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus)+".Iliacus*", "AnyMuscle"),
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus)+".PeroneusBrevis*", "AnyMuscle"),
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus)+".Piriformis*", "AnyMuscle"),
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus)+".Popliteus*", "AnyMuscle"),
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus)+".RectusFemoris*", "AnyMuscle"),
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.Mus)+".Sartorius*", "AnyMuscle"),
     ObjSearch(CompleteNameOf(&.SideHumanFolderRef.Leg.TrunkMuscles.PsoasMajor)+".*", "AnyMuscle")
  );
#endif
   
  
};