Homogeneous coordinates

From Robotics
Jump to: navigation, search
← Back: Rotation Overview: Transformations Next: Combinations of transformations

In this article three-dimensional space is regarded because it is usually used in robotics. Rotation of three-dimensional coordinates can be described by a 3-by-3 matrix. All the components of the matrix are multiplied with one of the three coordinates. So the transformation is dependent on the original coordinates. Translation however is actually a vector addition and so independent of the original coordinates (see subarticle about translation).

To be able to also apply a translation by matrix multiplication, an additional dimension is introduced. For vectors, the additional fourth component is always 1. So a three-dimensional vector \vec{\mathbf{q}} in homogeneous coordinates looks as follows:


\vec{\mathbf{q}}=
\left[\begin{array}{c}
q_x\\ 
q_y\\
q_z\\
1
\end{array}\right]

A homogeneous transformation matrix \mathbf{T} for three-dimensional space is a 4-by-4 matrix. \mathbf{T} consists of a 3-by-3 rotation matrix \mathbf{R} and a 3-by-1 translation vector \vec{\mathbf{p}} combined with the last row of the identity matrix:


\mathbf{T}=
\left[\begin{array}{ccc|c}
 &  &  &  \\ 
 & \mathbf{R} &  & \vec{\mathbf{p}}\\
 & & & \\ \hline
0 & 0 & 0 & 1
\end{array}\right]

Let the components of the rotation matrix \mathbf{R} and the translation vector \vec{\mathbf{p}} be denoted as follows:


\mathbf{R}=
\left[\begin{array}{ccc}
r_{11} & r_{12} & r_{13}\\
r_{21} & r_{22} & r_{23}\\
r_{31} & r_{32} & r_{33}
\end{array}\right], \qquad
\vec{\mathbf{p}}=
\left[\begin{array}{c}
p_x\\
p_y\\
p_z
\end{array}\right]

So the multiplication of a homogeneous transformation matrix \mathbf{T} with a vector \vec{\mathbf{q}}_0 in homogeneous coordinates leads to:


\vec{\mathbf{q}}_1=
\left[\begin{array}{c}
x_1\\
y_1\\
z_1\\
1
\end{array}\right]=
\mathbf{T} \cdot \vec{\mathbf{q}}_0 =
\left[\begin{array}{cccc}
r_{11} & r_{12} & r_{13} & p_x\\
r_{21} & r_{22} & r_{23} & p_y\\
r_{31} & r_{32} & r_{33} & p_z\\
0 & 0 & 0 & 1
\end{array}\right] \cdot
\left[\begin{array}{c}
x_0\\
y_0\\
z_0\\
1
\end{array}\right]=
\left[\begin{array}{c}
r_{11}\cdot x_0+r_{12}\cdot y_0+r_{13}\cdot z_0+\mathbf{p_x}\\
r_{21}\cdot x_0+r_{22}\cdot y_0+r_{23}\cdot z_0+\mathbf{p_y}\\
r_{31}\cdot x_0+r_{32}\cdot y_0+r_{33}\cdot z_0+\mathbf{p_z}\\
1
\end{array}\right]

As can be seen in the resulting vector, the first 3 summands of each component belong to the rotational part while the components of the translation vector are added independently of the previous coordinates. So in homogeneous coordinates rotation and translation can be performed with a single transformation matrix. The rotation is applied first and then the translation vector is added. Regarding the particular transformations multiplication with a homogeneous transformation matrix is equivalent in cartesian coordinates to multiplication of the input vector by \mathbf{R} and then adding the translation vector:


\vec{\mathbf{q}}_1=
\mathbf{T} \cdot \vec{\mathbf{q}}_0 \equiv
\mathbf{R}\cdot \vec{\mathbf{q}}_0 + \vec{\mathbf{p}}

Transformations are applied to one coordinate frame with respect to another certain reference frame. The following notation is used to determine the transformation of the coordinate frame N with respect to the reference frame R:


^R\mathbf{T}_N

More information about the combination of transformations and about their order is provided in the following subarticle.

A simple three-dimensional translation in homogeneous coordinates is denoted as follows:

 
\mathbf{Trans}(p_x,p_y,p_z)=
\left[\begin{array}{cccc}
1 & 0 & 0 & p_x\\
0 & 1 & 0 & p_y\\
0 & 0 & 1 & p_z\\
0 & 0 & 0 & 1
\end{array}\right]

The matrices introduced for rotation are the following in homogeneous coordinates:

 
\mathbf{Rot}(x,\varphi)=
\left[\begin{array}{cccc}
1 & 0 & 0 & 0\\
0 & \cos\varphi & -\sin\varphi & 0\\
0 & \sin\varphi & \cos\varphi & 0\\
0 & 0 & 0 & 1
\end{array}\right]

 
\mathbf{Rot}(y,\varphi)=
\left[\begin{array}{cccc}
\cos\varphi & 0 & \sin\varphi & 0\\
0 & 1 & 0 & 0\\
-\sin\varphi & 0 & \cos\varphi & 0\\
0 & 0 & 0 & 1
\end{array}\right]

 
\mathbf{Rot}(z,\varphi)=
\left[\begin{array}{cccc}
\cos\varphi & -\sin\varphi & 0 & 0\\
\sin\varphi & \cos\varphi & 0 & 0\\
0 & 0 & 1 & 0\\
0 & 0 & 0 & 1
\end{array}\right]