Homogeneous transformations
Homogeneous transformation matrices provide a compact way to represent the position and orientation of one reference frame with respect to another.
This section introduces the conventions used by Moro for homogeneous transformations and their composition.
The notation follows the conventions established in Mathematical notation and conventions and Rotations.
Pose between reference frames
The pose of a reference frame \(\{i\}\) with respect to a reference frame \(\{j\}\) is represented by the homogeneous transformation matrix
Here,
\(R_i^j\) represents the orientation of frame \(\{i\}\) with respect to frame \(\{j\}\),
\(\vec{r}_{O_i}^{\,j}\) represents the position of the origin \(O_i\) with respect to the origin \(O_j\), expressed in frame \(\{j\}\).
Using the position-vector notation introduced previously,
Operationally, \(T_i^j\) transforms homogeneous coordinates expressed in frame \(\{i\}\) into homogeneous coordinates expressed in frame \(\{j\}\).
Thus,
in the sense of coordinate transformation.
Cartesian and homogeneous coordinates
The Cartesian coordinates of a point \(P\), expressed in frame \(\{i\}\), are written as
Its homogeneous representation is
or, explicitly,
Moro’s documentation keeps the tilde notation to distinguish Cartesian vectors in \(\mathbb{R}^3\) from their homogeneous representations in \(\mathbb{R}^4\).
Thus,
Transforming a point
Given
the homogeneous coordinates of a point transform according to
Expanding the matrix product gives
so that
This equation shows explicitly the two components of a rigid transformation:
rotation of the point coordinates,
translation of the frame origin.
The homogeneous formulation combines both operations into a single matrix multiplication.
Relative position vectors
A relative position vector between two points does not depend on the translational offset between reference-frame origins.
For points \(P\) and \(Q\),
Using the rigid-transformation equations for both points,
Therefore,
The translational part cancels because \(\vec{r}_{P/Q}\) represents a displacement between two points rather than the absolute position of a point relative to a frame origin.
This is why relative displacement vectors are normally transformed directly using rotation matrices.
Free vectors and homogeneous coordinates
Homogeneous coordinates can also represent a free vector \(\vec{v}\) using
The zero fourth component prevents the translational part of a homogeneous transformation from affecting the vector:
However, in Moro’s robotics formulations, vectors such as directions, relative displacements, and angular velocities are normally transformed directly using \(R_i^j\) rather than by augmenting them with a zero homogeneous coordinate.
Note
Homogeneous coordinates with fourth component equal to zero are mathematically useful for representing free vectors, but they are not the primary convention used in Moro’s kinematic formulations.
Rigid transformations and SE(3)
A homogeneous rigid transformation has the structure
where
and
The set of all such rigid-body transformations forms the special Euclidean group
Thus,
For the purposes of Moro, this notation is used to identify a valid rigid-body transformation that combines a three-dimensional rotation and translation.
A deeper treatment of Lie groups and Lie algebras is outside the scope of this section.
Composition of homogeneous transformations
Homogeneous transformations compose according to their intermediate reference frames.
Suppose
transforms coordinates from frame \(\{i\}\) to frame \(\{j\}\), and
transforms coordinates from frame \(\{k\}\) to frame \(\{i\}\).
Then
and
Substitution gives
Therefore,
This is completely analogous to the composition rule for rotation matrices.
For example,
For a serial chain,
This relation is fundamental in the forward kinematics of serial manipulators.
Inverse of a homogeneous transformation
The inverse transformation reverses the direction of the coordinate mapping:
Let
Since
the inverse homogeneous transformation is
Using
this may also be written as
where
Important
Inverting a homogeneous transformation does not generally consist of simply transposing the rotation matrix and changing the sign of the translation vector.
The translation must also be expressed in the new reference frame:
Pure translations
A pure translation by
is represented by
Explicitly,
Elementary translations along the coordinate axes may be written as
For example,
In Moro, the function htmtra(x, y, z) constructs a pure homogeneous translation.
For example,
htmtra(x=a, y=b, z=c)
corresponds to
Pure rotations
A pure rotation embedded in homogeneous form is represented by
For an elementary rotation around the \(z\) axis,
In Moro, htmrot(theta, axis) constructs the homogeneous representation of an elementary rotation, while rot2htm(R) embeds a general \(3\times3\) rotation block into a homogeneous matrix.
The mathematical discussion assumes that \(R\) represents a valid rotation matrix. Validation details belong to the corresponding API documentation.
Fixed and moving transformations
A pure rotation or translation matrix does not by itself determine whether the operation is interpreted relative to fixed or moving axes.
That interpretation depends on the side on which the transformation is composed.
Let \(T\) denote the current pose of a frame.
If a new transformation \(A\) is defined with respect to the fixed or global frame,
The new transformation multiplies on the left.
If \(A\) is defined with respect to the current local or moving frame,
The new transformation multiplies on the right.
This is the homogeneous-transformation counterpart of the fixed-axis and moving-axis composition rules discussed for rotation matrices.
For example, a translation along the global \(x\) axis is represented by
while a translation along the local \(x\) axis of the current frame is represented by
Similarly, a rotation about the global \(z\) axis is composed on the left, while a rotation about the current local \(z\) axis is composed on the right.
Noncommutativity
Rigid transformations do not commute in general.
For arbitrary transformations \(T_A\) and \(T_B\),
This is particularly important when rotations and translations are combined.
For example, rotating a frame and then translating it generally produces a different result from translating it and then rotating it.
Pure translations expressed with respect to the same reference frame do commute:
However, a rotation and a translation do not generally commute:
This dependence on order is fundamental in robot kinematics and becomes particularly important in the Denavit–Hartenberg convention.
Notation for generic transformations
When the reference frames are important, Moro’s documentation uses the indexed notation
When the identity of the frames is not relevant to the discussion, a generic transformation may be written simply as
Similarly,
is used for a rotation relating specific reference frames, while
may be used for a generic rotation matrix.
Summary of conventions
The homogeneous-transformation conventions used throughout Moro may be summarized as follows:
Notation or convention |
Meaning |
|---|---|
\(T_i^j\) |
Pose of frame \(\{i\}\) with respect to frame \(\{j\}\) |
\(T_i^j:\{i\}\rightarrow\{j\}\) |
Coordinate mapping from frame \(\{i\}\) to frame \(\{j\}\) |
\(\vec{r}_P^{\,i}\) |
Cartesian position vector in \(\mathbb{R}^3\) |
\(\tilde{r}_P^{\,i}\) |
Homogeneous point coordinates in \(\mathbb{R}^4\) |
Fourth homogeneous component for points |
\(1\) |
Fourth homogeneous component for free vectors |
\(0\) |
Point transformation |
\(\tilde{r}_P^{\,j}=T_i^j\tilde{r}_P^{\,i}\) |
Cartesian point transformation |
\(\vec{r}_P^{\,j}=R_i^j\vec{r}_P^{\,i}+\vec{r}_{O_i}^{\,j}\) |
Relative displacement transformation |
\(\vec{r}_{P/Q}^{\,j}=R_i^j\vec{r}_{P/Q}^{\,i}\) |
Composition |
\(T_k^j=T_i^jT_k^i\) |
Inverse |
\(T_j^i=(T_i^j)^{-1}\) |
Inverse translation |
\(-R^T\vec{p}\) |
Fixed/global operation |
Multiply on the left |
Moving/local operation |
Multiply on the right |
Rigid transformation space |
\(SE(3)\) |
These conventions provide the foundation for the Denavit–Hartenberg formulation and the forward kinematics of serial manipulators.