[38ba34]: / Body / AAUHuman / LegTLEM2.1 / Calibration / LegCal7.any

Download this file

98 lines (81 with data), 3.4 kB

AnyFolder LegCal7 ={
  AnyComponentDefinition obj = {};  
  
  AnyFolder &Pelvis = ...BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
  AnyFolder &Sacrum = ...BodyModel.Trunk.SegmentsLumbar.SacrumSeg;
  
  AnyFolder &LegSegSide = .SideHumanFolderRef.Leg.Seg;
  
  AnyFolder &LegJointsSide = .SideHumanFolderRef.Leg.Jnt;
  AnyFolder &SacrumPelvisJnt = ...BodyModel.Trunk.JointsLumbar.SacrumPelvisJnt;

  
  AnyFixedRefFrame ground = {
    AnyRefNode node = { 
      ARel=..Pelvis.Axes0;
      sRel=..Pelvis.r0;
    };
  };
  
  AnyKinEq PelvisFix = {
    AnyKinLinear PelvisSacrumLinFix = {
      AnyRefFrame &ground = ..ground.node;
      AnyRefFrame &Pelvis = .....BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
    };
    AnyKinRotational PelvisSacrumRotFix = {
      Type = RotAxesAngles;
      AnyRefFrame &ground = ..ground.node;
      AnyRefFrame &Pelvis = .....BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
    };
  };
  
  AnyKinEqSimpleDriver PelvisSacrumFix = {
    AnyKinMeasure& Jnt = .SacrumPelvisJnt;
    DriverPos = {0,0,0};
    DriverVel = {0,0,0};
    Reaction.Type = {Off,Off,Off}; 
  }; 
  
  AnyKinEqSimpleDriver Hip = {
    AnyKinRotational &Spherical = ..SideInterfaceFolderRef.HipFlexion.HipMeasure;
    DriverPos = {35,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 = {-10*pi/180}; //10 degrees dorsal flexion
    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


AnyString MusPrefix = CompleteNameOf(&.SideHumanFolderRef.Leg.Mus);
  
  AnyObjectPtrArray SemiMuscles = ObjSearch(MusPrefix+".Semi*", "AnyMuscle");  
  AnyObjectPtrArray AdductorLongusMuscles = ObjSearch(MusPrefix+".AdductorLongus*", "AnyMuscle");
  AnyObjectPtrArray AdductorMagnusMuscles = ObjSearch(MusPrefix+".AdductorMagnus*", "AnyMuscle");
  AnyObjectPtrArray AdductorBrevisMuscles = ObjSearch(MusPrefix+".AdductorBrevis*", "AnyMuscle");
  AnyObjectPtrArray GracilisMuscles = ObjSearch(MusPrefix+".Gracilis*", "AnyMuscle");
  AnyObjectPtrArray PectineusMuscles = ObjSearch(MusPrefix+".Pectineus*", "AnyMuscle");
  
};

// The study: Operations to be performed on the model
AnyBodyCalibrationStudy LegCalibrationStudy7 = {
  AnyFolder &ref=.LegCal7; 
  nStep = 1;
  MuscleArr = arrcat(
                ref.SemiMuscles,
                ref.AdductorLongusMuscles,
                ref.AdductorMagnusMuscles,
                ref.AdductorBrevisMuscles,
                ref.GracilisMuscles,
                ref.PectineusMuscles
             );
  InitialConditions.SmallStepAssumptionOnOff = Off;
  Kinematics.SmallStepAssumptionOnOff = Off;
  Kinematics.PosAnalysisOnlyOnOff = On;
  InitialConditions.PosAnalysisOnlyOnOff = On;
};