Skip to content

Commit

Permalink
Pros and cons of transformation representations
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexanderFabisch committed Oct 2, 2024
1 parent 0689645 commit 838ad70
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions doc/source/user_guide/transformations.rst
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,22 @@ point :math:`{_A}\boldsymbol{p}` from frame :math:`A` to frame :math:`B`:
You can use :func:`~pytransform3d.transformations.transform` to apply a
transformation matrix to a homogeneous vector.

**Pros**

* It is easy to apply transformations on vectors in homogeneous coordinates by
matrix-vector multiplication.
* Concatenation of transformations is trivial through matrix multiplication.
* You can directly read the basis vectors and translation from the columns.
* No singularities.

**Cons**

* We use 16 values for 6 degrees of freedom.
* Not every 4x4 matrix is a valid transformation matrix, which means for
example that we cannot simply apply an optimization algorithm to
transformation matrices or interpolate between them. Renormalization is
computationally expensive.

-----------------------
Position and Quaternion
-----------------------
Expand All @@ -131,6 +147,17 @@ a 2D array.
pytransform3d uses a numpy array of shape (7,) to represent position and
quaternion and typically we use the variable name pq.

**Pros**

* More compact than the matrix representation and less susceptible to
round-off errors.
* Compact representation.

**Cons**

* Separation of translation and rotation component. Both have to be handled
individually.

----------------
Screw Parameters
----------------
Expand Down Expand Up @@ -205,6 +232,20 @@ coordinates of transformation and typically we use the variable name Stheta.
[4]_. They use a different order of the 3D vector components and they do
not separate :math:`\theta` from the screw axis in their notation.

**Pros**

* Minimal representation.
* Can also represent velocity and acceleration when we replace
:math:`\theta` by :math:`\dot{\theta}` or :math:`\ddot{\theta}` respectively,
which makes numerical integration and differentiation easy.

**Cons**

* There might be discontinuities and ambiguities. This has to
be considered. Normalization is recommended.
* Concatenation and transformation of vectors requires conversion to
transformation matrix or dual quaternion.

---------------------------
Logarithm of Transformation
---------------------------
Expand Down Expand Up @@ -302,6 +343,17 @@ quaternion encodes the translation component as
:math:`\boldsymbol{t}` is a quaternion with the translation in the vector
component and the scalar 0, and rotation quaternions have the same ambiguity.

**Pros**

* No singularities.
* Efficient and compact form for representing transformations [7]_.

**Cons**

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

----------
References
----------
Expand Down

0 comments on commit 838ad70

Please sign in to comment.