--- a
+++ b/Tools/AnyMocap/DefaultJointLimits.any
@@ -0,0 +1,89 @@
+#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