User Tools

Site Tools


visual3d:documentation:visual3d_signal_types:link_model_based_data_type:joint_angle

Joint Angle (Cardan Sequence)

Joint angles describe the relative orientation between adjacent body segments, providing a measure of rotation that reflects how a joint moves throughout a task.

Overview

This page covers how Visual3D calculates joint angles using Cardan sequences, including the mathematical foundation, default conventions, sign interpretations, and an example calculating the knee angle. It includes rotation sequences, coordinate system dependencies, normalization approaches, and common challenges.

Foundation

Conceptual Framework:

In Visual3D, kinematic variables like joint angles are calculated using the Compute_Model_Based_Data command and stored as LINK_MODEL_BASED item.

NOTE: Unlike other kinematic variables in Visual3D, joint angles are not vectors, they cannot be added or subtracted.

Mathematical Representation

A Joint Angle is the transformation between two segment coordinate systems expressed as a rotation matrix. This rotation matrix is decomposed into a sequence of three ordered rotations about specified axes (Cardan/Euler angles). In Visual3D, this transformation is computed as:

Rotation Matrix (R): A 3×3 orthogonal matrix that completely describes the orientation of one segment relative to another Cardan Decomposition: The rotation matrix R is decomposed into three sequential rotations about body-fixed axes. See the Joint Angle Rotation Matrix page for more detail on how this is calculated.

For an intrinsic X-Y-Z Cardan sequence: R = RX(α)RY(β)RZ(γ) Where:

  1. First rotation (α): Rotation about the X-axis of the reference segment
  2. Second rotation (β): Rotation about the Y-axis after the first rotation has been applied
  3. Third rotation (γ): Rotation about the Z-axis after the first two rotations have been applied

The three angles (α, β, γ) are the Cardan angles that Visual3D outputs as the X, Y, and Z components of the joint angle signal.

Visual3D Default Joint Angle Convention

The default Cardan sequence for calculating joint angles is X-Y-Z, which is equivalent for each leg to:

  1. First rotation (X): Flexion/Extension
  2. Second rotation (Y): Abduction/Adduction
  3. Third rotation (Z): Axial , or External/Internal rotation

Joint angles and related angular signals in Visual3D are represented in degrees, degrees/sec, and degrees/sec² for traditional biomechanical interpretation.

Sign Convention Effects

To illustrate the default segment coordinate systems in Visual3D, consider the right and left lower limbs. These default coordinate systems do not represent the same anatomical reference frames due to the right-hand rule.

ComponentLeft LegRight Leg
X (Red)MedialLateral
Y (Green)AnteriorAnterior
Z (Blue)UpUp

Left Leg (+) Right Leg (+)
Joint X Y Z X Y Z
Knee Extension Abduction External Rotation Extension Adduction Internal Rotation
Hip Flexion Abduction External Rotation Flexion Adduction Internal Rotation
Ankle* Dorsiflexion Eversion Forefoot Abduction Dorsiflexion Inversion Forefoot Adduction

*Based on kinematic foot model (y-axis: heel to toe). Sign conventions differ for kinetic foot model. See Foot and Ankle Angles

The Effect of the Right Hand Rule

As mentioned above, the medial and lateral coordinate system directions for left and right sides are different. This affects the sign convention for joint angles such that signs not consistent between left and right sides. For example, inward rotation of the right leg (rotation about the long axis toward medial) is positive, but inward rotation of the left leg (rotation about the long axis toward medial) is negative.

All joint angles are treated the same in Visual3D, so the direction of positive angle is determined with respect to the segment coordinate system of the reference segment; using the Right Hand Rule. The result of this decision is that flexion/extension has the same sign for left and right legs, but inward/outward rotation and abduction/adduction have opposite signs. The user can change this by negating the necessary terms when the joint angle is defined in the Compute Model Based Items Dialog. Refer here for an example.

The Joint Coordinate System

The Joint Coordinate System (JCS) was proposed by Grood and Suntay [1] where each rotation is functionally and anatomically significant. The JCS uses an axes from each of the two segments that make up the joint. The XYZ Cardan sequence is equivalent to the JCS when using Visual3D's default z-up, y-anterior segment coordinate system. For custom coordinate systems, the sequence must be adjusted to maintain consistency with the Joint Coordinate System. The sequence must be flexion/extension, then abduction/adduction, then external/internal rotation. For a segment coordinate system defined as y-up and x-anterior, the Cardan Sequence equivalent to the Joint Coordinate system is Z-X-Y. In other words, the first rotation is flexion/extension about the reference coordinate system, the last rotation is external/internal rotation about the other coordinate system, and the middle rotation is about an axis perpendicular to the other two axes.

Cardan Sequence

We output the 3 components of the Cardan angle 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 sequences (e.g., ZYZ) are characterized by identical first and third rotational components. In this convention, the output angles are defined with respect to the first axis, second axis, and first axis again, respectively.

Joint Angle Normalization

Normalization is the process of referencing a joint (or segment) angle to a specific reference posture. The reference posture is typically the static standing trial used to define the link model, so that all joint angles in this posture would be zero. In Visual3D, the recommended method is to use virtual segments whose coordinate systems are explicitly defined to be aligned during the reference posture. Joint angles are not vectors, which means they can not be added or subtracted. A normalized joint angle cannot be computed as “three offsets from a reference posture”.

In Visual3D joint angles are the transformation from one segment coordinate system to another segment coordinate system, so the definition (e.g. orientation) of the segment coordinate systems matters. When two segment coordinate systems are perfectly aligned (even if spatially separated) the resulting joint angle is zero.

Example

Knee Angle

To calculate the right knee angle, open the compute_model_based pipeline from the pipeline builder. Set the segment as the shank, and the reference segment as the thigh. To define flexion as positive, hit 'Use Negative X'.

 hover text

The X, Y, and Z components of the joint angle are computed using the XYZ cardan sequence, plotted below.

 hover text

Ankle Angle

There are two ways to define a single segmented foot.

  1. The kinetic foot: used for kinetic calculations, with the proximal joint defined at the ankle.
  2. The kinematic foot (often referred to as Virtual Foot): is used for kinematic calculations. The segment coordinate system of the kinematic foot is defined in such a way that the joint angle has a more clinically relevant meaning.

Read more about the different foot definitions and their examples here: Foot and Ankle Angles.

Pelvis Angle

The Pelvis Angle typically refers to the orientation of the Pelvis relative to the laboratory. There are a number of considerations for calculating this quantity, including:

Common Issues / FAQ

  • Default Sign Convention: Visual3D will only allow a right hand coordinate system so the positive direction of rotation about an axis will need to be verified by inspecting the Segment Coordinate System visually in Visual3D's Model Builder mode.
  • The Joint Coordinate System: Grood/Suntay have a different sign convention, and they have an offset of pi/2 in the second rotation (ab-adduction). If you account for those differences, the XYZ Cardan sequence is equivalent to the Joint Coordinate System.
  • 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.
  • 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. The consequence is that there is no standard sequence of rotations for describing the shoulder motion, despite the recommendation by the International Shoulder Group.

Suggested Resources

Further information about joint angles can be found in the Research Methods in Biomechanics textbook.

See Also

Normalization of the Foot:

Normalization of the Pelvis:

The Coda and Helen Hayes pelvis are tilted forward approximately 20 degrees from the horizontal. In describing the orientation of the pelvis or for describing the hip joint angle, it is often convenient to define a pelvis angle that has a coronal plane parallel to the floor (e.g. a vertical segment with zero tilt).

Defining Virtual Laboratory Segments:

A Virtual Laboratory segment can be created for many modelling conveniences, including normalizing joint angles.

References

[1] G. K. Cole, B. M. Nigg, J. L. Ronsky, and M. R. Yeadon, “Application of the joint coordinate system to three-dimensional joint attitude and movement representation: a standardization proposal,” J Biomech Eng, vol. 115, no. 4A, pp. 344–349, Nov. 1993, doi: 10.1115/1.2895496.

visual3d/documentation/visual3d_signal_types/link_model_based_data_type/joint_angle.txt · Last modified: by wikisysop