Integration on SO(3)
This post is about numerical integration on $SO(3)$, i.e. how to approximate the solution of: $$ \frac{d}{dt} C(t) = C(t)[\omega(t)]_\times $$ given only $C(t_0) \in SO(3)$ and samples of $\omega(\cdot)$. The focus will be on deriving the update formula: $$ C(t_0 + T) \approx C(t_0)\exp\left(\left[ \frac{T}2 \left(\omega(t_0) + \omega(t_0+T)\right) + \frac{T^2}{12} \omega(t_0) \times \omega(t_0+T) \right]_\times\right), $$ where $T$ is a relatively short time interval compared to the rate-of-change of $\omega(\cdot)$. An equivalent approximation for quaternion integration is reported in [1] Equation (227) where they reference a set of technical notes from 2005. However, the use of this approximation (when expressed in the form above) dates back much further, (see [3], equation (24)).
This note also provides justification for the simpler approximations: $$ C(t_0 + T) \approx C(t_0)\exp\left(\left[T \omega(t_0)\right]_\times\right), $$ and $$ C(t_0 + T) \approx C(t_0)\exp\left(\left[ \frac{T}2 \left(\omega(t_0) + \omega(t_0+T)\right) \right]_\times\right), $$ which will also be derived.
Derivation
Without loss of generality we consider approximating $C(t_0+T)$ with:
- $t_0 = 0$
- $C(t_0) = I$.
The starting assumption is that $\omega(\cdot)$ is truly linear on $[0, T]$ with: $$ \omega(t) = \omega_0 + \omega_1 t, \qquad \omega_0 = \omega(0),\qquad \omega_1 = \frac{\omega(T) - \omega(0)}T. $$ The true solution is given by $C(T) = \exp([\phi(T)]_\times)$ which where $\phi: [0, T] \rightarrow \mathbb{R}^3$ satisfies the Bortz Equation: $$ \begin{align} \dot \phi(t) &= \left (I + \frac{1}{2} [\phi(t)]_\times +A(\|\phi(t)\|) [\phi(t)]_\times^2\right )\omega(t). \end{align} $$ $$ A(\theta) = \frac{1}{\theta^2} \left( 1 -\frac{\theta\sin(\theta)}{2(1 - \cos(\theta))} \right) $$
Proof Sketch: We write $\phi(t)$ as a Taylor expansion about zero: $$\phi(t) \approx \phi_0 + \phi_1 t + \phi_2 \frac{1}2 t^2 + \phi_3 \frac{1}6 t^3 + o(t^4).$$ Since $C(0) = I$ we can take: $$\phi_0 = 0.$$ Next we substitute this equation into the Bortz Equation, and collect terms of equal powers in $t$.
Matching the constant terms in $t$ yields: $$\phi_1 = \omega_0$$ Matching the linear terms in $t$ yields: $$\phi_2 = \omega_1 + \frac{1}2[\phi_1]_\times\omega_0 = \omega_1$$ Finally, matching the quadratic terms in $t$ yields: $$\frac{1}2 \phi_3 = \frac{1}2 [\phi_1]_\times \omega_1 + \frac{1}4 [\phi_2]_\times \omega_0 + A(0)[\phi_1]_\times^2 \omega_0 = \frac{1}4 [\omega_0]_\times \omega_1 $$ From this we have: $$ \begin{align} \phi(T) &\approx \phi_1 T + \phi_2 \frac{T^2}2 + \phi_3 \frac{T^3}6 \\
&\approx \omega_0 T + \omega_1 \frac{T^2}2 + [\omega_0]_\times\omega_1 \frac{T^3}{12} \\
&= \omega(0) T + \frac{\omega(T)-\omega(0)}{T} \frac{T^2}2 + [\omega(0)]_\times\left( \frac{\omega(T)-\omega(0)}{T}\right) \frac{T^3}{12} \\
&= \frac{T}2(\omega(T)+\omega(0)) + \frac{T^2}{12}\omega(0) \times \omega(T) \\
\end{align} $$ as was to be shown.