dfki-ric / pytransform3d

3D transformations for Python.
https://dfki-ric.github.io/pytransform3d/
Other
615 stars 63 forks source link

Document log / exp map correctly #234

Closed AlexanderFabisch closed 1 year ago

AlexanderFabisch commented 1 year ago

log / exp Map Definitions

https://royalsocietypublishing.org/doi/epdf/10.1098/rspa.2021.0303

Order: Position, Orientation; Angle Only Included in Orientation Component

Eade; Eq. 77-84; https://ethaneade.com/lie.pdf $$\boldsymbol{u}, \boldsymbol{\omega} \in \mathbb{R}^3$$ $$\theta = \sqrt{\boldsymbol{\omega}^T\boldsymbol{\omega}}$$ $$A = \frac{\sin{\theta}}{\theta}$$ $$B = \frac{1 - \cos{\theta}}{\theta^2}$$ $$C = \frac{1 - A}{\theta^2}$$ $$\boldsymbol{R} = \boldsymbol{I} + A \boldsymbol{\omega}{\times} + B \boldsymbol{\omega}^2{\times}$$ $$\boldsymbol{V} = \boldsymbol{I} + B \boldsymbol{\omega}{\times} + C \boldsymbol{\omega}^2{\times}$$ $$\exp{(\begin{array}{c}\boldsymbol{u}\ \boldsymbol{\omega}\end{array})} = \exp{(\begin{array}{cc}\boldsymbol{R} & \boldsymbol{V}\boldsymbol{u}\ \boldsymbol{0} & 1\end{array})}$$

Barfoot, Furgale; Eq. 4, 96, 98; https://ieeexplore.ieee.org/document/6727494 $$\xi = [\rho^T, \phi^T]^T$$ $$\exp{\xi^{\hat{}}} = (\begin{array}{cc}\boldsymbol{C} & \boldsymbol{J}\boldsymbol{\rho}\ 0 & 1\end{array})$$ $$\boldsymbol{J} = \frac{\sin{\phi}}{\phi} \boldsymbol{1} + (1 - \frac{\sin{\phi}}{\phi}) \boldsymbol{a}\boldsymbol{a}^T + \frac{1 - \cos{\phi}}{\phi} \boldsymbol{a}^{\hat{}}$$

Blanco; Eq. 9.20, 9.23, 9.24; https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.468.5407&rep=rep1&type=pdf $$\boldsymbol{v} = (\begin{array}{c}\boldsymbol{t}\\boldsymbol{\omega}\end{array})$$ $$e^{\boldsymbol{v}} = (\begin{array}{cc}e^{[\omega]_{\times}} & \boldsymbol{V}\boldsymbol{t}\ 0 & 1\end{array})$$ $$\boldsymbol{V} = \boldsymbol{I}3 + \frac{1 - \cos{\theta}}{\theta^2} [\boldsymbol{\omega}]{\times} + \frac{\theta - \sin{\theta}}{\theta^3} [\boldsymbol{\omega}]^2_{\times}$$

Sola et al.; Eq. 169, 172, 174; https://arxiv.org/abs/1812.01537 $$\boldsymbol{\tau} = [\boldsymbol{\rho}^T, \boldsymbol{\theta}^T]^T$$ where $\boldsymbol{\rho}$ only translation information and $\boldsymbol{\phi}$ only rotation information. $$Exp(\tau) = (\begin{array}{cc}Exp(\boldsymbol{\theta}) & V(\boldsymbol{\theta}) \boldsymbol{\rho}\ \boldsymbol{0} & 1\end{array})$$ $$V(\boldsymbol{\theta}) = \boldsymbol{I} + \frac{1 - \cos{\theta}}{\theta^2} [\boldsymbol{\theta}]{\times} + \frac{\theta - \sin{\theta}}{\theta^3} [\boldsymbol{\theta}]{\times}^2$$

Similar: Atanasov et al.; slide 24; https://natanaso.github.io/ece276a2020/ref/ECE276A_12_SO3_SE3.pdf

Mangelson et al.; Eq. 6; https://arxiv.org/pdf/1906.07795.pdf $$\xi = [\rho^T, \phi^T]^T$$ where $\rho$ contains only translation and $\phi$ only rotation information.

Order: Orientation, Position; Angle Only Included in Orientation Component

Mattamala; https://gtsam.org/2021/02/23/uncertainties-part2.html

"the 6D tangent vector has orientation in the first three coordinates, and translation in the last three"

Wang, Chirikjian; Appendix C; https://journals.sagepub.com/doi/pdf/10.1177/0278364908097583 $$x = (\begin{array}{c}\omega\ v\end{array})$$ $$\exp(x^{\hat{}}) = (\begin{array}{c}R(\omega) & J_l(\omega) v\ \boldsymbol{0}^T & 1\end{array})$$

Order: Orientation, Position; Angle Included in Both Components

Lynch, Park; p. 103, Eq. 3.86/3.87; http://hades.mech.northwestern.edu/index.php/Modern_Robotics; https://github.com/NxRLab/ModernRobotics/blob/master/packages/Python/modern_robotics/core.py#L366 $$e^{[\mathcal{S}]\theta} = [ \begin{array}{cc} e^{[\omega] \theta} & G(\theta) v \ 0 & 1 \end{array}]$$ $$G(\theta) = I \theta + (1 - \cos{\theta}) [\omega] + (\theta - \sin{\theta}) [\omega]^2 $$

Corke; pp. 51-53; https://link.springer.com/book/10.1007/978-3-319-54413-7; https://github.com/petercorke/spatialmath-python/blob/master/spatialmath/base/transforms3d.py#L1506 $$T(\theta, \hat{\omega}, v) = e^{(\begin{array}{cc}[\hat{\omega}]{\times} & v\ 0 & 0\end{array})\theta} = (\begin{array}{cc}R(\theta, \hat{\omega}) & (I{3 \times 3} \theta + (1 - \cos{\theta}) [\hat{\omega}]_{\times} + (\theta - \sin{\theta} [\hat{\omega}]^2) v)\end{array})$$ where $v\theta$ is the translation.

math stackexchange: https://math.stackexchange.com/questions/3113149/how-to-extract-the-screw-axis-vector-and-the-angle-from-the-exponential-coordina

Müller; Eq. 68, 69; https://link.springer.com/article/10.1007/s11044-017-9582-7 $$\boldsymbol{X} = (\begin{array}{c}\boldsymbol{e}\\boldsymbol{p} \times \boldsymbol{e} + \boldsymbol{e}h\end{array})$$ $$\exp{\varphi\hat{\boldsymbol{X}}} = (\begin{array}{cc}\exp{\varphi\tilde{\boldsymbol{e}}} & (\boldsymbol{I} - \exp{\varphi \tilde{\boldsymbol{e}}}) \boldsymbol{p} + \varphi h \boldsymbol{e}\ \boldsymbol{0} & 1\end{array})$$