The Time Derivative of a Rotation

Understanding how to take a time-derivative of a rotation matrix is useful for deriving equations of motion of rigid bodies. I’ve seen some complicated derivations, I’ll offer one that I think is simpler.

First, imagine two cartesian reference frames. One is fixed (frame \(A\)), the other (frame \(B\)) moves about some axis with angular rate \(\omega_{ba}^a\). This notation is used to mean “the angular rate of frame \(B\) with respect to frame \(A\) measured in frame \(A\)”.

The unit vectors which make up the principle axes of \(B\) are \(b_x\), \(b_y\), and \(b_z\). Those axes expressed in the rotating frame \(A\) are \(b_x^a\), \(b_y^a\), and \(b_z^a\).

The rotation matrix which converts a vector in frame \(B\) to a vector in frame \(A\) is:

\[R_b^a = \begin{bmatrix} b_x^a & b_y^a & b_z^a \end{bmatrix}\]

Translational velocity and angular velocity are related as:

\[\dot{r} = \omega \times r\]

We can use this relation to find the time derivative of the principle axes of \(B\) expressed in frame \(A\):

\[\dot{b}_x^a = \omega_{ba}^a \times b_x^a \\ \dot{b}_y^a = \omega_{ba}^a \times b_y^a \\ \dot{b}_z^a = \omega_{ba}^a \times b_z^a\]

We can replace the cross-product operator with a skew-symmetric matrix and turn the equations above to a single matrix operation:

\[\begin{bmatrix}\dot{b}_x^a & \dot{b}_x^a & \dot{b}_x^a \end{bmatrix} = \omega_{ba}^{a\times} \begin{bmatrix} b_x^a & b_y^a & b_z^a \end{bmatrix}\]

Replacing the principle axes vectors with the equivalent rotation matrices we get:

\[\dot{R}_b^a = \omega_{ba}^{a\times} R_b^a\]
Written by David Friedman on 08 April 2018