[Math] Extracting angular velocity tensor from orthogonal matrices

logarithmsrotationstensors

Let us suppose we have two orthogonal rotation matrices representing a three-dimensional rotations $$\mathbf{R}(t)$$ and $$\mathbf{R}(t+\Delta t)$$

How is it possible to extract the angular velocity of the rotation $\boldsymbol \omega \in \mathbb{R}^3$ or equivalently the angular velocity tensor (represented by the skew-symmetric matrix)
$$\boldsymbol \Omega = \begin{pmatrix} 0 & -\omega_z(t) & \omega_y(t) \\ \omega_z(t) & 0 & -\omega_x(t) \\ -\omega_y(t) & \omega_x(t) & 0 \\ \end{pmatrix}$$
from them?

I would ask you if the following approach make sense…

1) By mean of exponential map
$\mathbf{R}(t+\Delta t) = e^{\boldsymbol \Omega \Delta t} \mathbf{R}(t)$

2) Solve for $\boldsymbol \Omega$ then
$$\boldsymbol \Omega = \frac{ \log\left( \mathbf{R}(t)\mathbf{R}^{-1}(t+\Delta t) \right)}{\Delta t}$$

3) Call $\boldsymbol Y = \mathbf{R}(t) \mathbf{R}^{-1}(t+\Delta t) -\mathbf{I}$ and approximate the logarithm with its Taylor expansion

$$
\boldsymbol \Omega(t) = \dfrac{ \log\left(\mathbf{R}(t) \mathbf{R}^{-1}(t+\Delta t) \right)}{\Delta t} \approx \frac{1}{\Delta t} \left( \mathbf{Y} – \frac{\mathbf{Y}^2}{2} + \frac{\mathbf{Y}^3}{3} – \frac{\mathbf{Y}^4}{4} + \ldots \right )
$$

Best Answer

You don't need any series expansions to do this. $\mathbf Y^{-1}=\mathbf R(t+\Delta t) \mathbf R^{-1}(t)$ is a rotation matrix that rotates the body from the position at time $t$ to the position at time $t+\Delta t$. This is a rotation around the axis along $\boldsymbol\omega$ through the angle $|\boldsymbol\omega|\Delta t$. The trace of a rotation matrix with angle $\phi$ is $1+2\cos\phi$, so you can calculate $|\boldsymbol\omega|$ directly from the trace. To get the direction, you can solve the homogoeneous linear system $\mathbf Yx=x$.

Related Question