Homogeneous coordinates

From Robotics
Revision as of 16:39, 13 June 2014 by Nickchen (talk | contribs)

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 an 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 a sfollows:


\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 the 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}{ccc}
t_{11} & t_{12} & t_{13}\\
t_{21} & t_{22} & t_{23}\\
0 & 0 & 1
\end{array}\right]
\cdot
\left[\begin{array}{c}
x_0\\
y_0\\
1
\end{array}\right]=
\left[\begin{array}{c}
t_{11}\cdot x_0+t_{12}\cdot y_0+t_{13}\cdot 1\\
t_{21}\cdot x_0+t_{22}\cdot y_0+t_{23}\cdot 1\\
0\cdot x_0+0\cdot y_0+1\cdot1
\end{array}\right]=
\left[\begin{array}{c}
t_{11}\cdot x_0+t_{12}\cdot y_0+{\color{Green}\mathbf{t_{13}}}\\
t_{21}\cdot x_0+t_{22}\cdot y_0+{\color{Green}\mathbf{t_{23}}}\\
1
\end{array}\right]

As can be seen in the resulting vector, the components t_{13} and t_{23} are independent of the original coordinates and just added to the x- or the y-coordinate, respectively.