The homogeneous transformation matrix

The transformation $ T_i$, for each $ i$ such that $ 1 < i \leq m$, is

$\displaystyle T_i = Q_{i-1} R_i = \begin{pmatrix}\cos\theta_i & -\sin\theta_i &...
...{i-1} & \cos\alpha_{i-1} & \cos\alpha_{i-1}d_i  0 & 0 & 0 & 1 \end{pmatrix} .$ (3.56)

This can be considered as the 3D counterpart to the 2D transformation matrix, (3.52). The following four operations are performed in succession:
  1. Translate by $ d_i$ along the $ z_i$-axis.
  2. Rotate counterclockwise by $ \theta _i$ about the $ z_i$-axis.
  3. Translate by $ a_{i-1}$ along the $ x_{i-1}$-axis.
  4. Rotate counterclockwise by $ \alpha _{i-1}$ about the $ x_{i-1}$-axis.

As in the 2D case, the first matrix, $ T_1$, is special. To represent any position and orientation of $ {\cal A}_1$, it could be defined as a general rigid-body homogeneous transformation matrix, (3.50). If the first body is only capable of rotation via a revolute joint, then a simple convention is usually followed. Let the $ a_0,\alpha_0$ parameters of $ T_1$ be assigned as $ a_0 = \alpha_0 = 0$ (there is no $ z_0$-axis). This implies that $ Q_0$ from (3.55) is the identity matrix, which makes $ T_1 =
R_1$.

The transformation $ T_i$ for $ i
> 1$ gives the relationship between the body frame of $ {\cal A}_i$ and the body frame of $ {\cal A}_{i-1}$. The position of a point $ (x,y,z)$ on $ {\cal A}_m$ is given by

$\displaystyle T_1 T_2 \cdots T_m \begin{pmatrix}x  y  z  1  \end{pmatrix} .$ (3.57)

For each revolute joint, $ \theta _i$ is treated as the only variable in $ T_i$. Prismatic joints can be modeled by allowing $ a_i$ to vary. More complicated joints can be modeled as a sequence of degenerate joints. For example, a spherical joint can be considered as a sequence of three zero-length revolute joints; the joints perform a roll, a pitch, and a yaw. Another option for more complicated joints is to abandon the DH representation and directly develop the homogeneous transformation matrix. This might be needed to preserve topological properties that become important in Chapter 4.

Figure 3.16: The Puma 560 is shown along with the DH parameters and body frames for each link in the chain. This figure is borrowed from [555] by courtesy of the authors.
\begin{figure}\centerline{\psfig{figure=figs/puma560.ps,width=3.2in} }\end{figure}

Figure 3.17: The DH parameters are shown for substitution into each homogeneous transformation matrix (3.56). Note that $ a_3$ and $ d_3$ are negative in this example (they are signed displacements, not distances).
\begin{figure}\begin{center}
\begin{tabular}{\vert c\vert c\vert c\vert c\vert c...
...2$ & $0$ & $\theta_6$ & $0$  \hline
\end{tabular}\end{center}
\end{figure}

Example 3..4 (Puma 560)   This example demonstrates the 3D chain kinematics on a classic robot manipulator, the PUMA 560, shown in Figure 3.16. The current parameterization here is based on [37,555]. The procedure is to determine appropriate body frames to represent each of the links. The first three links allow the hand (called an end-effector) to make large movements in $ {\cal W}$, and the last three enable the hand to achieve a desired orientation. There are six degrees of freedom, each of which arises from a revolute joint. The body frames are shown in Figure 3.16, and the corresponding DH parameters are given in Figure 3.17. Each transformation matrix $ T_i$ is a function of $ \theta _i$; hence, it is written $ T_i(\theta_i)$. The other parameters are fixed for this example. Only $ \theta_1$, $ \theta_2$, $ \ldots $, $ \theta_6$ are allowed to vary.

The parameters from Figure 3.17 may be substituted into the homogeneous transformation matrices to obtain

$\displaystyle T_1(\theta_1) = \begin{pmatrix}\cos\theta_1 & -\sin\theta_1 & 0 &...
...heta_1 & \cos\theta_1 & 0 & 0  0 & 0 & 1 & 0  0 & 0 & 0 & 1 \end{pmatrix} ,$ (3.58)

$\displaystyle T_2(\theta_2) = \begin{pmatrix}\cos\theta_2 & -\sin\theta_2 & 0 &...
...& d_2  -\sin\theta_2 & -\cos\theta_2 & 0 & 0  0 & 0 & 0 & 1 \end{pmatrix} ,$ (3.59)

$\displaystyle T_3(\theta_3) = \begin{pmatrix}\cos\theta_3 & -\sin\theta_3 & 0 &...
...ta_3 & \cos\theta_3 & 0 & 0  0 & 0 & 1 & d_3  0 & 0 & 0 & 1 \end{pmatrix} ,$ (3.60)

$\displaystyle T_4(\theta_4) = \begin{pmatrix}\cos\theta_4 & -\sin\theta_4 & 0 &...
... & -d_4  \sin\theta_4 & \cos\theta_4 & 0 & 0  0 & 0 & 0 & 1 \end{pmatrix} ,$ (3.61)

$\displaystyle T_5(\theta_5) = \begin{pmatrix}\cos\theta_5 & -\sin\theta_5 & 0 &...
...1 & 0  -\sin\theta_5 & -\cos\theta_5 & 0 & 0  0 & 0 & 0 & 1 \end{pmatrix} ,$ (3.62)

and

$\displaystyle T_6(\theta_6) = \begin{pmatrix}\cos\theta_6 & -\sin\theta_6 & 0 &...
... -1 & 0  \sin\theta_6 & \cos\theta_6 & 0 & 0  0 & 0 & 0 & 1 \end{pmatrix} .$ (3.63)

A point $ (x,y,z)$ in the body frame of the last link $ {\cal A}_6$ appears in $ {\cal W}$ as

$\displaystyle T_1(\theta_1) T_2(\theta_2) T_3(\theta_3) T_4(\theta_4) T_5(\theta_5) T_6(\theta_6) \begin{pmatrix}x  y  z  1  \end{pmatrix} .$ (3.64)

$ \blacksquare$

Figure 3.18: A hydrocarbon (octane) molecule with 8 carbon atoms and 18 hydrogen atoms (courtesy of the New York University MathMol Library).
\begin{figure}\begin{center}
\centerline{\psfig{file=figs/octane2.ps,width=2.5in}}\end{center}\end{figure}

Figure 3.19: Consider transforming the spine of octane by ignoring the hydrogen atoms and allowing the bonds between carbons to rotate. This can be easily constructed with balls and sticks (e.g., Tinkertoys). If the first link is held fixed, then there are six degrees of freedom. The rotation of the last link is ignored.
\begin{figure}\begin{center}
\centerline{\psfig{file=figs/octanespine.eps,width=5.5in}}\end{center}\end{figure}

Figure 3.20: Each bond may be interpreted as a ``link'' of length $ d_i$ that is aligned with the $ z_i$-axis. Note that most of $ {\cal A}_i$ appears in the $ -z_i$ direction.
\begin{figure}\begin{center}
\centerline{\psfig{file=figs/octanespine2.eps,width=2.5in}}\end{center}\end{figure}

Example 3..5 (Transforming Octane)   Figure 3.18 shows a ball-and-stick model of an octane molecule. Each ``ball'' is an atom, and each ``stick'' represents a bond between a pair of atoms. There is a linear chain of eight carbon atoms, and a bond exists between each consecutive pair of carbons in the chain. There are also numerous hydrogen atoms, but we will ignore them. Each bond between a pair of carbons is capable of twisting, as shown in Figure 3.19. Studying the configurations (called conformations) of molecules is an important part of computational biology. It is assumed that there are seven degrees of freedom, each of which arises from twisting a bond. The techniques from this section can be applied to represent these transformations.

Note that the bonds correspond exactly to the axes of rotation. This suggests that the $ z_i$ axes should be chosen to coincide with the bonds. Since consecutive bonds meet at atoms, there is no distance between them. From Figure 3.15c, observe that this makes $ a_i
= 0$ for all $ i$. From Figure 3.15a, it can be seen that each $ d_i$ corresponds to a bond length, the distance between consecutive carbon atoms. See Figure 3.20. This leaves two angular parameters, $ \theta _i$ and $ \alpha_i$. Since the only possible motion of the links is via rotation of the $ z_i$-axes, the angle between two consecutive axes, as shown in Figure 3.15d, must remain constant. In chemistry, this is referred to as the bond angle and is represented in the DH parameterization as $ \alpha_i$. The remaining $ \theta _i$ parameters are the variables that represent the degrees of freedom. However, looking at Figure 3.15b, observe that the example is degenerate because each $ x_i$-axis has no frame of reference because each $ a_i
= 0$. This does not, however, cause any problems. For visualization purposes, it may be helpful to replace $ x_{i-1}$ and $ x_i$ by $ z_{i-1}$ and $ z_{i+1}$, respectively. This way it is easy to see that as the bond for the $ z_i$-axis is twisted, the observed angle changes accordingly. Each bond is interpreted as a link, $ {\cal A}_i$. The origin of each $ {\cal A}_i$ must be chosen to coincide with the intersection point of the $ z_i$- and $ z_{i+1}$-axes. Thus, most of the points in $ {\cal A}_i$ will lie in the $ -z_i$ direction; see Figure 3.20.

The next task is to write down the matrices. Attach a world frame to the first bond, with the second atom at the origin and the bond aligned with the $ z$-axis, in the negative direction; see Figure 3.20. To define $ T_1$, recall that $ T_1 =
R_1$ from (3.54) because $ Q_0$ is dropped. The parameter $ d_1$ represents the distance between the intersection points of the $ x_0$- and $ x_1$-axes along the $ z_1$ axis. Since there is no $ x_0$-axis, there is freedom to choose $ d_1$; hence, let $ d_1 = 0$ to obtain

$\displaystyle T_1(\theta_1) = R_1(\theta_1) = \begin{pmatrix}\cos\theta_1 & -\s...
...heta_1 & \cos\theta_1 & 0 & 0  0 & 0 & 1 & 0  0 & 0 & 0 & 1 \end{pmatrix} .$ (3.65)

The application of $ T_1$ to points in $ {\cal A}_1$ causes them to rotate around the $ z_1$-axis, which appears correct.

The matrices for the remaining six bonds are

$\displaystyle T_i(\theta_i) = \begin{pmatrix}\cos\theta_i & -\sin\theta_i & 0 &...
...{i-1} & \cos\alpha_{i-1} & \cos\alpha_{i-1}d_i  0 & 0 & 0 & 1 \end{pmatrix} ,$ (3.66)

for $ i \in \{2, \ldots, 7\}$. The position of any point, $ (x,y,z) \in
{\cal A}_7$, is given by

$\displaystyle T_1(\theta_1) T_2(\theta_2) T_3(\theta_3) T_4(\theta_4) T_5(\theta_5) T_6(\theta_6) T_7(\theta_7) \begin{pmatrix}x  y  z  1  \end{pmatrix}.$ (3.67)

$ \blacksquare$

Steven M LaValle 2012-04-20