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