Skip to content

Difference of Rotations

Metrics for Rotations

Given \(\mathbf{R}_1, \mathbf{R}_2 \in SO(3)\), there are two common ways to define the difference of two rotations:

\[ \begin{align} \boldsymbol{\rho}_{12} &= \left[ \ln \mathbf{R}^T_1 \mathbf{R}_2 \right]_{-\times} \\ \boldsymbol{\rho}_{21} &= \left[ \ln \mathbf{R}_2 \mathbf{R}^T_1 \right]_{-\times}, \label{metrics} \end{align} \]

This can be thought of as the right and the left difference between the two rotation matrices. The inner product for \(\mathfrak{so}(3)\) can be defined as:

\[ \left[ \boldsymbol{\rho}_{1} \right]_\times \cdot \left[ \boldsymbol{\rho}_{2} \right]_\times = \frac{1}{2} \text{tr} \left( \left[ \boldsymbol{\rho}_{1} \right]_\times \left[ \boldsymbol{\rho}_{2} \right]^T_\times \right) = \boldsymbol{\rho}^T_{1} \boldsymbol{\rho}_{2}. \label{inner_product} \]

Using Eq (\(\ref{inner_product}\)) as the distance metric:

\[ \begin{align} |\boldsymbol{\rho}_{12}| &= \sqrt{\boldsymbol{\rho}_{12}^T \boldsymbol{\rho}_{12}} \\ |\boldsymbol{\rho}_{21}| &= \sqrt{\boldsymbol{\rho}_{21}^T \boldsymbol{\rho}_{21}}. \\ \end{align} \]

This can be viewed as the magnitude of the angle of the rotation difference.

Metrics for Pertubed Rotations

Let \(\mathbf{R} = \exp \left( \left[ \boldsymbol{\rho} \right]_\times \right) \in SO(3)\) be a rotation matrix. Perturbing \(\boldsymbol{\rho}\) by a little bit results in a new rotation matrix, \(\mathbf{R}' = \exp \left( \left[ \boldsymbol{\rho} + \delta \boldsymbol{\rho} \right]_\times \right) \in SO(3)\).

We are interested in quantifying the difference between \(\mathbf{R}\) and \(\mathbf{R}'\). Using Eq (\(\ref{metrics}\)) and the BCH formula, the right difference is:

\[ \begin{align} \left[ \ln \bigl( \delta \mathbf{R}_r \bigr) \right]_{-\times} &= \left[ \ln \bigl( \mathbf{R}^T \mathbf{R}' \bigr) \right]_{-\times} \\ &= \left[ \ln \bigl( \mathbf{R}^T \exp\left( \left[ \boldsymbol{\rho} + \delta \boldsymbol{\rho} \right]_\times \right) \bigr) \right]_{-\times} \\ &\approx \left[ \ln \bigl( \mathbf{R}^T \mathbf{R} \exp \left( \left[ \mathbf{J}_r \delta \boldsymbol{\rho} \right]_{\times} \right) \bigr) \right]_{-\times} = \mathbf{J}_r \delta \boldsymbol{\rho}. \end{align} \]

Similarly, the left difference is:

\[ \begin{align} \left[ \ln \bigl( \delta \mathbf{R}_l \bigr) \right]_{-\times} &= \left[ \ln \bigl( \mathbf{R}' \mathbf{R}^T \bigr) \right]_{-\times} \\ &= \left[ \ln \bigl( \exp\left( \left[ \boldsymbol{\rho} + \delta \boldsymbol{\rho} \right]_\times \right) \mathbf{R}^T \bigr) \right]_{-\times} \\ &\approx \left[ \ln \bigl( \exp \left( \left[ \mathbf{J}_l \delta \boldsymbol{\rho} \right]_{\times} \right) \mathbf{R}^T \mathbf{R} \bigr) \right]_{-\times} = \mathbf{J}_l \delta \boldsymbol{\rho}. \end{align} \]

Note here that \(\mathbf{J}_r\) and \(\mathbf{J}_l\) are evaluated at \(\boldsymbol{\rho}\).