Skip to content

Commit

Permalink
Discuss pros and cons of rotations better
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexanderFabisch committed Aug 7, 2023
1 parent 52a7f6c commit c2f41cf
Showing 1 changed file with 50 additions and 42 deletions.
92 changes: 50 additions & 42 deletions doc/source/rotations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,28 +31,35 @@ is not implemented in pytransform3d then it is shown in brackets.
| Rotation matrix | Transpose | Yes | Yes | No |
| :math:`\pmb{R}` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+
| Compact axis-angle | Negative | No | No | (Yes) |
| Compact axis-angle | Negative | No | No | (Yes) `(2)` |
| :math:`\pmb{\omega}` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+
| Axis-angle | Negative axis | No | No | Yes |
| Axis-angle | Negative axis | No | No | SLERP |
| :math:`(\hat{\pmb{\omega}}, \theta)` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+
| Logarithm of rotation | Negative | No | No | (Yes) |
| Logarithm of rotation | Negative | No | No | (Yes) `(2)` |
| :math:`\left[\pmb{\omega}\right]` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+
| Quaternion | Conjugate | Yes | Yes | Yes |
| Quaternion | Conjugate | Yes | Yes | SLERP |
| :math:`\pmb{q}` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+
| Rotor | Reverse | Yes | Yes | Yes |
| Rotor | Reverse | Yes | Yes | SLERP |
| :math:`R` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+
| Euler angles | No | No | No | No |
| Euler angles | `(1)` | No | No | No |
| :math:`(\alpha, \beta, \gamma)` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+
| Modified Rodrigues parameters | Negative | No | No | No |
| :math:`\psi` | | | | |
+----------------------------------------+---------------+--------------------+---------------+---------------+

Footnotes:

`(1)` Inversion of Euler angles in convention ABC (e.g., xyz) requires using
another convention CBA (e.g., zyx), reversing the order of angles, and taking
the negative of these.

`(2)` Linear interpolation is approximately correct.

---------------
Rotation Matrix
Expand Down Expand Up @@ -182,10 +189,10 @@ This will be done, for instance, to obtain rotation matrices from Euler angles
**Pros**

* It is easy to apply rotations on point vectors by matrix-vector
multiplication
* Concatenation of rotations is trivial through matrix multiplication
* You can directly read the basis vectors from the columns
* No singularities
multiplication.
* Concatenation of rotations is trivial through matrix multiplication.
* You can directly read the basis vectors from the columns.
* No singularities.

**Cons**

Expand Down Expand Up @@ -214,6 +221,11 @@ representation of a rotation, where the first 3 entries correspond to the
unit axis of rotation and the fourth entry to the rotation angle in
radians, and typically we use the variable name a.

Note that the axis-angle representation has a singularity at
:math:`\theta = 0` as there is an infinite number of rotation axes that
represent the identity rotation in this case. However, we can modify the
representation to avoid this singularity.

It is possible to write this in a more compact way as a rotation vector:

.. math::
Expand Down Expand Up @@ -253,8 +265,8 @@ the Lie group :math:`SO(3)`.

**Pros**

* Minimal representation (as rotation vector, also referred to as compact axis-angle in the code)
* It is easy to interpret the representation (as axis and angle)
* Minimal representation (as rotation vector, also referred to as compact
axis-angle in the code).
* Can also represent angular velocity and acceleration when we replace
:math:`\theta` by :math:`\dot{\theta}` or :math:`\ddot{\theta}` respectively,
which makes numerical integration and differentiation easy.
Expand All @@ -263,9 +275,12 @@ the Lie group :math:`SO(3)`.

* There might be discontinuities during interpolation as an angle of 0 and
any multiple of :math:`2\pi` represent the same orientation. This has to
be considered.
be considered. Normalization is recommended.
* When :math:`\theta = \pi`, the axes :math:`\hat{\boldsymbol{\omega}}` and
:math:`-\hat{\boldsymbol{\omega}}` represent the same rotation, which is
a problem for interpolation.
* Concatenation and transformation of vectors requires conversion to rotation
matrix or quaternion
matrix or quaternion.

-----------
Quaternions
Expand Down Expand Up @@ -326,28 +341,28 @@ typically we use the variable name q.
.. warning::

The *antipodal* unit quaternions :math:`\boldsymbol{\hat{q}}` and
:math:`-\boldsymbol{\hat{q}}` represent the same rotation.
:math:`-\boldsymbol{\hat{q}}` represent the same rotation (double cover).

**Pros**

* More compact than the matrix representation and less susceptible to
round-off errors
round-off errors.
* The quaternion elements vary continuously over the unit sphere in
:math:`\mathbb{R}^4` as the orientation changes, avoiding discontinuous
jumps (inherent to three-dimensional parameterizations)
jumps (inherent to three-dimensional parameterizations).
* Expression of the rotation matrix in terms of quaternion parameters
involves no trigonometric functions
involves no trigonometric functions.
* Concatenation is simple and computationally cheaper with the quaternion
product than with rotation matrices
* No singularities
product than with rotation matrices.
* No singularities.
* Renormalization is cheap in comparison to rotation matrices: we only
have to divide by the norm of the quaternion.

**Cons**

* The representation is not straightforward to interpret
* The representation is not straightforward to interpret.
* There are always two unit quaternions that represent exactly the same
rotation
rotation.

------------
Euler Angles
Expand All @@ -369,14 +384,16 @@ information.

**Pros**

* Minimal representation
* Minimal representation.
* Euler angles are easy to interpret for users (when the convention is clearly
defined) in comparison to axis-angle or quaternions.

**Cons**

* 24 different conventions
* Singularities (gimbal lock)
* 24 different conventions.
* Singularities (gimbal lock).
* Concatenation and transformation of vectors requires conversion to rotation
matrix or quaternion
matrix or quaternion.


------
Expand Down Expand Up @@ -425,18 +442,8 @@ quaternions on the one hand and rotors on the other hand.
to change the order of the scalar and the bivector (similar to a
quaterion), but also to change the order of bivector components.

**Pros**

* More compact than the matrix representation.
* Concatenation is simple and computationally cheaper than with rotation
matrices.
* No singularities.
* Renormalization is cheap in comparison to rotation matrices: we only
have to divide by the norm of the rotor.

**Cons**

* The representation is not straightforward to interpret
Pros and cons for rotors are the same as for quaternions as they have the
same representation in 3D.

-----------------------------
Modified Rodrigues Parameters
Expand Down Expand Up @@ -470,14 +477,14 @@ parameters.

**Pros**

* Minimal representation
* Minimal representation.

**Cons**

* The representation is not straightforward to interpret
* Normalization of angle required to avoid singularity
* The representation is not straightforward to interpret.
* Normalization of angle required to avoid singularity.
* Concatenation and transformation of vectors requires conversion to rotation
matrix or quaternion
matrix or quaternion.

----------
References
Expand All @@ -489,3 +496,4 @@ References
4. Applications of Geometric Algebra: http://geometry.mrao.cam.ac.uk/wp-content/uploads/2015/02/01ApplicationsI.pdf
5. Euler–Rodrigues formula variations, quaternion conjugation and intrinsic connections: https://doi.org/10.1016/j.mechmachtheory.2015.03.004
6. Terzakis, Lourakis, Alt-Boudaoud: Modified Rodrigues Parameters: An Efficient Representation of Orientation in 3D Vision and Graphics, https://link.springer.com/article/10.1007/s10851-017-0765-x
7. Hauser, Kris: Robotic Systems (draft), http://motion.pratt.duke.edu/RoboticSystems/3DRotations.html

0 comments on commit c2f41cf

Please sign in to comment.