In mechanical engineering, the Denavit–Hartenberg parameters (also called DH parameters) are the four parameters associated with a particular convention for attaching reference frames to the links of a spatial kinematic chain, or robot manipulator.
Jacques Denavit and Richard Hartenberg introduced this convention in 1955 in order to standardize the coordinate frames for spatial linkages.[1] [2]
Richard Paul demonstrated its value for the kinematic analysis of robotic systems in 1981.[3] While many conventions for attaching reference frames have been developed, the Denavit–Hartenberg convention remains a popular approach.
A commonly used convention for selecting frames of reference in robotics applications is the Denavit and Hartenberg (D–H) convention which was introduced by Jacques Denavit and Richard S. Hartenberg. In this convention, coordinate frames are attached to the joints between two links such that one transformation is associated with the joint, and the second is associated with the link . The coordinate transformations along a serial robot consisting of links form the kinematics equations of the robot:
[T]=[Z1][X1][Z2][X2]\ldots[Xn-1][Zn][Xn]
To determine the coordinate transformations and, the joints connecting the links are modeled as either hinged or sliding joints, each of which has a unique line in space that forms the joint axis and define the relative movement of the two links. A typical serial robot is characterized by a sequence of six lines, one for each joint in the robot. For each sequence of lines and, there is a common normal line . The system of six joint axes and five common normal lines form the kinematic skeleton of the typical six degree-of-freedom serial robot. Denavit and Hartenberg introduced the convention that z-coordinate axes are assigned to the joint axes and x-coordinate axes are assigned to the common normals .
This convention allows the definition of the movement of links around a common joint axis by the screw displacement:
[Zi]=\begin{bmatrix}\cos\thetai&-\sin\thetai&0&0\ \sin\thetai&\cos\thetai&0&0\ 0&0&1&di\ 0&0&0&1\end{bmatrix}
[Xi]=\begin{bmatrix}1&0&0&ri,i+1\ 0&\cos\alphai,i+1&-\sin\alphai,i+1&0\ 0&\sin\alphai,i+1&\cos\alphai,i+1&0\ 0&0&0&1\end{bmatrix},
In summary, the reference frames are laid out as follows:
xn=zn x zn-1
The following four transformation parameters are known as D–H parameters:[4]
There is some choice in frame layout as to whether the previous axis or the next points along the common normal. The latter system allows branching chains more efficiently, as multiple frames can all point away from their common ancestor, but in the alternative layout the ancestor can only point toward one successor. Thus the commonly used notation places each down-chain axis collinear with the common normal, yielding the transformation calculations shown below.
We can note constraints on the relationships between the axes:
It is common to separate a screw displacement into product of a pure translation along a line and a pure rotation about the line,[5] [6] so that
[Zi]=
\operatorname{Trans} | |
Zi |
(di)
\operatorname{Rot} | |
Zi |
(\thetai),
[Xi]=\operatorname{Trans}
Xi |
(ri,i+1)
\operatorname{Rot} | |
Xi |
(\alphai,i+1).
Using this notation, each link can be described by a coordinate transformation from the concurrent coordinate system to the previous coordinate system.
{}nTn =[Zn-1] ⋅ [Xn]
Note that this is the product of two screw displacements. The matrices associated with these operations are:
\operatorname{Trans} | |
zn |
(dn) = \left[ \begin{array}{ccc|c} 1&0&0&0\\ 0&1&0&0\\ 0&0&1&dn\\ \hline 0&0&0&1 \end{array} \right]
\operatorname{Rot} | |
zn |
(\thetan) = \left[ \begin{array}{ccc|c} \cos\thetan&-\sin\thetan&0&0\\ \sin\thetan&\cos\thetan&0&0\\ 0&0&1&0\\ \hline 0&0&0&1 \end{array} \right]
\operatorname{Trans} | |
xn |
(rn) = \left[ \begin{array}{ccc|c} 1&0&0&rn\\ 0&1&0&0\\ 0&0&1&0\\ \hline 0&0&0&1 \end{array} \right]
\operatorname{Rot} | |
xn |
(\alphan) = \left[ \begin{array}{ccc|c} 1&0&0&0\\ 0&\cos\alphan&-\sin\alphan&0\\ 0&\sin\alphan&\cos\alphan&0\\ \hline 0&0&0&1 \end{array} \right]
This gives:
\operatorname{}nTn = \left[ \begin{array}{ccc|c} \cos\thetan&-\sin\thetan\cos\alphan&\sin\thetan\sin\alphan&rn\cos\thetan\\ \sin\thetan&\cos\thetan\cos\alphan&-\cos\thetan\sin\alphan&rn\sin\thetan\\ 0&\sin\alphan&\cos\alphan&dn\\ \hline 0&0&0&1 \end{array} \right] = \left[ \begin{array}{ccc|c} &&&\\ &R&&T\\ &&&\\ \hline 0&0&0&1 \end{array} \right]
where R is the 3×3 submatrix describing rotation and T is the 3×1 submatrix describing translation.
In some books, the order of transformation for a pair of consecutive rotation and translation (such as
dn
\thetan
zn-1
xn
\operatorname{Trans} | |
zn |
(dn) ⋅
\operatorname{Rot} | |
zn |
(\thetan) =
\operatorname{Rot} | |
zn |
(\thetan) ⋅
\operatorname{Trans} | |
zn |
(dn)
Therefore, we can write the transformation
\operatorname{}nTn
{}nTn=
\operatorname{Trans} | |
zn |
(dn)
⋅ \operatorname{Rot} | |
zn |
(\thetan)
⋅ \operatorname{Trans} | |
xn |
(rn)
⋅ \operatorname{Rot} | |
xn |
(\alphan)
{}nTn=
\operatorname{Rot} | |
zn |
(\thetan)
⋅ \operatorname{Trans} | |
zn |
(dn)
⋅ \operatorname{Trans} | |
xn |
(rn)
⋅ \operatorname{Rot} | |
xn |
(\alphan)
The Denavit and Hartenberg notation gives a standard (distal) methodology to write the kinematic equations of a manipulator. This is especially useful for serial manipulators where a matrix is used to represent the pose (position and orientation) of one body with respect to another.
The position of body
n
n-1
T
M
\operatorname{}nTn=Mn-1,n
This matrix is also used to transform a point from frame
n
n-1
Mn-1,n=\left[\begin{array}{ccc|c}Rxx&Rxy&Rxz&Tx\ Ryx&Ryy&Ryz&Ty\ Rzx&Rzy&Rzz&Tz\\ \hline 0&0&0&1\end{array}\right]
3 x 3
M
3 x 1
The position of body
k
i
j
i
k
j
Mi,k=Mi,jMj,k
An important property of Denavit and Hartenberg matrices is that the inverse is
M-1= \left[ \begin{array}{ccc|c} &&&\\ &RT&&-RTT\\ &&&\\ \hline 0&0&0&1 \end{array} \right]
RT
R
-1 | |
R | |
ij |
T | |
=R | |
ij |
=Rji
Further matrices can be defined to represent velocity and acceleration of bodies.[5] [6] The velocity of body
i
j
k
Wi,j(k)=\left[\begin{array}{ccc|c}0&-\omegaz&\omegay&vx\ \omegaz&0&-\omegax&vy\ -\omegay&\omegax&0&vz\\ \hline 0&0&0&0\end{array}\right]
\omega
j
i
k
v
j
i
j
i
The acceleration matrix can be defined as the sum of the time derivative of the velocity plus the velocity squared
Hi,j(k)=
W |
i,j(k)
2 | |
+W | |
i,j(k) |
The velocity and the acceleration in frame
i
j
P |
=Wi,jP
\ddot{P}=Hi,jP
It is also possible to prove that
M |
i,j=Wi,j(i)Mi,j
\ddot{M}i,j=Hi,j(i)Mi,j
Velocity and acceleration matrices add up according to the following rules
Wi,k=Wi,j+Wj,k
Hi,k=Hi,j+Hj,k+2Wi,jWj,k
The components of velocity and acceleration matrices are expressed in an arbitrary frame
k
W(h)=Mh,kW(k)Mk,h
H(h)=Mh,kH(k)Mk,h
For the dynamics, three further matrices are necessary to describe the inertia
J
\Gamma
\Phi
Inertia
J
J=\left[\begin{array}{ccc|c}Ixx&Ixy&Ixz&xgm\ Iyx&Iyy& Iyz&ygm\ Izx&Izy&Izz&zgm\\ \hline xgm&ygm&zgm&m\end{array}\right]
where
m
xg,yg,zg
Ixx,Ixy,\ldots
Ixx=\iintx2dm
\begin{align} Ixy&=\iintxydm\\ Ixz&= … \\ &\vdots \end{align}
Action matrix
\Phi
f
t
\Phi=\left[\begin{array}{ccc|c}0&-tz&ty&fx\ tz&0&-tx&fy\ -ty&tx&0&fz\\ \hline -fx&-fy&-fz&0\end{array}\right]
Momentum matrix
\Gamma
\rho
\gamma
\Gamma=\left[\begin{array}{ccc|c}0&-\gammaz&\gammay&\rhox\ \gammaz&0&-\gammax&\rhoy\ -\gammay&\gammax&0&\rhoz\\ \hline -\rhox&-\rhoy&-\rhoz&0\end{array}\right]
All the matrices are represented with the vector components in a certain frame
k
k
h
\begin{align} J(h)&=Mh,kJ(k)
T | |
M | |
h,k |
\\ \Gamma(h)&=Mh,k\Gamma(k)
T | |
M | |
h,k |
\\ \Phi(h)&=Mh,k\Phi(k)
T \end{align} | |
M | |
h,k |
The matrices described allow the writing of the dynamic equations in a concise way.
Newton's law:
\Phi=HJ-JHt
\Gamma=WJ-JWt
The first of these equations express the Newton's law and is the equivalent of the vector equation
f=ma
t=J
\omega |
+\omega x J\omega
Some books such as Introduction to Robotics: Mechanics and Control (3rd Edition) [7] use modified (proximal) DH parameters. The difference between the classic (distal) DH parameters and the modified DH parameters are the locations of the coordinates system attachment to the links and the order of the performed transformations.Compared with the classic DH parameters, the coordinates of frame
Oi-1
Oi
Another difference is that according to the modified convention, the transform matrix is given by the following order of operations:
{}nTn=
\operatorname{Rot} | |
xn-1 |
(\alphan-1) ⋅
\operatorname{Trans} | |
xn-1 |
(an-1) ⋅
\operatorname{Rot} | |
zn |
(\thetan) ⋅
\operatorname{Trans} | |
zn |
(dn)
Thus, the matrix of the modified DH parameters becomes
\operatorname{}nTn = \left[ \begin{array}{ccc|c} \cos\thetan&-\sin\thetan&0&an-1\\ \sin\thetan\cos\alphan-1&\cos\thetan\cos\alphan-1&-\sin\alphan-1&-dn\sin\alphan-1\\ \sin\thetan\sin\alphan-1&\cos\thetan\sin\alphan-1&\cos\alphan-1&dn\cos\alphan-1\\ \hline 0&0&0&1 \end{array} \right]
Note that some books (e.g.:[8]) use
an
\alphan
{}nTn
In some books, the order of transformation for a pair of consecutive rotation and translation (such as
dn
\thetan
\operatorname{Trans} | |
zn |
(dn) ⋅
\operatorname{Rot} | |
zn |
(\thetan) =
\operatorname{Rot} | |
zn |
(\thetan) ⋅
\operatorname{Trans} | |
zn |
(dn)
Surveys of DH conventions and its differences have been published.[9] [10]