[Physics] Kinematics of Euler angles relative to a rotating frame

angular velocityrigid-body-dynamicsrotational-kinematics

I have a rotating body $B$ and a rotating frame $F$ whose orientations are described by the quaternions $q_B$ and $q_F$ respectively. I also have the angular velocity vectors $\omega_B$ and $\omega_F$.

I'm then interested in the Euler angles (extrinsic x-y-z) of B relative to F. That is, I convert $q_F^* q_B$ to Euler angles $\phi, \theta, \psi$.

My question is how to calculate $\dot\phi, \dot\theta, \dot\psi$ from the angular velocities. I'm currently using

$$M(\phi,\theta) = \begin{pmatrix}1&\sin\phi\tan\theta&\cos\phi\tan\theta\\
0&\cos\phi&-\sin\phi\\
0&\sin\phi\sec\theta&\cos\phi\sec\theta\end{pmatrix}$$
$$\begin{pmatrix}\dot\phi\\\dot\theta\\\dot\psi\end{pmatrix}=M(\phi,\theta)\omega_B$$

But clearly this isn't correct when F is rotating.

Best Answer

First Thought (probably not the fastest)
Let us assume you have a vector space in $R^{3}$ with a quaternion defined as:

$$ \mathbf{q} = q_{F}^{*} \ q_{B} \\ = a + b \hat{\mathbf{x}} + c \hat{\mathbf{y}} + d \hat{\mathbf{z}} $$

where $(a, b, c, d)$ are the Euler parameters and $(\hat{\mathbf{x}}, \hat{\mathbf{y}}, \hat{\mathbf{z}})$ defines the reference unit basis set.

If we define the axis of rotation as $\mathbf{n}$ and the angle through which we rotate as $\zeta$, then the Euler parameters are defined as:

$$ a = \cos{\left( \frac{\zeta}{2} \right)} \\ b = n_{x} \ \sin{\left( \frac{\zeta}{2} \right)} \\ c = n_{y} \ \sin{\left( \frac{\zeta}{2} \right)} \\ d = n_{z} \ \sin{\left( \frac{\zeta}{2} \right)} \\ $$

Thus, if you know $\mathbf{q}$, or rather $(a, b, c, d)$, you can find $\mathbf{n}$ and $\zeta$. Once you know the axis of rotation and the angle of rotation, you can determine the Euler angles. First we define the cross product matrix as:

$$ \left[ \mathbf{n} \right]_{x} = \left[ \begin{array}{ c c c } 0 & - n_{z} & n_{y} \\ n_{z} & 0 & - n_{x} \\ - n_{y} & n_{x} & 0 \end{array} \right] $$

and the outer product of $\mathbf{n}$ with itself given by:

$$ \left[ \mathbf{n} \otimes \mathbf{n} \right] = \left[ \begin{array}{ c c c } n_{x} \ n_{x} & n_{x} \ n_{y} & n_{x} \ n_{z} \\ n_{y} \ n_{x} & n_{y} \ n_{y} & n_{y} \ n_{z} \\ n_{z} \ n_{x} & n_{z} \ n_{y} & n_{z} \ n_{z} \end{array} \right] $$

Then we can define the rotation matrix as:

$$ \overleftrightarrow{\mathbf{R}} = \cos{\zeta} \ \overleftrightarrow{\mathbf{I}} + \sin{\zeta} \ \left[ \mathbf{n} \right]_{x} + \left( 1 - \cos{\zeta} \right) \ \left[ \mathbf{n} \otimes \mathbf{n} \right] $$

where $\overleftrightarrow{\mathbf{I}}$ is the unit or identity matrix.

Second Thought (probably faster/easier)
An easier method is to follow the procedure given here. Following that procedure, we define:

$$ \alpha = \frac{ 2 \left( a \ b + c \ d \right) }{ 1 - 2 \left( b^{2} + c^{2} \right) } \\ \beta = 2 \left( a \ c - d \ b \right) \\ \gamma = \frac{ 2 \left( a \ d + b \ c \right) }{ 1 - 2 \left( c^{2} + d^{2} \right) } $$

which gives us the Euler angles:

$$ \phi = \tan^{-1}{ \alpha } \\ \theta = \sin^{-1}{ \beta } \\ \psi = \tan^{-1}{ \gamma } $$

Since you already have $\mathbf{q}$ and you can numerically/analytically determine $(\phi, \theta, \psi)$, then I would just take the time derivative of each of these angles to find $(\dot{\phi}, \dot{\theta}, \dot{\psi})$ rather than using the angular velocities.

Related Question