Mixing intrinsic and extrinsic 3D rotations

I am struggling with mixing two types of rotations; after much reading, I still feel a little confused. I am trying to mix intrinsic and extrinsic rotations.

I have three pieces of hardware that have a common point of rotation. The first motor rotates about the global z-axis. The second rotates about the global x-axis, but the third rotates about the local z-axis (resultant from the rotated x-axis).

How do I mix the two sets of rotations, and can I combine them in to one rotation matrix?

My attempt in understanding this: using the notation from here (where ' denotes a rotation affected by the one before it), I figure it should look something like,

$R = Rz*(Rx*Rz')$

But should there be different rotation matrices for intrinsic and extrinsic rotations? Or is there a different way of applying them? I'm using standard 3D rotation matrices.

Edit: Is the difference between an extrinsic rotation and intrinsic rotation the difference between $R_x$ and $R_x^T$?

Any help is appreciated.

• You can always make $R_z R_x R^{-1}_z$ to get it into global. – mikuszefski Jun 7 '17 at 6:54
• Did you think about using quaternions? – mikuszefski Jun 7 '17 at 6:56
• @mikuszefski looking at quaternions I can understand how to use them to rotate about a defined axis, in the case of a fixed axis (say 1,0,0) this is very easy. What I can't figure out is how to feed a quaternion information about a rotated axis. Where do I get that information from? Do I have to apply the quaternion rotation to my z axis (0,0,1) to get an answer on where it is and then feed that into a new rotation quaternion? – NineTails Jun 8 '17 at 1:55
• @mikuszefski - Other than acting as a replacement for the transformation matrices, quaternions aren't going to help with the problem at hand. This is a physical device with three joints. – David Hammen Jun 8 '17 at 2:06
• @mikuszefski - I didn't say that quaternions aren't useful. However, this is a physical system; there's no escaping the fact that an Euler-like sequence is needed. Whether one uses a chain of three matrices or a chain of three quaternions is a bit irrelevant. – David Hammen Jun 8 '17 at 12:24

Is the difference between an extrinsic rotation and intrinsic rotation the difference between $R_x$ and $R_x^{\;T}$?

No. The difference is the order in which the rotations or transformations chain

As noted in a comment, there is no standard. I've encountered almost every possible variant in my many decades of working. So first I'll specify the convention I'm using in this answer.

1. For the most part, I'll be using transformation matrices as opposed to rotation matrices. My distinction: A rotation matrix describes the physical rotation of an object (e.g., the hand of a clock). A transformation matrix transforms the representation of a vector in one coordinate system to the representation of the same vector in another coordinate system. When needed, I'll distinguish between the two by using $\mathrm T$ for a transformation matrix, $\mathrm R$ for a rotation matrix.

The two concepts are obviously related. Think of a transformation matrix as being the consequence of physically rotating each the three principal axes by the same rotation operation.

2. I'll be using matrices for transforming (or rotating) column vectors as opposed to row vectors. A n×1 column vector transforms via $\mathrm T\mathbf v$ while a 1×n row vector transforms via $\mathbf v \mathrm T$.

3. I'll be using transformation matrices that transform a vector as represented in some parent (original) frame to the vector's representation in some child frame (a frame that derives from the original frame by a sequence of one or more primitive rotations).

4. I'll be using transformations that follow the very standard right hand rotation rule. (Yes, there are some people/organizations who use left handed rotations, or left handed frames. Microsoft, for example.)

With this, the primitive transformations are

\begin{aligned} T_x(\theta) = \begin{bmatrix} 1&0&0 \\ 0&\phantom{-}\cos\theta&\sin\theta \\ 0 & -\sin\theta&\cos\theta \end{bmatrix} \\ T_y(\theta) = \begin{bmatrix} \cos\theta & 0 & -\sin\theta \\ 0&1&0 \\ \sin\theta & 0 & \phantom{-}\cos\theta \end{bmatrix} \\ T_z(\theta) = \begin{bmatrix} \phantom{-}\cos\theta&\sin\theta&0 \\ -\sin\theta&\cos\theta&0\\ 0&0&1 \end{bmatrix} \\ \end{aligned}

With this convention, the rules for a sequence of intrinsic transformations $a$ followed by $b$ followed by ... followed by $z$ is $\mathrm T_{a,b,\ldots,z} = \mathrm T_z \cdots \mathrm T_b \mathrm T_a$: They chain right to left. The order is reversed with a sequence of extrinsic transformations: Extrinsic transformations chain left to right as opposed to the right to left chain for a sequence of intrinsic transformations.

What about a mix? The rule is still simple. Write down with the first operation in the sequence. The next operation goes on the left if that operation is intrinsic, but on the right if it's extrinsic. Rinse and repeat.

Your devices started with a rotation about global Z ($T_z(\theta_1)$). This is followed by a rotation about global X ($T_x(\theta_2)$). This is extrinsic, so the combined sequence becomes $T_z(\theta_1)T_x(\theta_2)$. This is in turn followed by a rotation about the Z axis ($T_z(\theta_3)$) that results after the first two rotations. This is intrinsic, so the full sequence is $T_z(\theta_3)T_z(\theta_1)T_x(\theta_2)$.

And now there are two big problems with your device. The first is that you can toss one of those Z joints. The second is that your device does not span the space of all possible orientations in three dimensional space.

• Isn't now $T_z (θ_3) T_z (θ_1) T_x (θ_2)$ meaning that $T_z (θ_1)$ is an intrinsic rotation of $T_x (θ_2)$? – NineTails Jun 9 '17 at 1:14
• @NineTails - The pure intrinsic sequence rotate about axis #1 by angle $\theta_1$, then rotate about the once-rotated axis #2 by angle $\theta_2$, and then rotate about the twice rotated axis #3 by angle $\theta_3$ results in $T_3(\theta_3)T_2(\theta_2)T_1(\theta_1)$ to transform from the original frame to the final frame. This is exactly the same as the pure extrinsic sequence rotate about axis #3 by angle $\theta_3$, then rotate about the original axis #2 by angle $\theta_2$, and then rotate about the original axis #1 by angle $\theta_1$ . – David Hammen Jun 9 '17 at 8:11
• Your device reduces to $T_z(\theta_1+\theta_3)T_x(\theta_2)$. One physical equivalent of this is a device that rotates about $\hat z$ by angle $\theta_1+\theta_3$ and then rotates about the original $\hat x$ by angle $\theta_2$. Another equivalent is a device that rotates about $\hat x$ by angle $\theta_2$ and then the once-rotated $\hat z'$ by angle $\theta_1+\theta_3$ . – David Hammen Jun 9 '17 at 8:16