visual3d:documentation:pipeline:model_based_data_commands:joint_angle
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
visual3d:documentation:pipeline:model_based_data_commands:joint_angle [2024/06/19 14:01] – created sgranger | visual3d:documentation:pipeline:model_based_data_commands:joint_angle [2024/08/26 19:47] (current) – [Examples] wikisysop | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Joint Angle ====== | ||
+ | |||
Joint angles represent a conceptual challenge to many users. Part of the challenge is related to the fact that joint angles are not vectors (unlike every other Kinematic variable in Visual3D). This means that they can't be added or subtracted, which makes the specification of a reference angle awkward. Another part of the challenge is related to the fact that there are a number of clinical/ | Joint angles represent a conceptual challenge to many users. Part of the challenge is related to the fact that joint angles are not vectors (unlike every other Kinematic variable in Visual3D). This means that they can't be added or subtracted, which makes the specification of a reference angle awkward. Another part of the challenge is related to the fact that there are a number of clinical/ | ||
Line 5: | Line 7: | ||
Further information about joint angles can be found in the [[https:// | Further information about joint angles can be found in the [[https:// | ||
- | ===== Transformation Matrix | + | ==== Transformation Matrix ==== |
A Joint Angle is the transformation between two coordinate system that is described by a rotation matrix. | A Joint Angle is the transformation between two coordinate system that is described by a rotation matrix. | ||
Line 11: | Line 13: | ||
This rotation matrix is rarely used to report the joint angle. From the rotation matrix several different representations are possible, such as Cardan/ | This rotation matrix is rarely used to report the joint angle. From the rotation matrix several different representations are possible, such as Cardan/ | ||
- | ===== Units for Joint Angles | + | ==== Units for Joint Angles ==== |
Joint Angles, Joint Angular Velocity, and Joint Angular Acceleration are the only signals in Visual3D that don't use standard MKS units. Visual3D uses degrees, degrees/ | Joint Angles, Joint Angular Velocity, and Joint Angular Acceleration are the only signals in Visual3D that don't use standard MKS units. Visual3D uses degrees, degrees/ | ||
- | ===== Visual3D Default Joint Angle Conventions | + | ==== Visual3D Default Joint Angle Conventions ==== |
To illustrate the default segment coordinate system in Visual3D, let's look at the right and left legs. The default segment coordinate system in Visual3D is defined as follows: | To illustrate the default segment coordinate system in Visual3D, let's look at the right and left legs. The default segment coordinate system in Visual3D is defined as follows: | ||
Line 42: | Line 44: | ||
Knee(EXT+) (ABD+) (EXTROT+) | Knee(EXT+) (ABD+) (EXTROT+) | ||
Hip(FL+)(ABD+) (EXTROT+) | Hip(FL+)(ABD+) (EXTROT+) | ||
- | ==== The case of the Ankle Angle ==== | + | === The case of the Ankle Angle === |
The ankle is especially confusing because of differences between the typical kinetic foot and the typical kinematic only foot. | The ankle is especially confusing because of differences between the typical kinetic foot and the typical kinematic only foot. | ||
Line 48: | Line 50: | ||
The typical kinetic foot is displayed here: | The typical kinetic foot is displayed here: | ||
- | {{tutorial1_16.jpg}} | + | {{:tutorial1_16.jpg}} |
For this representation of the foot segment the z-axis is directed from the metatarsals to the ankle center. | For this representation of the foot segment the z-axis is directed from the metatarsals to the ankle center. | ||
Line 62: | Line 64: | ||
A common kinematic only foot is displayed here: | A common kinematic only foot is displayed here: | ||
- | {{RFT_2_Rotated.jpg}} | + | {{:RFT_2_Rotated.jpg}} |
For this representation of the virtual foot segment the y-axis is directed from the heel to the toe. | For this representation of the virtual foot segment the y-axis is directed from the heel to the toe. | ||
Line 74: | Line 76: | ||
Ankle (DFL+) (EVER+) (FFABDUCTION+) | Ankle (DFL+) (EVER+) (FFABDUCTION+) | ||
- | ===== The Effect of the Right Hand Rule ===== | + | ==== The Effect of the Right Hand Rule ==== |
As discussed in the [[# | As discussed in the [[# | ||
Line 82: | Line 84: | ||
The result of this decision is that flexion/ | The result of this decision is that flexion/ | ||
- | The user can change this by negating the necessary terms when the joint angle is defined in the **Compute Model Based Items** Dialog. Refer [[Visual3D: | + | The user can change this by negating the necessary terms when the joint angle is defined in the **Compute Model Based Items** Dialog. Refer [[Visual3D: |
- | ===== The Joint Coordinate System | + | ==== The Joint Coordinate System ==== |
As a default, Visual3D calculates Joint Angles using a Cardan sequence of rotations. In the section [[# | As a default, Visual3D calculates Joint Angles using a Cardan sequence of rotations. In the section [[# | ||
Line 100: | Line 102: | ||
**Note:** Grood/ | **Note:** Grood/ | ||
- | ===== Cardan Sequence | + | ==== Cardan Sequence ==== |
In early versions of Visual3D (version 2 and lower), we output the 3 components of the Cardan angle in terms of the first, second and third rotation. This was confusing to people because the edit report dialog refers to the first three components as XYZ. In Version 3.00.3 we changed the output so that the X component of the joint angle refers to the rotation about the X axis regardless of the sequence, similarly for Y and Z rotations. | In early versions of Visual3D (version 2 and lower), we output the 3 components of the Cardan angle in terms of the first, second and third rotation. This was confusing to people because the edit report dialog refers to the first three components as XYZ. In Version 3.00.3 we changed the output so that the X component of the joint angle refers to the rotation about the X axis regardless of the sequence, similarly for Y and Z rotations. | ||
- | ===== Euler Sequence | + | ==== Euler Sequence ==== |
In version 3.28 we introduced the Euler sequences (e.g. ZYZ), in which the first and third component are the same. In this case instead of referring to the components as XYZ, we revert to our original scheme, in which the output angle is defined with respect to the first axis, second axis, and third axes. | In version 3.28 we introduced the Euler sequences (e.g. ZYZ), in which the first and third component are the same. In this case instead of referring to the components as XYZ, we revert to our original scheme, in which the output angle is defined with respect to the first axis, second axis, and third axes. | ||
- | ===== Helical Angle ===== | + | ==== Helical Angle ==== |
The helical angle calculation is output as vector rather than a unit vector and an angle of rotation. | The helical angle calculation is output as vector rather than a unit vector and an angle of rotation. | ||
Line 127: | Line 129: | ||
Step 3) Use the pipeline command Divide_Signal_BY_Constant to divide the result of “Compute Model BasedàHelical_Angle” by the result of the Signal Magnitude (Divide_Signal_BY_Constant is also under Signal Math in the Pipeline). This will give you the unit vector you are looking for. | Step 3) Use the pipeline command Divide_Signal_BY_Constant to divide the result of “Compute Model BasedàHelical_Angle” by the result of the Signal Magnitude (Divide_Signal_BY_Constant is also under Signal Math in the Pipeline). This will give you the unit vector you are looking for. | ||
- | ===== Joint Angle Normalization | + | ==== Joint Angle Normalization ==== |
Normalization is the process of referencing a joint (or segment) angle to the reference posture. The reference posture is the static posture (often referred to as the standing pose) captured as the model posture (e.g. the C3D file used to define the link model). In Visual3D the reference posture is the static trial used for the link model. Joint angles aren't vectors, which means they can not be added or subtracted. A normalized joint angle is, therefore, not computed as 3 offsets from a reference posture. | Normalization is the process of referencing a joint (or segment) angle to the reference posture. The reference posture is the static posture (often referred to as the standing pose) captured as the model posture (e.g. the C3D file used to define the link model). In Visual3D the reference posture is the static trial used for the link model. Joint angles aren't vectors, which means they can not be added or subtracted. A normalized joint angle is, therefore, not computed as 3 offsets from a reference posture. | ||
Line 138: | Line 140: | ||
Note: In Visual3D joint angles are simply the transformation from one segment coordinate system to another segment coordinate system, so it follows that the definition (e.g. orientation) of the segment coordinate systems matters. For example, if two segment coordinate systems are aligned perfectly (even though they may be displaced from each other) the resulting joint angle signal is zero. | Note: In Visual3D joint angles are simply the transformation from one segment coordinate system to another segment coordinate system, so it follows that the definition (e.g. orientation) of the segment coordinate systems matters. For example, if two segment coordinate systems are aligned perfectly (even though they may be displaced from each other) the resulting joint angle signal is zero. | ||
- | [[Visual3D: | ||
| **Deprecated examples** | | **Deprecated examples** | ||
|**These examples are not recommended for use and are included for backwards compatibility only.**\\ \\ In early version of Visual3D, using default normalization of the knee causes the RKNEE_ANGLE signal to be zero in all 3 components when the subject is in the standing posture. This has not affect on the segment coordinate system definitions, | |**These examples are not recommended for use and are included for backwards compatibility only.**\\ \\ In early version of Visual3D, using default normalization of the knee causes the RKNEE_ANGLE signal to be zero in all 3 components when the subject is in the standing posture. This has not affect on the segment coordinate system definitions, | ||
- | ===== Examples ===== | + | ==== Examples ==== |
+ | |||
+ | === Pelvis Segment Angle === | ||
- | ==== Pelvis | + | The [[visual3d: |
- | ==== Normalizing the Pelvis Angle ==== | + | === Normalizing the Pelvis Angle === |
- | Normalizing the Pelvis | + | [[Visual3D: |
- | ==== Shoulder Angle ==== | + | === Shoulder Angle === |
There is no single definition of the shoulder joint angle that is anatomically meaningful for the full range of motion of the shoulder joint. | There is no single definition of the shoulder joint angle that is anatomically meaningful for the full range of motion of the shoulder joint. | ||
Line 157: | Line 160: | ||
A good description of the challenges of the shoulder angle by Jim Richards can be found [[[https:// | A good description of the challenges of the shoulder angle by Jim Richards can be found [[[https:// | ||
- | ==== Computing the Range of Motion ==== | + | === Computing the Range of Motion === |
+ | The range of motion of the pelvis angle is commonly defined as the range of each component of the segment angle. While this isn't mathematically correct because joint angles are not vectors, it is still quite common. | ||
- | ==== Creating a Virtual Laboratory: Example 1 ==== | + | === Creating a Virtual Laboratory: Example 1 === |
visual3d/documentation/pipeline/model_based_data_commands/joint_angle.1718805706.txt.gz · Last modified: 2024/06/19 14:01 by sgranger