Skip to content

End-effector pose and Denavit-Hartenberg frames

Given a fixed frame 𝑏 attached to the base and another frame 𝑒 attached to the end-effector, the pose of the latter is given by the homogeneous transformation matrix 𝑇𝑒𝑏(𝒒), where 𝒒 is the 𝑛-vector of joint variables.

𝑛𝑒, 𝑠𝑒, 𝑎𝑒 are the unit vectors associated with the end-effector and are chosen according to its geometry. For a two-fingered gripper, 𝑎𝑒 is chosen in the approach direction, 𝑠𝑒 in the sliding direction, and 𝑛𝑒 is orthogonal to the other two so that the frame is right-handed.

Chain of transformations

In the general case, we have an open chain of 𝑛+1 links connected by 𝑛 joints (no loops between links).

By attaching a frame to each link, the pose of frame 𝑖+1 is determined from the pose of frame 𝑖, so finding the pose of the 𝑛-th link is a recursive process starting from the base frame.

𝑧 axes are perpendicular to the viewer, passing through the joints

In order to find the direct kinematics of an open chain, we need an effective way to place the different frames.

The Denavit-Hartenberg convention proposes the following solution: frame 𝑖 is attached to link 𝑖, and its axis 𝑧𝑖 is chosen aligned with the axis of joint 𝑖+1. We still have to choose 𝟎𝑖 and the axes 𝑥𝑖 and 𝑦𝑖.

The common normal to two lines is the line containing the minimum-distance segment between them. It is uniquely defined when the lines are not coplanar; there is an infinite number of common normals when the lines are coplanar and parallel; and it degenerates to a single point when the lines are coplanar and intersect.

  • The origin 𝟎𝑖 is placed at the intersection between the common normal and the axis 𝑧𝑖, and 𝟎𝑖′ at its intersection with the axis 𝑧𝑖−1.
  • 𝑥𝑖 is chosen along the common normal in the direction from 𝑧𝑖−1 to 𝑧𝑖.
  • 𝑦𝑖 is chosen so that the frame is right-handed.

For frame 0, only 𝑧0 is specified, so its origin and 𝑥-axis can be arbitrary. For frame 𝑛 there is no joint 𝑛+1, so 𝑧𝑛 is not uniquely defined; since joint 𝑛 is revolute, 𝑧𝑛 is aligned with 𝑧𝑛−1.

We introduce the following parameters:

  • 𝑎𝑖: distance between 𝟎𝑖 and 𝟎𝑖′;
  • 𝑑𝑖: coordinate of 𝟎𝑖′ along 𝑧𝑖−1;
  • 𝛼𝑖: rotation angle between 𝑧𝑖−1 and 𝑧𝑖 about 𝑥𝑖;
  • 𝜃𝑖: rotation angle between 𝑥𝑖−1 and 𝑥𝑖 about 𝑧𝑖−1;
Arm with Denavit-Hartenberg parameters

To build the transformation matrix between link 𝑖−1 and link 𝑖:

  • We start from frame 𝑖−1 and translate it by 𝑑𝑖 along 𝑧𝑖−1 and rotate it by 𝜃𝑖 about 𝑧𝑖−1, aligning it with frame 𝑖′.

    𝐴𝑖′𝑖−1=[𝑐𝜃𝑖−𝑠𝜃𝑖00𝑠𝜃𝑖𝑐𝜃𝑖00001𝑑𝑖0001]
  • Then we translate frame 𝑖′ by 𝑎𝑖 along 𝑥𝑖′ and rotate it by 𝛼𝑖 about 𝑥𝑖′, aligning it with frame 𝑖.

    𝐴𝑖𝑖′=[100𝑎𝑖0𝑐𝛼𝑖−𝑠𝛼𝑖00𝑠𝛼𝑖𝑐𝛼𝑖00001]

The end result is:

𝐴𝑖𝑖−1=[𝑐𝜃𝑖−𝑠𝜃𝑖𝑐𝛼𝑖𝑠𝜃𝑖𝑠𝛼𝑖𝑎𝑖𝑐𝜃𝑖𝑠𝜃𝑖𝑐𝜃𝑖𝑐𝛼𝑖−𝑐𝜃𝑖𝑠𝛼𝑖𝑎𝑖𝑠𝜃𝑖0𝑠𝛼𝑖𝑐𝛼𝑖𝑑𝑖0001]