Notation

The notation used in the course Robotics Foundation and in this documentation is very specific. This section should shed some light on the used notation and the reasoning behind it.

Symbols

The following symbols are used often.

Symbol

Description

\(\CoorSys{\PHrule}\)

Used to refer to a certain coordinate system.

\(\Twist\)

Twist, generalized velocity consisting of angular part and linear part.

\(\Wrench\)

Wrench, generalized force consisting of moment and linear force part.

\(\UnitLength{\PHrule}\)

Hat notation, indicates that the vector is of unit length. See also Hat notation.

\(\TildeSkew{\PHrule}\)

Tilde notation, see Tilde notation.

\(\FromTo{\PHrule}{\PHrule}{\PHrule}\)

Sub- and superscripts, see Sub- and superscripts

\(\wedge\)

Cross product operator.

\(\RotationMatrix\)

Rotation matrix, \(\RotationMatrix \in \SOthree\).

\(\HomogeneousTransformationMatrix\)

Homogeneous transformation matrix, \(\HomogeneousTransformationMatrix \in \SEthree\).

\(\Adjoint{\PHrule}\)

Big adjoint of the transformation matrix \(\PHrule\). See Big- and little adjoint.

\(\LittleAdjoint{\PHrule}\)

Little adjoint of the velocity twist \(\PHrule\). See Big- and little adjoint.

\(\PHrule\Transposed\)

Transposed of matrix \(\PHrule\), obtained by flipping along the diagonal.

\(\trace\PHrule\)

Trace of matrix \(\PHrule\), obtained by summing the diagonal elements.

\(\PHrule\PseudoInverse\)

Pseudoinverse of the matrix \(\PHrule\). The matrix can be singular, or non-square.

Sub- and superscripts

The entities used in this documentation can be roughly divided into two categories: transformations and others. For transformations we use the following notation:

\[\FromTo{\PH{y}}{\PH{x}}{\PH{A}}\]

In this, \(\PH{y}\) indicates the target frame of reference, and \(\PH{x}\) indicates the source frame of reference. The operator \(\PH{A}\) indicates the type of transformation, and in this documentation we use rotation matrices \(\RotationMatrix\), and homogeneous transformation matrices \(\HomogeneousTransformationMatrix\). If the transformation in question is used to express a configuration, e.g. a rotation matrix used as orientation, \(\PH{x}\) indicates the frame of in consideration, and \(\PH{y}\) indicates the frame of reference. In other words, \(\FromTo{s}{b}{\RotationMatrix}\) denotes the orientation of \(\CoorSys{s}\) with respect to \(\CoorSys{b}\), i.e. expressed in \(\CoorSys{b}\).

For entities that fall in the ‘other’ category, such as twists, wrenches, positions, (angular) velocities, et cetera, we use the following notation:

\[\FromTo{\PH{b}}{\PH{a}}{\PH{V}}\]

Here \(\PH{a}\) is always the frame of reference, i.e. the coordinate system in which the entity is expressed, regardless of the actual expression (skew-symmetric, tilde notation, row- or column array, etc.). On the other side, \(\PH{b}\) does not denote a source frame, but can be used to distinguish the entity \(\PH{V}\). For example, if we require a certain wrench to get a rigid body moving, and it is expressed in the body frame, we could denote it as \(\FromTo{m}{b}{\Wrench}\). Similarly if that rigid-body is subjected to an external wrench, also expressed in the body frame, we can denote that as \(\FromTo{e}{b}{\Wrench}\). In this case we can still distinguish between the two.

For velocities, angular, linear, as well as twists, we could even introduce a third sub-/superscript:

\[\FromTo{\color{red}i}{\color{blue}k}{\Twist}^{\color{green}j}\]

In human language this would mean, the velocity twist of some frame \(\color{red}i\), relative to some frame \(\color{green}j\), expressed in some frame \(\color{blue}k\). In this documentation we will not use this notation, but for completeness it is included here.

In general the placing of these scripts is to ensure that multiplications are applied in the right order. If, for example, we would have the configuration of \(\CoorSys{b}\) with respect to \(\CoorSys{a}\), and the configuration of \(\CoorSys{c}\) with respect to \(\CoorSys{b}\), we could find the configuration of \(\CoorSys{c}\) with respect to \(\CoorSys{a}\) as follows:

\[\FromTo{\color{green}c}{\color{blue}a}{\HomogeneousTransformationMatrix} = \FromTo{\color{red}b}{\color{blue}a}{\HomogeneousTransformationMatrix} \FromTo{\color{green}c}{\color{red}b}{\HomogeneousTransformationMatrix}\]

Notice how the matching scripts (in red) are side-by-side, and drop out in the outcome.

Tilde notation

The tilde notation is used differently in two cases, for three vectors and for twists.

For three vectors such as point locations, (angular) velocities, etc. it is used as follows:

\[\begin{split}v = \begin{bmatrix} {\color{red} v_1} \\ {\color{green} v_2} \\ {\color{blue} v_3} \end{bmatrix} \Rightarrow \TildeSkew{v} = \begin{bmatrix} 0 & -{\color{blue} v_3} & {\color{green} v_2} \\ {\color{blue} v_3} & 0 & -{\color{red} v_1} \\ -{\color{green} v_2} & {\color{red} v_1} & 0 \end{bmatrix}\end{split}\]

Where the result is in the \(\sothree\) space.

This is also called the ‘skew-symmetric matrix notation’ of a three vector. This can be used to easily calculate the cross product of two three vectors:

\[\begin{split}v \wedge w = \TildeSkew{v}w = \begin{bmatrix} v_2 w_3 - v_3 w_2 \\ v_3 w_1 - v_1 w_3 \\ v_1 w_2 - v_2 w_1 \end{bmatrix}\end{split}\]

For twists, the tilde notation is used as follows:

\[\begin{split}\Twist = \begin{bmatrix} \omega \\ v \end{bmatrix} \Rightarrow \TildeSkew{\Twist} = \begin{bmatrix} \TildeSkew{\omega} & v \\ 0 & 0 \end{bmatrix}\end{split}\]

Where the result is the 4 by 4 times matrix that is in the \(\sethree\) space.

Hat notation

The hat accent indicates that vectors are of unit length, meaning that their Euclidean norm is equal to 1. For a three vector that would mean:

\[\UnitLength{v} \Rightarrow \sqrt{v_1^2 + v_2^2 + v_3^2} = 1\]

Note that the definition of a unit twist \(\UnitLength{\Twist}\) is slightly different. A unit twist can be ‘unit length’ in two cases:

  1. The angular velocity part of the twist is unit length. In that case the linear velocity part does not have to be unit length.

    \[\begin{split}\UnitLength{\Twist} = \begin{bmatrix} \UnitLength{\omega} \\ v \end{bmatrix}\end{split}\]
  2. In the second case the angular velocity part of the twist is zero, in that case the linear velocity part is unit length:

    \[\begin{split}\UnitLength{\Twist} = \begin{bmatrix} 0 \\ \UnitLength{v} \end{bmatrix}\end{split}\]

Big- and little adjoint

Adjoint, or adjunction, is a term regularly used in mathematics to denote another form of a certain entity. In this set of documentation, we have the adjoint form of a homogeneous transformation matrix, referred to as the big adjoint, and denoted with \(\Adjoint{}\), and the adjoint form of a velocity twist vector, referred to as the little- or small adjoint, denoted with \(\LittleAdjoint{}\).

A general homogeneous transformation matrix is constructed from a rotation matrix \(\RotationMatrix\) and translation vector \(p\) as follows:

\[\begin{split}\HomogeneousTransformationMatrix = \begin{bmatrix} \RotationMatrix & p \\ 0 & 1 \\ \end{bmatrix}\end{split}\]

The big adjoint form of that rotation matrix is then constructed as follows:

\[\begin{split}\Adjoint{\HomogeneousTransformationMatrix} = \begin{bmatrix} \RotationMatrix & 0 \\ \TildeSkew{p}\RotationMatrix & \RotationMatrix \end{bmatrix}\end{split}\]

A general velocity twist is constructed from angular velocity and linear velocity as follows:

\[\begin{split}\Twist = \begin{bmatrix} \omega \\ V \end{bmatrix}\end{split}\]

The little adjoint form of that velocity twist is then constructed as follows:

\[\begin{split}\LittleAdjoint{\Twist} = \begin{bmatrix} \TildeSkew{\omega} & 0 \\ \TildeSkew{v} & \TildeSkew{\omega} \end{bmatrix}\end{split}\]