Intrinsic and extrinsic rotations
In this post I want to explore a simple insight about rotating between two orientations. Rotations are notoriously confusing and unintuitive, as evidenced by the fact that Wikipedia lists six different formalisms for representing rotations. Rotations are important to understand, however, because they play an integral role in physics, robotics, biomechanics, 3D animations, and a multitude of other disciplines.
Specifically, in biomechanics rotations permit us to answer questions such as:
- Where is the arm with respect to the torso?
- How much did the arm rotate from the beginning to the end of a movement?
These are all questions that in biomechanics rely on coordinate system transformations, which in turn rely on rotations. From a mathematical perspective, a rotation is simply a linear operation. In robotics and biomechanics, the following handy convention for keeping track of rotations is widely utilized. Say that one wants to measure the orientation of the humerus with respect to the torso. Notationally, the rotation from the (T)orso to the (H)umerus can be written as \(^TR_H\), where \(R\) stands for rotation. Ignoring translations, this is the same linear operation that converts a vector expressed in the humerus coordinate system, \(^Hv\), to a vector expressed in the torso coordinate system, \(^Tv\):
\[^Tv=\,^TR_H \cdot\,^Hv\]
Notice how the H's "cancel"; this is a straightforward accounting mechanism that is immensely useful when dealing with multiple coordinate system transformations.
Suppose that you want answer the second question posed previously: how much did the arm rotate from the beginning to the end of a movement? You have computed the orientation of the humerus with respect to the torso at the beginning of the movement, \(^TR_{H_1}\), and at the end of the movement, \(^TR_{H_2}\). Given the previous accounting scheme, it would be straightforward to compute \(^{H_1}R_{H_2}\). Rotations are orthogonal transformations, and as such their inverse is equal to their transpose. Hence,
\[ \begin{aligned} ^{H_1}R_{H_2} &= (^TR_{H_1})^T \cdot {^TR_{H_2}} \\ ^{H_1}R_{H_2} &= {^{H_1}R_T} \cdot {^TR_{H_2}} \\ \end{aligned} \]
To be more explicit, \(^{H_1}R_{H_2}\) represents the solution to the following problem:
\[ \begin{aligned} {^TR_{H_1}} \cdot Q &= {^TR_{H_2}} \\ Q &= ({^TR_{H_1}})^T \cdot {^TR_{H_2}} \\ Q &= {^{H_1}R_T} \cdot {^TR_{H_2}} \\ Q &= {^{H_1}R_{H_2}} \end{aligned} \]
However, placing Q to the right of \(^TR_{H_1}\) was arbitrary. We could have also solved the following equation (using a different variable for clarity):
\[ \begin{aligned} P \cdot {^TR_{H_1}} &= {^TR_{H_2}} \\ P &= {^TR_{H_2}} \cdot ({^TR_{H_1}})^T \\ P &= {^TR_{H_1}} \cdot {^{H_1}R_{H_2}} \cdot ({^TR_{H_1}})^T \\ P &= {^TR_{H_1}} \cdot {^{H_1}R_{H_2}} \cdot {^{H_1}R_T} \\ \end{aligned} \]
The second-to-last step of the previous equation comes from splitting \(^TR_{H_2}\) into \({^TR_{H_1}} \cdot {^{H_1}R_{H_2}}\). Although this may seem like an accounting artifice, it does have a physical meaning.
\(^{H_1}R_{H_2}\) represents the rotation of the humerus from the beginning to the end of the movement expressed in the coordinate system of the humerus at the beginning of the movement. This is why I call this an intrinsic rotation, i.e. the rotation is expressed in a coordinate system pertaining to the rotating segment (although I have not seen it referred by this name in literature). On the other hand, \({^TR_{H_1}} \cdot {^{H_1}R_{H_2}} \cdot ({^TR_{H_1}})^T\) represents the rotation of the humerus from the beginning to the end of the movement expressed in the torso coordinate system. This is why I call this an extrinsic rotation, i.e. a rotation expressed in a coordinate system that is extrinsic to the segment being rotated. Please note that both the intrinsic and extrinsic rotations refer to the same rotation - but expressed in different coordinate systems. For a detailed explanation of the coordinate system transformation laws for rotations (which are 2nd order tensors) take a look at How not to spill your friend's coffee: the invariance of tensors under coordinate system transformations.
Why would you use one or the other? If you wanted to perform an Euler angle or helical angle analysis, it makes more sense to use the extrinsic rotation. The orientation of the humerus at the beginning of a movement will have larger variability than the orientation of the torso between patients. Therefore, using the extrinsic rotation provides a better comparison of differences in motion patterns between subjects. Now, suppose that you wish to investigate how the orientation of the humerus at the beginning of the movement affects motion characteristics. Then, you vary \({^TR_{H_1}}\) as desired and utilize \({^{H_1}R_{H_2}}\) to compute the orientation of the humerus at the end of the movement: \(^TR_{H_2} = {^TR_{H_1}} \cdot {^{H_1}R_{H_2}}\).
I had two objectives, which I hope I accomplished, when writing this post:
- Clarify a simple concept that can have large implications when analyzing rotations.
- Emphasize the importance of translating mathematical representations to physical concepts precisely, and vice versa.