# Denavit–Hartenberg parameters

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 (Dr. Esaí alumni) and Richard Hartenberg introduced this convention in 1955 in order to standardize the coordinate frames for spatial linkages.

Richard Paul demonstrated its value for the kinematic analysis of robotic systems in 1981. While many conventions for attaching references frames have been developed, the Denavit-Hartenberg convention remains the standard approach.

## Denavit-Hartenberg convention

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, [Z], and the second is associated with the link [X]. The coordinate transformations along a serial robot consisting of n links form the kinematics equations of the robot,

$[T]=[Z_{1}][X_{1}][Z_{2}][X_{2}]\ldots [X_{n-1}][Z_{n}],\!$ where [T] is the transformation locating the end-link.

In order to determine the coordinate transformations [Z] and [X], the joints connecting the links are modeled as either hinged or sliding joints, each of which have a unique line S 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 Si, i=1,...,6, one for each joint in the robot. For each sequence of lines Si and Si+1, there is a common normal line Ai,i+1. The system of six joint axes Si and five common normal lines Ai,i+1 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 Si and X coordinate axes are assigned to the common normals Ai,i+1.

This convention allows the definition of the movement of links around a common joint axis Si by the screw displacement,

$[Z_{i}]={\begin{bmatrix}\cos \theta _{i}&-\sin \theta _{i}&0&0\\\sin \theta _{i}&\cos \theta _{i}&0&0\\0&0&1&d_{i}\\0&0&0&1\end{bmatrix}},$ where θi is the rotation around and di is the slide along the Z axis---either of the parameters can be constants depending on the structure of the robot. Under this convention the dimensions of each link in the serial chain are defined by the screw displacement around the common normal Ai,i+1 from the joint Si to Si+1, which is given by

$[X_{i}]={\begin{bmatrix}1&0&0&r_{i,i+1}\\0&\cos \alpha _{i,i+1}&-\sin \alpha _{i,i+1}&0\\0&\sin \alpha _{i,i+1}&\cos \alpha _{i,i+1}&0\\0&0&0&1\end{bmatrix}},$ where αi,i+1 and ri,i+1 define the physical dimensions of the link in terms of the angle measured around and distance measured along the X axis.

In summary, the reference frames are laid out as follows:

### Four parameters

The transformation the following four parameters known as D–H parameters:.

A visualization of D–H parameterization is available: YouTube

There is some choice in frame layout as to whether the previous $x$ axis or the next $x$ 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 $x$ axis collinear with the common normal, yielding the transformation calculations shown below.

We can note constraints on the relationships between the axes:

## Denavit-Hartenberg matrix

It is common to separate a screw displacement into the product of a pure translation along a line and a pure rotation about the line, so that

$[Z_{i}]=\operatorname {Trans} _{Z_{i}}(d_{i})\operatorname {Rot} _{Z_{i}}(\theta _{i}),$ and

$[X_{i}]=\operatorname {Trans} _{X_{i}}(r_{i,i+1})\operatorname {Rot} _{X_{i}}(\alpha _{i,i+1}).$ Using this notation, each link can be described by a coordinate transformation from the previous coordinate system to the next coordinate system.

${}^{n-1}T_{n}=\operatorname {Trans} _{z_{n-1}}(d_{n})\cdot \operatorname {Rot} _{z_{n-1}}(\theta _{n})\cdot \operatorname {Trans} _{x_{n}}(r_{n})\cdot \operatorname {Rot} _{x_{n}}(\alpha _{n})$ Note that this is the product of two screw displacements, The matrices associated with these operations are:

$\operatorname {Trans} _{z_{n-1}}(d_{n})=\left[{\begin{array}{ccc|c}1&0&0&0\\0&1&0&0\\0&0&1&d_{n}\\\hline 0&0&0&1\end{array}}\right]$ $\operatorname {Rot} _{z_{n-1}}(\theta _{n})=\left[{\begin{array}{ccc|c}\cos \theta _{n}&-\sin \theta _{n}&0&0\\\sin \theta _{n}&\cos \theta _{n}&0&0\\0&0&1&0\\\hline 0&0&0&1\end{array}}\right]$ $\operatorname {Trans} _{x_{n}}(r_{n})=\left[{\begin{array}{ccc|c}1&0&0&r_{n}\\0&1&0&0\\0&0&1&0\\\hline 0&0&0&1\end{array}}\right]$ $\operatorname {Rot} _{x_{n}}(\alpha _{n})=\left[{\begin{array}{ccc|c}1&0&0&0\\0&\cos \alpha _{n}&-\sin \alpha _{n}&0\\0&\sin \alpha _{n}&\cos \alpha _{n}&0\\\hline 0&0&0&1\end{array}}\right]$ This gives:

$\operatorname {} ^{n-1}T_{n}=\left[{\begin{array}{ccc|c}\cos \theta _{n}&-\sin \theta _{n}\cos \alpha _{n}&\sin \theta _{n}\sin \alpha _{n}&r_{n}\cos \theta _{n}\\\sin \theta _{n}&\cos \theta _{n}\cos \alpha _{n}&-\cos \theta _{n}\sin \alpha _{n}&r_{n}\sin \theta _{n}\\0&\sin \alpha _{n}&\cos \alpha _{n}&d_{n}\\\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.

## Use of Denavit and Hartenberg matrices

The Denavit and Hartenberg notation gives a standard methodology to write the kinematic equations of a manipulator. This is specially useful for serial manipulators where a matrix is used to represent the pose (position and orientation) of one body with respect to another.

$\operatorname {} ^{n-1}T_{n}=M_{n-1,n}$ $P_{(n-1)}=M_{n-1,n}P_{(n)}=\left[{\begin{array}{c}x_{n-1}\\y_{n-1}\\z_{n-1}\\1\end{array}}\right]=\left[{\begin{array}{ccc|c}X_{x}&Y_{x}&Z_{x}&T_{x}\\X_{y}&Y_{y}&Z_{y}&T_{y}\\X_{z}&Y_{z}&Z_{z}&T_{z}\\\hline 0&0&0&1\end{array}}\right]\left[{\begin{array}{c}x_{n}\\y_{n}\\z_{n}\\1\end{array}}\right]$ Where the upper left $3\times 3$ submatrix of $M$ represents the relative orientation of the two bodies, and the upper right $3\times 1$ represents their relative position.

$M_{i,k}=M_{i,j}M_{j,k}$ An important property of Denavit and Hartenberg matrices is that the inverse is

$M^{-1}=\left[{\begin{array}{ccc|c}&&&\\&R^{T}&&-R^{T}T\\&&&\\\hline 0&0&0&1\end{array}}\right]$ ## Kinematics

Further matrices can be defined to represent velocity and acceleration of bodies. The velocity of body $i$ with respect to body $j$ can be represented in frame $k$ by the matrix

$W_{i,j(k)}=\left[{\begin{array}{ccc|c}0&-\omega _{z}&\omega _{y}&v_{x}\\\omega _{z}&0&-\omega _{x}&v_{y}\\-\omega _{y}&\omega _{x}&0&v_{z}\\\hline 0&0&0&0\end{array}}\right]$ The acceleration matrix can be defined as the sum of the time derivative of the velocity plus the velocity squared

$H_{i,j(k)}={\dot {W}}_{i,j(k)}+W_{i,j(k)}^{2}$ ${\dot {P}}=W_{i,j}P$ ${\ddot {P}}=H_{i,j}P$ It is also possible to prove that

${\dot {M}}_{i,j}=W_{i,j(i)}M_{i,j}$ ${\ddot {M}}_{i,j}=H_{i,j(i)}M_{i,j}$ Velocity and acceleration matrices add up according to the following rules

$W_{i,k}=W_{i,j}+W_{j,k}$ $H_{i,k}=H_{i,j}+H_{j,k}+2W_{i,j}W_{j,k}$ in other words the absolute velocity is the sum of the drag plus the relative velocity; for the acceleration the Coriolis' term is also present.

The components of velocity and acceleration matrices are expressed in an arbitrary frame $k$ and transform from one frame to another by the following rule

$W_{(h)}=M_{h,k}W_{(k)}M_{k,h}$ $H_{(h)}=M_{h,k}H_{(k)}M_{k,h}$ ## Dynamics

For the dynamics 3 further matrices are necessary to describe the inertia $J$ , the linear and angular momentum $\Gamma$ , and the forces and torques $\Phi$ applied to a body.

$J=\left[{\begin{array}{ccc|c}I_{xx}&I_{xy}&I_{xz}&x_{g}m\\I_{xy}&I_{yy}&I_{yz}&y_{g}m\\I_{xz}&I_{yz}&I_{zz}&z_{g}m\\\hline x_{g}m&y_{g}m&z_{g}m&m\end{array}}\right]$ $I_{xx}=\int \int x^{2}\,dm$ $I_{xy}=\int \int xy\,dm$ $I_{xz}=\cdots$ $\cdots$ $\Phi =\left[{\begin{array}{ccc|c}0&-t_{z}&t_{y}&f_{x}\\t_{z}&0&-t_{x}&f_{y}\\-t_{y}&t_{x}&0&f_{z}\\\hline -f_{x}&-f_{y}&-f_{z}&0\end{array}}\right]$ $\Gamma =\left[{\begin{array}{ccc|c}0&-\gamma _{z}&\gamma _{y}&\rho _{x}\\\gamma _{z}&0&-\gamma _{x}&\rho _{y}\\-\gamma _{y}&\gamma _{x}&0&\rho _{z}\\\hline -\rho _{x}&-\rho _{y}&-\rho _{z}&0\end{array}}\right]$ All the matrices are represented with the vector components in a certain frame $k$ . Transformation of the components from frame $k$ to frame $h$ follows to rule

$J_{(h)}=M_{h,k}J_{(k)}M_{h,k}^{T}$ $\Gamma _{(h)}=M_{h,k}\Gamma _{(k)}M_{h,k}^{T}$ $\Phi _{(h)}=M_{h,k}\Phi _{(k)}M_{h,k}^{T}$ The matrices described allow the writing of the dynamic equations in a concise way.

Newton's law:

$\Phi =HJ-JH^{t}\,$ Momentum:

$\Gamma =WJ-JW^{t}\,$ The first of these equations express the Newton's law and is the equivalent of the vector equation $f=ma$ (force equal mass times acceleration) plus $t=J{\dot {\omega }}+\omega \times J\omega$ (angular acceleration in function of inertia and angular velocity); the second equation permits the evaluation of the linear and angular momentum when velocity and inertia are known.

## Modified DH parameters

Some books such as  use modified DH parameters. The difference between the classic 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 $O_{i-1}$ is put on axis i-1, not the axis i in classic DH convention. The coordinates of $O_{i}$ is put on the axis i, not the axis i+1 in classic DH convention.

Another difference is that according to the modified convention, the transform matrix is given by the following order of operations:

${}^{n-1}T_{n}=\operatorname {Rot} _{x_{n-1}}(\alpha _{n-1})\cdot \operatorname {Trans} _{x_{n-1}}(a_{n-1})\cdot \operatorname {Rot} _{z_{n}}(\theta _{n})\cdot \operatorname {Trans} _{z_{n}}(d_{n})$ Thus, the matrix of the modified DH parameters becomes

$\operatorname {} ^{n-1}T_{n}=\left[{\begin{array}{ccc|c}\cos \theta _{n}&-\sin \theta _{n}&0&a_{n-1}\\\sin \theta _{n}\cos \alpha _{n-1}&\cos \theta _{n}\cos \alpha _{n-1}&-\sin \alpha _{n-1}&-d_{n}\sin \alpha _{n-1}\\\sin \theta _{n}\sin \alpha _{n-1}&\cos \theta _{n}\sin \alpha _{n-1}&\cos \alpha _{n-1}&d_{n}\cos \alpha _{n-1}\\\hline 0&0&0&1\end{array}}\right]$ It should be noteworthy to remark that some books (e.g.:) use $a_{n}$ and $\alpha _{n}$ to indicate the length and twist of link n-1 rather than link n. As a consequence, {}^{n - 1}T_n is formed only with parameters using the same subscript.

Surveys of DH conventions and its differences have been published.