669 lines (594 with data), 27.4 kB
#ifndef _RANGE_OF_MOTION_LIMITS_TEMPLATE_ANY_
#define _RANGE_OF_MOTION_LIMITS_TEMPLATE_ANY_
/*
---
group: Utilities
topic: Kinematic limits
descr: |
Create joint limits as soft kinematic constraints
given some range of motion.
---
To use these drivers import the file:
#include "<AMMR_TOOLS>/ModelUtilities/kinematicLimits/RangeOfMotionLimits_template.any"
See below for more information on how to use the class.
*/
#include "KinLimit_template.any"
// The class creates a set of limits (soft kinematic constraints)
// for the human model given some range of motion.
//
// The class template should be used after the human model is included in the model.
// This ensures that all the `BM_*` statements are defined.
//
// :::{note} Make sure the Limit drivers are included in your study.
// Otherwise they will have no effect.
// :::
//
// :::{rubric} Example
// :::
//
// ```{code-block} AnyScriptDoc
//
// RangeOfMotionLimits RoMLimits(
// ARM_RIGHT = BM_ARM_RIGHT,
// ARM_LEFT = BM_ARM_LEFT,
// LEG_RIGHT = BM_LEG_RIGHT,
// LEG_LEFT = BM_LEG_LEFT
// ) = {
// // Example of changing af few of the limits:
// Limits.Trunk.PelvisThoraxExtension = {-90, 90};
// Limits.Right.ElbowPronation = {-90, 90};
// };
//
// ```
//
// If some joint should not have a range of motion limits, the class accepts
// arguments for disabling individual joint limits:
//
// ```{code-block} AnyScriptDoc
// RangeOfMotionLimits RoMLimits(
// PELVIS_THORAX_LATERAL_BENDING = "Off"
// ...
// ```
//
#class_template RangeOfMotionLimits (
ARM_RIGHT,
ARM_LEFT,
LEG_RIGHT,
LEG_LEFT,
PELVIS_THORAX_EXTENSION = "On",
PELVIS_THORAX_LATERAL_BENDING = "On",
PELVIS_THORAX_ROTATION = "On",
SKULL_THORAX_FLEXION = "On",
SKULL_THORAX_LATERALBENDING = "On",
SKULL_THORAX_ROTATION = "On",
STERNO_CLAVICULAR_PROTRACTION = "On",
STERNO_CLAVICULAR_ELEVATION = "On",
STERNO_CLAVICULAR_AXIALROTATION = "Off",
GLENOHUMERAL_FLEXION = "On",
GLENOHUMERAL_EXTERNAL_ROTATION = "On",
GLENOHUMERAL_ABDUCTION = "On",
ELBOW_FLEXION = "On",
ELBOW_PRONATION = "On",
WRIST_FLEXION = "On",
WRIST_ABDUCTION = "On",
HIP_ABDUCTION = "On",
HIP_FLEXION = "On",
HIP_EXTERNAL_ROTATION = "On",
KNEE_FLEXION = "On",
ANKLE_PLANTAR_FLEXION = "On",
SUBTALAR_EVERSION = "On",
HUMAN_MODEL = Main.HumanModel,
)
{
// Arguments
//--------------
//RangeOfMotionLimits#ARM_RIGHT
// Indicate if the right arm should be included in the limits.
// Set this to BM_ARM_RIGHT to make it follow the body config
//RangeOfMotionLimits#ARM_LEFT
// Indicate if the left arm should be included in the limits.
// Set this to BM_ARM_LEFT to make it follow the body config
//RangeOfMotionLimits#LEG_RIGHT
// Indicate if the right leg should be included in the limits.
// Set this to BM_LEG_RIGHT to make it follow the body config
//RangeOfMotionLimits#LEG_LEFT
// Indicate if the left leg should be included in the limits.
// Set this to BM_LEG_LEFT to make it follow the body config
//RangeOfMotionLimits#PELVIS_THORAX_EXTENSION
// Enables/disables limits for the pelvis thorax extension
//RangeOfMotionLimits#PELVIS_THORAX_LATERAL_BENDING
// Enables/disables limits for the pelvis thorax lateral bending
//RangeOfMotionLimits#PELVIS_THORAX_ROTATION
// Enables/disables limits for the pelvis thorax rotation
//RangeOfMotionLimits#SKULL_THORAX_FLEXION
// Enables/disables limits for the skull thorax flexion
//RangeOfMotionLimits#SKULL_THORAX_LATERALBENDING
// Enables/disables limits for the skull thorax lateral bending
//RangeOfMotionLimits#SKULL_THORAX_ROTATION
// Enables/disables limits for the skull thorax rotation
//RangeOfMotionLimits#STERNO_CLAVICULAR_PROTRACTION
// Enables/disables limits for the sterno clavicular protraction
//RangeOfMotionLimits#STERNO_CLAVICULAR_ELEVATION
// Enables/disables limits for the sterno clavicular elevation
//RangeOfMotionLimits#STERNO_CLAVICULAR_AXIALROTATION
// Enables/disables limits for the sterno clavicular axial rotation
//RangeOfMotionLimits#GLENOHUMERAL_FLEXION
// Enables/disables limits for the glenohumeral flexion
//RangeOfMotionLimits#GLENOHUMERAL_EXTERNAL_ROTATION
// Enables/disables limits for the glenohumeral external rotation
//RangeOfMotionLimits#GLENOHUMERAL_ABDUCTION
// Enables/disables limits for the glenohumeral abduction
//RangeOfMotionLimits#ELBOW_FLEXION
// Enables/disables limits for the elbow flexion
//RangeOfMotionLimits#ELBOW_PRONATION
// Enables/disables limits for the elbow pronation
//RangeOfMotionLimits#WRIST_FLEXION
// Enables/disables limits for the wrist flexion
//RangeOfMotionLimits#WRIST_ABDUCTION
// Enables/disables limits for the wrist abduction
//RangeOfMotionLimits#HIP_ABDUCTION
// Enables/disables limits for the hip abduction
//RangeOfMotionLimits#HIP_FLEXION
// Enables/disables limits for the hip flexion
//RangeOfMotionLimits#HIP_EXTERNAL_ROTATION
// Enables/disables limits for the hip external rotation
//RangeOfMotionLimits#KNEE_FLEXION
// Enables/disables limits for the knee flexion
//RangeOfMotionLimits#ANKLE_PLANTAR_FLEXION
// Enables/disables limits for the ankle plantar flexion
//RangeOfMotionLimits#SUBTALAR_EVERSION
// Enables/disables limits for the subtalar eversion
//RangeOfMotionLimits#HUMAN_MODEL
// The human model to which the limits should be applied.
AnyFolder Limits =
{
AnyFolder Trunk =
{
//RangeOfMotionLimits.Limits.Trunk
/// The limits for PelvisThoraxExtension
#var AnyVector PelvisThoraxExtension = DesignVar({ -80, 30});
//RangeOfMotionLimits.Limits.Trunk
/// The limits for PelvisThoraxLateralBending
#var AnyVector PelvisThoraxLateralBending = DesignVar({ -40, 40});
//RangeOfMotionLimits.Limits.Trunk
/// The limits for PelvisThoraxRotation
#var AnyVector PelvisThoraxRotation = DesignVar({-90, 90});
//RangeOfMotionLimits.Limits.Trunk
/// The limits for SkullThoraxFlexion
#var AnyVector SkullThoraxFlexion = DesignVar({-70, 70});
//RangeOfMotionLimits.Limits.Trunk
/// The limits for SkullThoraxLateralBending
#var AnyVector SkullThoraxLateralBending = DesignVar({-60, 60});
//RangeOfMotionLimits.Limits.Trunk
/// The limits for SkullThoraxRotation
#var AnyVector SkullThoraxRotation = DesignVar({-90, 90});
};
AnyFolder Right =
{
//RangeOfMotionLimits.Limits.Right
/// The limits for SternoClavicularProtraction
#var AnyVector SternoClavicularProtraction = DesignVar({-23-20, -23+20});
//RangeOfMotionLimits.Limits.Right
/// The limits for SternoClavicularElevation
#var AnyVector SternoClavicularElevation = DesignVar({11.5-11.5, 11.5+70});
//RangeOfMotionLimits.Limits.Right
/// The limits for SternoClavicularAxialRotation
#var AnyVector SternoClavicularAxialRotation = DesignVar({-20-5, -20+5});
//RangeOfMotionLimits.Limits.Right
/// The limits for GlenohumeralFlexion
#var AnyVector GlenohumeralFlexion = DesignVar({-70, 180});
//RangeOfMotionLimits.Limits.Right
/// The limits for GlenohumeralAbduction
#var AnyVector GlenohumeralAbduction = DesignVar({-5, 180});
//RangeOfMotionLimits.Limits.Right
/// The limits for GlenohumeralExternalRotation
#var AnyVector GlenohumeralExternalRotation = DesignVar({-50, 50});
//RangeOfMotionLimits.Limits.Right
/// The limits for ElbowFlexion
#var AnyVector ElbowFlexion = DesignVar({0, 160});
//RangeOfMotionLimits.Limits.Right
/// The limits for ElbowPronation
#var AnyVector ElbowPronation = DesignVar({-90, 90});
//RangeOfMotionLimits.Limits.Right
/// The limits for WristFlexion
#var AnyVector WristFlexion = DesignVar({-90, 90});
//RangeOfMotionLimits.Limits.Right
/// The limits for WristAbduction
#var AnyVector WristAbduction = DesignVar({-30, 30});
//RangeOfMotionLimits.Limits.Right
/// The limits for HipFlexion
#var AnyVector HipFlexion = DesignVar({-30, 100});
//RangeOfMotionLimits.Limits.Right
/// The limits for HipAbduction
#var AnyVector HipAbduction = DesignVar({-20, 45});
//RangeOfMotionLimits.Limits.Right
/// The limits for HipExternalRotation
#var AnyVector HipExternalRotation = DesignVar({-45, 60});
//RangeOfMotionLimits.Limits.Right
/// The limits for KneeFlexion
#var AnyVector KneeFlexion = DesignVar({0, 160});
//RangeOfMotionLimits.Limits.Right
/// The limits for AnklePlantarFlexion
#var AnyVector AnklePlantarFlexion = DesignVar({-80, 40});
//RangeOfMotionLimits.Limits.Right
/// The limits for SubTalarEversion
#var AnyVector SubTalarEversion = DesignVar({-40, 40});
};
AnyFolder Left =
{
//RangeOfMotionLimits.Limits.Left
/// The limits for SternoClavicularProtraction
#var AnyVector SternoClavicularProtraction = DesignVar({-23-20, -23+20});
//RangeOfMotionLimits.Limits.Left
/// The limits for SternoClavicularElevation
#var AnyVector SternoClavicularElevation = DesignVar({11.5-11.5, 11.5+70});
//RangeOfMotionLimits.Limits.Left
/// The limits for SternoClavicularAxialRotation
#var AnyVector SternoClavicularAxialRotation = DesignVar({-20-5, -20+5});
//RangeOfMotionLimits.Limits.Left
/// The limits for GlenohumeralFlexion
#var AnyVector GlenohumeralFlexion = DesignVar({-70, 180});
//RangeOfMotionLimits.Limits.Left
/// The limits for GlenohumeralAbduction
#var AnyVector GlenohumeralAbduction = DesignVar({-5, 180});
//RangeOfMotionLimits.Limits.Left
/// The limits for GlenohumeralExternalRotation
#var AnyVector GlenohumeralExternalRotation = DesignVar({-50, 50});
//RangeOfMotionLimits.Limits.Left
/// The limits for ElbowFlexion
#var AnyVector ElbowFlexion = DesignVar({0, 160});
//RangeOfMotionLimits.Limits.Left
/// The limits for ElbowPronation
#var AnyVector ElbowPronation = DesignVar({-90, 90});
//RangeOfMotionLimits.Limits.Left
/// The limits for WristFlexion
#var AnyVector WristFlexion = DesignVar({-90, 90});
//RangeOfMotionLimits.Limits.Left
/// The limits for WristAbduction
#var AnyVector WristAbduction = DesignVar({-30, 30});
//RangeOfMotionLimits.Limits.Left
/// The limits for HipFlexion
#var AnyVector HipFlexion = DesignVar({-30, 100});
//RangeOfMotionLimits.Limits.Left
/// The limits for HipAbduction
#var AnyVector HipAbduction = DesignVar({-20, 45});
//RangeOfMotionLimits.Limits.Left
/// The limits for HipExternalRotation
#var AnyVector HipExternalRotation = DesignVar({-45, 60});
//RangeOfMotionLimits.Limits.Left
/// The limits for KneeFlexion
#var AnyVector KneeFlexion = DesignVar({0, 160});
//RangeOfMotionLimits.Limits.Left
/// The limits for AnklePlantarFlexion
#var AnyVector AnklePlantarFlexion = DesignVar({-80, 40});
//RangeOfMotionLimits.Limits.Left
/// The limits for SubTalarEversion
#var AnyVector SubTalarEversion = DesignVar({-40, 40});
};
};
AnyFolder& InterfaceRef = HUMAN_MODEL.BodyModel.Interface;
AnyFolder Trunk =
{
#if PELVIS_THORAX_EXTENSION == "On"
AnyFolder PelvisThoraxExtension =
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Trunk.PelvisThoraxExtension
) = { LowerLimit =...Limits.Trunk.PelvisThoraxExtension[0]; HighLimit = ...Limits.Trunk.PelvisThoraxExtension[1]; MeasureConversion=180/pi; };
};
#endif
#if PELVIS_THORAX_LATERAL_BENDING == "On"
AnyFolder PelvisThoraxLateralBending=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Trunk.PelvisThoraxLateralBending
) = { LowerLimit =...Limits.Trunk.PelvisThoraxLateralBending[0]; HighLimit = ...Limits.Trunk.PelvisThoraxLateralBending[1]; MeasureConversion=180/pi; };
};
#endif
#if PELVIS_THORAX_ROTATION == "On"
AnyFolder PelvisThoraxRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Trunk.PelvisThoraxRotation
) = { LowerLimit =...Limits.Trunk.PelvisThoraxRotation[0]; HighLimit = ...Limits.Trunk.PelvisThoraxRotation[1]; MeasureConversion=180/pi; };
};
#endif
#if SKULL_THORAX_FLEXION == "On"
AnyFolder SkullThoraxFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Trunk.SkullThoraxFlexion
) = { LowerLimit =...Limits.Trunk.SkullThoraxFlexion[0]; HighLimit = ...Limits.Trunk.SkullThoraxFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if SKULL_THORAX_LATERALBENDING == "On"
AnyFolder SkullThoraxLateralBending=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Trunk.SkullThoraxLateralBending
) = { LowerLimit =...Limits.Trunk.SkullThoraxLateralBending[0]; HighLimit = ...Limits.Trunk.SkullThoraxLateralBending[1]; MeasureConversion=180/pi; };
};
#endif
#if SKULL_THORAX_ROTATION == "On"
AnyFolder SkullThoraxRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Trunk.SkullThoraxRotation
) = { LowerLimit =...Limits.Trunk.SkullThoraxRotation[0]; HighLimit = ...Limits.Trunk.SkullThoraxRotation[1]; MeasureConversion=180/pi; };
};
#endif
};
AnyFolder Right =
{
#if ARM_RIGHT == 1
#if STERNO_CLAVICULAR_PROTRACTION == "On"
AnyFolder SternoClavicularProtraction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.SternoClavicularProtraction
) = { LowerLimit =...Limits.Right.SternoClavicularProtraction[0]; HighLimit = ...Limits.Right.SternoClavicularProtraction[1]; MeasureConversion=180/pi; };
};
#endif
#if STERNO_CLAVICULAR_ELEVATION == "On"
AnyFolder SternoClavicularElevation = {
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.SternoClavicularElevation
) = { LowerLimit =...Limits.Right.SternoClavicularElevation[0]; HighLimit = ...Limits.Right.SternoClavicularElevation[1]; MeasureConversion=180/pi; };
};
#endif
#if STERNO_CLAVICULAR_AXIALROTATION == "On"
AnyFolder SternoClavicularAxialRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.SternoClavicularAxialRotation
) = { LowerLimit =...Limits.Right.SternoClavicularAxialRotation[0]; HighLimit = ...Limits.Right.SternoClavicularAxialRotation[1]; MeasureConversion=180/pi; };
};
#endif
#if GLENOHUMERAL_FLEXION == "On"
AnyFolder GlenohumeralFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.GlenohumeralFlexion
) = { LowerLimit =...Limits.Right.GlenohumeralFlexion[0]; HighLimit = ...Limits.Right.GlenohumeralFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if GLENOHUMERAL_ABDUCTION == "On"
AnyFolder GlenohumeralAbduction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.GlenohumeralAbduction
) = { LowerLimit =...Limits.Right.GlenohumeralAbduction[0]; HighLimit = ...Limits.Right.GlenohumeralAbduction[1]; MeasureConversion=180/pi; };
};
#endif
#if GLENOHUMERAL_EXTERNAL_ROTATION == "On"
AnyFolder GlenohumeralExternalRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.GlenohumeralExternalRotation
) = { LowerLimit =...Limits.Right.GlenohumeralExternalRotation[0]; HighLimit = ...Limits.Right.GlenohumeralExternalRotation[1]; MeasureConversion=180/pi; };
};
#endif
#if ELBOW_FLEXION == "On"
AnyFolder ElbowFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.ElbowFlexion
) = { LowerLimit =...Limits.Right.ElbowFlexion[0]; HighLimit = ...Limits.Right.ElbowFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if ELBOW_PRONATION == "On"
AnyFolder ElbowPronation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.ElbowPronation
) = { LowerLimit =...Limits.Right.ElbowPronation[0]; HighLimit = ...Limits.Right.ElbowPronation[1]; MeasureConversion=180/pi; };
};
#endif
#if WRIST_FLEXION == "On"
AnyFolder WristFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.WristFlexion
) = { LowerLimit =...Limits.Right.WristFlexion[0]; HighLimit = ...Limits.Right.WristFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if WRIST_ABDUCTION == "On"
AnyFolder WristAbduction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.WristAbduction
) = { LowerLimit =...Limits.Right.WristAbduction[0]; HighLimit = ...Limits.Right.WristAbduction[1]; MeasureConversion=180/pi; };
};
#endif
#endif
#if LEG_RIGHT
#if HIP_FLEXION == "On"
AnyFolder HipFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.HipFlexion
) = { LowerLimit =...Limits.Right.HipFlexion[0]; HighLimit = ...Limits.Right.HipFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if HIP_ABDUCTION == "On"
AnyFolder HipAbduction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.HipAbduction
) = { LowerLimit =...Limits.Right.HipAbduction[0]; HighLimit = ...Limits.Right.HipAbduction[1]; MeasureConversion=180/pi; };
};
#endif
#if HIP_EXTERNAL_ROTATION == "On"
AnyFolder HipExternalRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.HipExternalRotation
) = { LowerLimit =...Limits.Right.HipExternalRotation[0]; HighLimit = ...Limits.Right.HipExternalRotation[1]; MeasureConversion=180/pi; };
};
#endif
#if KNEE_FLEXION == "On"
AnyFolder KneeFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.KneeFlexion
) = { LowerLimit =...Limits.Right.KneeFlexion[0]; HighLimit = ...Limits.Right.KneeFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if ANKLE_PLANTAR_FLEXION == "On"
AnyFolder AnklePlantarFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.AnklePlantarFlexion
) = { LowerLimit =...Limits.Right.AnklePlantarFlexion[0]; HighLimit = ...Limits.Right.AnklePlantarFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#endif
#if LEG_RIGHT
#if SUBTALAR_EVERSION == "On"
AnyFolder SubTalarEversion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Right.SubTalarEversion
) = { LowerLimit =...Limits.Right.SubTalarEversion[0]; HighLimit = ...Limits.Right.SubTalarEversion[1]; MeasureConversion=180/pi; };
};
#endif
#endif
};//Right
AnyFolder Left =
{
#if ARM_LEFT == 1
#if STERNO_CLAVICULAR_PROTRACTION == "On"
AnyFolder SternoClavicularProtraction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.SternoClavicularProtraction
) = { LowerLimit =...Limits.Left.SternoClavicularProtraction[0]; HighLimit = ...Limits.Left.SternoClavicularProtraction[1]; MeasureConversion=180/pi; };
};
#endif
#if STERNO_CLAVICULAR_ELEVATION == "On"
AnyFolder SternoClavicularElevation = {
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.SternoClavicularElevation
) = { LowerLimit =...Limits.Left.SternoClavicularElevation[0]; HighLimit = ...Limits.Left.SternoClavicularElevation[1]; MeasureConversion=180/pi; };
};
#endif
#if STERNO_CLAVICULAR_AXIALROTATION == "On"
AnyFolder SternoClavicularAxialRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.SternoClavicularAxialRotation
) = { LowerLimit =...Limits.Left.SternoClavicularAxialRotation[0]; HighLimit = ...Limits.Left.SternoClavicularAxialRotation[1]; MeasureConversion=180/pi; };
};
#endif
#if GLENOHUMERAL_FLEXION == "On"
AnyFolder GlenohumeralFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.GlenohumeralFlexion
) = { LowerLimit =...Limits.Left.GlenohumeralFlexion[0]; HighLimit = ...Limits.Left.GlenohumeralFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if GLENOHUMERAL_ABDUCTION == "On"
AnyFolder GlenohumeralAbduction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.GlenohumeralAbduction
) = { LowerLimit =...Limits.Left.GlenohumeralAbduction[0]; HighLimit = ...Limits.Left.GlenohumeralAbduction[1]; MeasureConversion=180/pi; };
};
#endif
#if GLENOHUMERAL_EXTERNAL_ROTATION == "On"
AnyFolder GlenohumeralExternalRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.GlenohumeralExternalRotation
) = { LowerLimit =...Limits.Left.GlenohumeralExternalRotation[0]; HighLimit = ...Limits.Left.GlenohumeralExternalRotation[1]; MeasureConversion=180/pi; };
};
#endif
#if ELBOW_FLEXION == "On"
AnyFolder ElbowFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.ElbowFlexion
) = { LowerLimit =...Limits.Left.ElbowFlexion[0]; HighLimit = ...Limits.Left.ElbowFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if ELBOW_PRONATION == "On"
AnyFolder ElbowPronation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.ElbowPronation
) = { LowerLimit =...Limits.Left.ElbowPronation[0]; HighLimit = ...Limits.Left.ElbowPronation[1]; MeasureConversion=180/pi; };
};
#endif
#if WRIST_FLEXION == "On"
AnyFolder WristFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.WristFlexion
) = { LowerLimit =...Limits.Left.WristFlexion[0]; HighLimit = ...Limits.Left.WristFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if WRIST_ABDUCTION == "On"
AnyFolder WristAbduction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.WristAbduction
) = { LowerLimit =...Limits.Left.WristAbduction[0]; HighLimit = ...Limits.Left.WristAbduction[1]; MeasureConversion=180/pi; };
};
#endif
#endif
#if LEG_LEFT
#if HIP_FLEXION == "On"
AnyFolder HipFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.HipFlexion
) = { LowerLimit =...Limits.Left.HipFlexion[0]; HighLimit = ...Limits.Left.HipFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if HIP_ABDUCTION == "On"
AnyFolder HipAbduction=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.HipAbduction
) = { LowerLimit =...Limits.Left.HipAbduction[0]; HighLimit = ...Limits.Left.HipAbduction[1]; MeasureConversion=180/pi; };
};
#endif
#if HIP_EXTERNAL_ROTATION == "On"
AnyFolder HipExternalRotation=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.HipExternalRotation
) = { LowerLimit =...Limits.Left.HipExternalRotation[0]; HighLimit = ...Limits.Left.HipExternalRotation[1]; MeasureConversion=180/pi; };
};
#endif
#if KNEE_FLEXION == "On"
AnyFolder KneeFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.KneeFlexion
) = { LowerLimit =...Limits.Left.KneeFlexion[0]; HighLimit = ...Limits.Left.KneeFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#if ANKLE_PLANTAR_FLEXION == "On"
AnyFolder AnklePlantarFlexion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.AnklePlantarFlexion
) = { LowerLimit =...Limits.Left.AnklePlantarFlexion[0]; HighLimit = ...Limits.Left.AnklePlantarFlexion[1]; MeasureConversion=180/pi; };
};
#endif
#endif
#if LEG_LEFT
#if SUBTALAR_EVERSION == "On"
AnyFolder SubTalarEversion=
{
KinLimitsDriver Driver(
KinMeasure= ...InterfaceRef.Left.SubTalarEversion
) = { LowerLimit =...Limits.Left.SubTalarEversion[0]; HighLimit = ...Limits.Left.SubTalarEversion[1]; MeasureConversion=180/pi; };
};
#endif
#endif
};//Left
};
#endif