Angular Velocity expressed via Euler Angles

Here's a straightforward but somewhat computational way. There are two steps. (1) Show how to define the angular velocity vector in terms of rotation matrices. (2) Write a general rotation in terms of Euler angles. (3) Combine (1) and (2) to get an expression for the angular velocity vector in terms of Euler angles.

Step 1. Recall that if $\mathbf x(t)$ is the position of any point in a rigid body undergoing rotation, then the motion of this vector is generated by a time-dependent rotation; \begin{align} \mathbf x(t) = R(t)\mathbf x(0) \end{align} It follows that the velocity of such a point in the body is \begin{align} \dot{\mathbf x}(t) =\dot R(t)\mathbf x(0) = \dot R(t)R^t(t)\mathbf x(t) \end{align} where here, the superscript $t$ denotes transpose, and in the second equality, I have used the first equation and the fact that for rotations, $R^t = R^{-1}$. If we use this fact again in the form \begin{align} RR^t = I \end{align} and differentiate both sides with respect to time, then the right side vanishes, and we get \begin{align} \dot R R^t = -R\dot R^t = -(\dot R R^t)^t \end{align} This shows that the matrix $\Omega \equiv\dot R R^t$ is antisymmetric, which means that there are three functions $\omega_x, \omega_y, \omega_z$ for which \begin{align} \Omega = \begin{pmatrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \\ \end{pmatrix} \end{align} It turns out that the entries of this matrix are precisely the components of the angular velocity vector $\boldsymbol\omega$. In fact, in many treatments one often defines \begin{align} \boldsymbol\omega = (\omega_x, \omega_y, \omega_z) \end{align} To convince you that this is the right definition of angular velocity, a short computation shows that for any vector $\mathbf x$, \begin{align} \Omega \mathbf x = \boldsymbol\omega\times \mathbf x \end{align} So that we recover \begin{align} \dot{\mathbf x} = \boldsymbol\omega\times\mathbf x \end{align} from the second equation above, which is a standard expression showing how the angular velocity vector generates the velocities of the points in a rigid body.

There is a subtlety that we need to be careful about however. The angular velocity components given in the notes to which you link are the components of the angular velocity in a basis rotating with the body. If we let $\mathbf e_i$ denote a non-rotating basis, adn $\mathbf u_i$ denote the basis rotating with the body, then we have $$ \mathbf u_i(t) = R(t) \mathbf e_i $$ In particular, given any vector $\mathbf w$, we can break such a vector into its components in either basis $$ \mathbf w = w_i\mathbf e_i = w_{i,B} \mathbf u_i $$ so the three-tuple $$ \mathbf w_B = w_{i,B} \mathbf e_i $$ Gives the components of any vector in the body basis. Note that the components of a vector in the body basis can be obtained from its components in the non-rotating basis as follows. $$ \mathbf w_B = R^t\mathbf w $$ In particular, the components of the angular velocity in the body basis are related to its components in the non-rotating basis by $$ \boldsymbol\omega_B = R^t\boldsymbol\omega $$

Step 2. This is actually already done in the MIT notes to which you linked. It the last equation on the third page. In the notation from what I called "step 1," we define the Euler angles as follows in terms of successive rotations that take a vector's components in the non-rotating basis, and give its components in terms of the body basis $$ R^t = R_z(\psi)R_x(\phi)R_z(\phi) $$

Step 3. We combine steps 1 and 2 to obtain an expression for $\boldsymbol\omega_B$ which gives the components of the angular velocity in the body basis. To do this, we first compute $\boldsymbol\omega$ from $\Omega = \dot R R^t$ in terms of Euler angles. Then we apply $R^t$ to $\boldsymbol\omega$ to get $\boldsymbol\omega_B$. I actually did this just now using Mathematica, and I obtained precisely the result in your linked notes: \begin{align} \omega_{x,B} &= \dot\phi\sin\theta\sin\psi +\dot\theta\cos\psi\\ \omega_{y,B} &= \dot\phi\sin\theta\cos\psi - \dot\theta\sin\psi\\ \omega_{z,B} &= \dot\phi\cos\theta+\dot\psi \end{align}


I assume you know about rotation matrices, and so for a sequence rotations about Z-X-Z with angles $\phi$, $\theta$ and $\psi$ repsectively you have

$$ \vec{\omega} = \dot{\phi} \hat{z} + T_1 \left( \dot{\theta} \hat{x} + T_2 \left( \dot{\psi} \hat{z} \right) \right) $$

The logic here is apply a local spin of $\dot{\phi}$, $\dot{\theta}$ and $\dot{\psi}$ on the local axes in the sequence.

  1. Apply spin $\dot{\phi}$ about local Z and then rotate by $T_1$
  2. Apply spin $\dot{\theta}$ about local X (rotated by $T_1$) and then rotate by $T_2$
  3. Apply spin $\dot{\psi}$ about local Z (rotated by $T_1 T_2$).

Update

There is a way to formally derive the above using the identity $\dot T = \vec\omega \times T$ but it is rather involved for 3 degrees of freedom.

For two degrees of freedom it goes like this. With a rotation matrix $T= T_1 T_2$ (defined as above) the time derivative is

$$ \begin{aligned} \frac{{\rm d} T}{{\rm d} t} & = \dot{T}_1 T_2 + T_1 \dot{T}_2 \\ & = \left( (\dot{\psi} \hat{z}) \times T_1 \right) T_2 + T_1 \left( (\dot{\theta} \hat{x}) \times T_2 \right) \\ & = (\dot{\psi} \hat{z}) \times \left( T_1 T_2 \right) + (T_1 (\dot{\theta} \hat{x})) \times \left( T_1 T_2 \right) \\ & = \left(\dot{\psi} \hat{z} + T_1 (\dot{\theta} \hat{x}) \right) \times (T_1 T_2) \\ & = \left(\dot{\psi} \hat{z} + T_1 (\dot{\theta} \hat{x}) \right) \times T = \vec{\omega} \times T \end{aligned} \\ \vec{\omega} = \dot{\psi} \hat{z} + T_1 (\dot{\theta} \hat{x}) $$

using the distributed property $T (\vec{a} \times \vec{b} ) = (T \vec{a}) \times (T \vec{b} )$.