RangeOfMotionLimits_template

RangeOfMotionLimits_template#

Create joint limits as soft kinematic constraints given some range of motion.

Listing 9 Include this file this file to use#
#include "<AMMR_TOOLS>\ModelUtilities/KinematicLimits/RangeOfMotionLimits_template.any"`

#RangeOfMotionLimits#

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.

Example

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:

  RangeOfMotionLimits RoMLimits(
    PELVIS_THORAX_LATERAL_BENDING = "Off"
    ...

Full signature

RangeOfMotionLimits <ObjectName>(
  ARM_RIGHT=<required>,
  ARM_LEFT=<required>,
  LEG_RIGHT=<required>,
  LEG_LEFT=<required>,
  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

__CLASS__:

AnyFolder

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 (Required)

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 (Required)

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 (Required)

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 (Required)

PELVIS_THORAX_EXTENSION:

Enables/disables limits for the pelvis thorax extension (Default: “On”)

PELVIS_THORAX_LATERAL_BENDING:

Enables/disables limits for the pelvis thorax lateral bending (Default: “On”)

PELVIS_THORAX_ROTATION:

Enables/disables limits for the pelvis thorax rotation (Default: “On”)

SKULL_THORAX_FLEXION:

Enables/disables limits for the skull thorax flexion (Default: “On”)

SKULL_THORAX_LATERALBENDING:

Enables/disables limits for the skull thorax lateral bending (Default: “On”)

SKULL_THORAX_ROTATION:

Enables/disables limits for the skull thorax rotation (Default: “On”)

STERNO_CLAVICULAR_PROTRACTION:

Enables/disables limits for the sterno clavicular protraction (Default: “On”)

STERNO_CLAVICULAR_ELEVATION:

Enables/disables limits for the sterno clavicular elevation (Default: “On”)

STERNO_CLAVICULAR_AXIALROTATION:

Enables/disables limits for the sterno clavicular axial rotation (Default: “Off”)

GLENOHUMERAL_FLEXION:

Enables/disables limits for the glenohumeral flexion (Default: “On”)

GLENOHUMERAL_EXTERNAL_ROTATION:

Enables/disables limits for the glenohumeral external rotation (Default: “On”)

GLENOHUMERAL_ABDUCTION:

Enables/disables limits for the glenohumeral abduction (Default: “On”)

ELBOW_FLEXION:

Enables/disables limits for the elbow flexion (Default: “On”)

ELBOW_PRONATION:

Enables/disables limits for the elbow pronation (Default: “On”)

WRIST_FLEXION:

Enables/disables limits for the wrist flexion (Default: “On”)

WRIST_ABDUCTION:

Enables/disables limits for the wrist abduction (Default: “On”)

HIP_ABDUCTION:

Enables/disables limits for the hip abduction (Default: “On”)

HIP_FLEXION:

Enables/disables limits for the hip flexion (Default: “On”)

HIP_EXTERNAL_ROTATION:

Enables/disables limits for the hip external rotation (Default: “On”)

KNEE_FLEXION:

Enables/disables limits for the knee flexion (Default: “On”)

ANKLE_PLANTAR_FLEXION:

Enables/disables limits for the ankle plantar flexion (Default: “On”)

SUBTALAR_EVERSION:

Enables/disables limits for the subtalar eversion (Default: “On”)

HUMAN_MODEL:

The human model to which the limits should be applied. (Default: Main.HumanModel)

Optional initialization members

Limits.Trunk.PelvisThoraxExtension = DesignVar({ -80, 30});
class type:

AnyVector

The limits for PelvisThoraxExtension

Limits.Trunk.PelvisThoraxLateralBending = DesignVar({ -40, 40});
class type:

AnyVector

The limits for PelvisThoraxLateralBending

Limits.Trunk.PelvisThoraxRotation = DesignVar({-90, 90});
class type:

AnyVector

The limits for PelvisThoraxRotation

Limits.Trunk.SkullThoraxFlexion = DesignVar({-70, 70});
class type:

AnyVector

The limits for SkullThoraxFlexion

Limits.Trunk.SkullThoraxLateralBending = DesignVar({-60, 60});
class type:

AnyVector

The limits for SkullThoraxLateralBending

Limits.Trunk.SkullThoraxRotation = DesignVar({-90, 90});
class type:

AnyVector

The limits for SkullThoraxRotation

Limits.Right.SternoClavicularProtraction = DesignVar({-23-20, -23+20});
class type:

AnyVector

The limits for SternoClavicularProtraction

Limits.Right.SternoClavicularElevation = DesignVar({11.5-11.5, 11.5+70});
class type:

AnyVector

The limits for SternoClavicularElevation

Limits.Right.SternoClavicularAxialRotation = DesignVar({-20-5, -20+5});
class type:

AnyVector

The limits for SternoClavicularAxialRotation

Limits.Right.GlenohumeralFlexion = DesignVar({-70, 180});
class type:

AnyVector

The limits for GlenohumeralFlexion

Limits.Right.GlenohumeralAbduction = DesignVar({-5, 180});
class type:

AnyVector

The limits for GlenohumeralAbduction

Limits.Right.GlenohumeralExternalRotation = DesignVar({-50, 50});
class type:

AnyVector

The limits for GlenohumeralExternalRotation

Limits.Right.ElbowFlexion = DesignVar({0, 160});
class type:

AnyVector

The limits for ElbowFlexion

Limits.Right.ElbowPronation = DesignVar({-90, 90});
class type:

AnyVector

The limits for ElbowPronation

Limits.Right.WristFlexion = DesignVar({-90, 90});
class type:

AnyVector

The limits for WristFlexion

Limits.Right.WristAbduction = DesignVar({-30, 30});
class type:

AnyVector

The limits for WristAbduction

Limits.Right.HipFlexion = DesignVar({-30, 100});
class type:

AnyVector

The limits for HipFlexion

Limits.Right.HipAbduction = DesignVar({-20, 45});
class type:

AnyVector

The limits for HipAbduction

Limits.Right.HipExternalRotation = DesignVar({-45, 60});
class type:

AnyVector

The limits for HipExternalRotation

Limits.Right.KneeFlexion = DesignVar({0, 160});
class type:

AnyVector

The limits for KneeFlexion

Limits.Right.AnklePlantarFlexion = DesignVar({-80, 40});
class type:

AnyVector

The limits for AnklePlantarFlexion

Limits.Right.SubTalarEversion = DesignVar({-40, 40});
class type:

AnyVector

The limits for SubTalarEversion

Limits.Left.SternoClavicularProtraction = DesignVar({-23-20, -23+20});
class type:

AnyVector

The limits for SternoClavicularProtraction

Limits.Left.SternoClavicularElevation = DesignVar({11.5-11.5, 11.5+70});
class type:

AnyVector

The limits for SternoClavicularElevation

Limits.Left.SternoClavicularAxialRotation = DesignVar({-20-5, -20+5});
class type:

AnyVector

The limits for SternoClavicularAxialRotation

Limits.Left.GlenohumeralFlexion = DesignVar({-70, 180});
class type:

AnyVector

The limits for GlenohumeralFlexion

Limits.Left.GlenohumeralAbduction = DesignVar({-5, 180});
class type:

AnyVector

The limits for GlenohumeralAbduction

Limits.Left.GlenohumeralExternalRotation = DesignVar({-50, 50});
class type:

AnyVector

The limits for GlenohumeralExternalRotation

Limits.Left.ElbowFlexion = DesignVar({0, 160});
class type:

AnyVector

The limits for ElbowFlexion

Limits.Left.ElbowPronation = DesignVar({-90, 90});
class type:

AnyVector

The limits for ElbowPronation

Limits.Left.WristFlexion = DesignVar({-90, 90});
class type:

AnyVector

The limits for WristFlexion

Limits.Left.WristAbduction = DesignVar({-30, 30});
class type:

AnyVector

The limits for WristAbduction

Limits.Left.HipFlexion = DesignVar({-30, 100});
class type:

AnyVector

The limits for HipFlexion

Limits.Left.HipAbduction = DesignVar({-20, 45});
class type:

AnyVector

The limits for HipAbduction

Limits.Left.HipExternalRotation = DesignVar({-45, 60});
class type:

AnyVector

The limits for HipExternalRotation

Limits.Left.KneeFlexion = DesignVar({0, 160});
class type:

AnyVector

The limits for KneeFlexion

Limits.Left.AnklePlantarFlexion = DesignVar({-80, 40});
class type:

AnyVector

The limits for AnklePlantarFlexion

Limits.Left.SubTalarEversion = DesignVar({-40, 40});
class type:

AnyVector

The limits for SubTalarEversion