The main task in the joint kinematics is to compute the relative orientation angles of the segments to their respective proximally-linked segments at the joints. This is done based on the local reference frames of the segments defined. The segmental reference frames can be obtained from the coordinates of the markers and joint centers. For example, the unit coordinate vectors of the pelvis and the right thigh shown in Figure 1 can be obtained as follows:
where i, j & k = the unit coordinate vectors. Describing the unit coordinate vectors as row matrices:
See Transformation Matrix in the Axis Transformation section for the details. The unit coordinate vectors of the segmental reference frames form the transformation matrices from the global frame, respectively:
where P = the proximal segment, D = the distal segment, and G = the global inertial reference frame. The transformation matrix from the proximal reference frame (frame P) to the distal reference frame (frame D) can be computed from the transformation matrices shown in :
where J stands for the joint involved. See the Transformation Matrix page for the details of computation of the transformation matrix from one local frame to another.
where f, q & y = the relative orientation angles of the distal segment to the proximal segment forming the joint, c(x) = cos x, and s(x) = sin x.
In , qJ is the first angle to compute. The general solutions of angle qJ are
where n = integer number which is quite likely to be 0 for angle qJ. As shown in , two possible solutions can be obtained as qJ. The return value of the inverse sine function (sin-1) ranges
Since angle q is the orientation angle about the Y axis, it generally stays within the range shown in  with one exception: the shoulder. In the shoulder, angle qJ can be outside the range shown in . Let's use the shoulder abduction from the anatomical reference frame as an example. The abduction angle in fact coincides with angle qJ in this case and the abduction angle can obviously exceed p/2 (90°) as shown in Figure 2. The red arrow in the figure shows the motion of the upperarm from position 1 to position 2, passing the 90° position.
The more direct and useful solutions for angle qJ would be
The solutions shown in  are in the range of
In Figure 3, the purple arrows represent case 1 shown in . In order to bring the upperarm reference frame to position 2 in this case, one must first flex the shoulder (fJ) by p. Therefore, one will observe discontinuity in fJ between positions 1 and 2 while qJ remains smaller than p/2. On the other hand, the blue arrow represents case 2 shown in . Angle fJ stays (= 0) while angle qJ passes and becomes larger than p/2. One can only find the true solution by considering the continuous motion of the upperarm.
Once qJ is known, fJ and yJ can be computed. In both cases, the sine and cosine of the angle are given and one can use the inverse tangent (tan-1) function for this job. The general solution are
where n = integer number which is not necessarily 0, especially in the shoulder joint. In addition, n may not be zero when one computes the relative orientation of a particular segment to the global frame if the motion involves multiple somersaults and/or twists. n must be figured out considering the continuity in the angle.
Although the return value of the inverse tangent function ranges
one can compute the true angle since both the sine and cosine of the angle are given. The angle range shown in  coincides with that of positive cosine. The more specific solution would be
In  and :
In the case of the gimbal lock,  reduces to
 &  can be then modified to
Again, ,  &  provide the orientation angles in the range of
There are two obstacles in computing the orientation angles of the distal reference frame to the proximal reference frame. Firstly, , ,  &  provide two sets of orientation angles due to two possible qJ's. Secondly, the arbitrary integer n in ,  &  needs to be determined. But these obstacles have a common root: continuity in the angles. In other words, the true solution and n must be determined based on the continuous relative motion of the distal reference frame to the proximal frame.
Determination of n can be taken care using the procedure explained in the Continuous Angle page in the User-Angle Issues section. Therefore the only real problem is to choose the true orientation angle set from the two sets computed. The key to solution for this problem is the fact that one must observe discontinuity in fJ and yJ if wrong qJ is chosen. Thus, the angle set that shows smaller
with the previous frame is the final solution.
© Young-Hoo Kwon, 1998-