# Parameter $r$ of Denavit-Hartenberg

By watching this video which explains how to calculate the classic Denavit–Hartenberg parameters of a kinematic chain, I was left with the impression that the parameter $r_i$ (or $a_i$) will always be positive.

Is this true? If not, could you give examples where it could be negative?

I think this is true. Although I don't have a formal proof. I haven't read the original Denavit–Hartenberg paper, but this paper: "Lipkin 2005: A Note on Denavit-Hartenberg Notation in Robotics" explains the 3 main DH parameter conventions and how they differ. It breaks down each of the 4 parameters into vector forms. Specifically:

$$a_2 = \vec{{O}_1 {O}_2} \cdot {x}_2$$ Where $$\vec{{O}_1 {O}_2}$$ is the vector between the two frames. The dot product can be negative, but only if the angle is greater than 90 degrees. But because of the strict way you construct the frames, I don't think that can happen.

• While a length is alway positive I think you define a link frame such that the distance to the next link frame was $-a$ or $-d$. Oct 19, 2019 at 12:26
• @PeterCorke, would it be possible for you to provide an example where the distances are negative? Jan 2, 2023 at 8:33

Parameter "r" or "a" is the link length of a robot's link which is a physical entity. And that can never be negative.

It can be negative, because these parameters are then used to describe the transformations that are needed in order to convert one reference frame to another. For example:

So if we want to go from frame $$i-1$$ to frame $$i$$ we have to do the following:

• a rotation about $$x_{i-1}$$ for $$a_{i-1}$$ in order to make the $$z$$ axis parallel
• a transport in $$x_{i-1}$$ axis for $$r_{i-1}$$ in order to go to the $$z_i$$ axis
• a rotation about $$z_i$$ for $$θ_{i}$$ in order to make the $$x$$ axis parallel
• a transport in $$z_{i}$$ axis for $$d_i$$ in order to reach the origin of the $$i$$-th frame

Because all the transformations were done in relative frames, we multiply the homogenous transformations from the right.

So the transformation matrix is:

$$T_i^{i-1} = Rot_x(a_{i-1}) Trans(r_{i-1}) Rot_z( θ_i) Trans (d_i)$$

So the sign of the parameters are important.

Also, another way to see it is how we use them in the Transformation Matrix:

$$T = \begin{bmatrix} R_i^{i-1} & b^{i-1} \\ 0 & 1 \end{bmatrix}$$

where $$b^{i-1}$$ is the vector in the $$i-1$$ frame that points to the origin of $$i$$. This vector is given (at least in the convention i use, taken from craig's book pg.83):

$$b^{i-1} = [r_{i-1} \ -sin(a_{i-1})d_i \ cos(a_{i-1})d_i]^T$$

For this vector, the sign of d_i is important. In the convention used by craig, you take the signed distance from $$x_{i-1}$$ to $$x_i$$.