[bfdf16]: / Tools / AnyMocap / DefaultJointLimits.any

Download this file

90 lines (79 with data), 2.6 kB

#ifndef MOCAP_EXCLUDE_DEFAULT_JOINT_LIMITS

ModelSetup.MocapExtraDrivers = {
  
  /// This section adds kinematic joint limits for unrealistic joint angles.
  /// E.g. prevent the elbow from bending backwards etc. 
  /// This makes the Kinematic solver more robust by restricting marker tracking
  /// solutions from non-physiologically positures
  AnyFolder DefaultJointLimits = 
  {
  #if BM_ARM_RIGHT
    KinLimitsDriver LimitElbowPronationRight( 
       KinMeasure = ....HumanModel.BodyModel.Interface.Right.ElbowPronation
    ) = {
      AnyFloat ROM ??= {-100, 100};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi; 
    };
  
    KinLimitsDriver LimitElbowFlexionRight(
      KinMeasure= ....HumanModel.BodyModel.Interface.Right.ElbowFlexion
    ) =  {
      AnyFloat ROM ??= {-10, 180};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi;
    };
    
    KinLimitsDriver WristAbductionRight(
      KinMeasure= ....HumanModel.BodyModel.Interface.Right.WristAbduction
    ) =  {
      AnyFloat ROM ??= {-90, 90};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi; 
    };
    
    KinLimitsDriver WristFlexionRight(
      KinMeasure= ....HumanModel.BodyModel.Interface.Right.WristFlexion
    ) =  {
      AnyFloat ROM ??= {-120, 120};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi;
    };
  #endif
  
  #if BM_ARM_LEFT
    KinLimitsDriver LimitElbowPronationLeft(
      KinMeasure= ....HumanModel.BodyModel.Interface.Left.ElbowPronation
    ) = {
      AnyFloat ROM ??= {-100, 100};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi; 
    };
  
    KinLimitsDriver LimitElbowFlexionLeft(
      KinMeasure= ....HumanModel.BodyModel.Interface.Left.ElbowFlexion
    ) =  {
      AnyFloat ROM ??= {-10, 180};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi;
    };
    
    KinLimitsDriver WristAbductionLeft(
      KinMeasure= ....HumanModel.BodyModel.Interface.Left.WristAbduction
    ) =  {
      AnyFloat ROM ??= {-90, 90};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi; 
    };
    
    KinLimitsDriver WristFlexionLeft(
      KinMeasure= ....HumanModel.BodyModel.Interface.Left.WristFlexion
    ) =  {
      AnyFloat ROM ??= {-120, 120};
      LowerLimit = ROM[0]; 
      HighLimit = ROM[1]; 
      MeasureConversion=180/pi;
    };
  #endif
  };
};

#endif