Orientational difference between two poses using axis angle representation

183 Views Asked by At

I am working on a problem in robotics where I have to compute the orientational difference $\mathbf{e}_O \in \mathbb{R}^{3}$ between a robot's current end-effector pose and a desired pose. I have found the following formula in Robotics - Modelling, Planning and Control

$ \mathbf{e}_{O} = \mathbf{r} sin(\vartheta) $

$ \mathbf{R}_{\Delta} \mathbf{R}_{c} = \mathbf{R}_{d} \iff \mathbf{R}_{\Delta} = \mathbf{R}_{d} \mathbf{R}_{c}^{-1}$

where $\mathbf{r}$ and $\vartheta$ describe the axis angle representation of the rotation matrix $ \mathbf{R}_{\Delta} = \mathbf{R}_{\Delta}(\mathbf{r}, \vartheta) $. However, from what I understand of the axis angle representation, the angle $\vartheta$ should describe the magnitude of the error already, that the pose has to be rotated about the axis $\mathbf{r}$ to align both pose orientations.

So my question is, where does the sin come from?

An alternative to compute the orientational error $\mathbf{e}_O$ from rotations $\mathbf{R}_{c} = [\mathbf{x}_{c}, \mathbf{y}_{c}, \mathbf{z}_{c}]$ and $\mathbf{R}_{d} = [\mathbf{x}_{d}, \mathbf{y}_{d}, \mathbf{z}_{d}]$ directly is also given as follows

$ \mathbf{e}_{O} = \frac{1}{2} ( \mathbf{x}_{c} \times \mathbf{x}_{d} + \mathbf{y}_{c} \times \mathbf{y}_{d} + \mathbf{z}_{c} \times \mathbf{z}_{d} ) $