There are a few rules to consider in choosing the coordinate system:
- the \(z\)-axis is in the direction of the joint axis
- the \(x\)-axis is parallel to the common normal: \(x_n = z_n \times z_{n - 1}\) If there is no unique common normal (parallel \(z\) axes), then \(d\) (below) is a free parameter.
- the \(y\)-axis follows from the \(x\)- and \(z\)-axis by choosing it to be a right-handed coordinate system.
Once the coordinate frames are determined, inter-link transformations are uniquely described by the following four parameters:
- \(\theta\): angle about previous \(z\), from old \(x\) to new \(x\)
- \(d\): offset along previous \(z\) to the common normal
- \(r\): length of the common normal (aka \(a\), but if using this notation, do not confuse with \(\alpha\)). Assuming a revolute joint, this is the radius about previous \(z\).
- \(\alpha\): angle about common normal, from old \(z\) axis to new \(z\) axis
“Standard” DH Parameters
Following the DH standard you must provide 4 numbers that define the orientation of the \(i_{th}\) link with respect to the \(i-1_{th}\) link. “Standard” DH convention assumes that the \(i_{th}\) coordinate frame is at the \(i+1_ {joint}\). (joint 1 axes 0, joint 2 axes 1 …)
- (Link parameter)(\(\alpha\))The first number represents the angle (in radians) between \(z_{i-1}\) and \(z_i\) about \(x_i\).
- (Link parameter)(\(a\))The second number represents the length (in meters) along \(x_i\) of the common perpendicular between \(z_{i-1}\) and \(z_i\).
- (Joint parameter)(\(\theta\))The third number represents the angle (in radians) between \(x_{i-1}\) and \(x_i\) about \(z_{i-1}\).
- (Joint parameter)(\(d\))The fourth number represents the distance (in meters) along axis \(z_{i-1}\) between the origin of the \(i-1_{th}\) coordinate frame and the point where the common perpendicular intersects axis \(z_i\)
“Modified” DH Parameters (also called Craig’s convention)
Following the modified DH standard, you must provide 4 numbers that define the orientation of the \(i_{th}\) link with respect to the \(i-1_{th}\) link. Unlike the “standard” DH convention, the “modified” DH convention assumes that the \(i_{th}\) coordinate frame is at the \(i_ {joint}\). (joint 1 axes 1,joint 2 axes 2 …)
- (Link parameter)(\(\alpha\))The first number represents the angle (in radians) between \(z_{i-1}\) and \(z_i\) about \(x_{i-1}\).
- (Link parameter)(\(a\))The second number represents the length (in meters) along \(x_{i-1}\) of the common perpendicular between \(z_{i-1}\) and \(z_i\).
- (Joint parameter)(\(\theta\))The third number represents the angle (in radians) between \(x_{i-1}\) and \(x_i\) about \(z_i\).
-
(Joint parameter)(\(d\))The fourth number represents the distance (in meters) between \(x_{i-1}\) and \(x_i\) about \(z_i\).
Many people in robotics are actually unaware that there are two different conventions in use. An advantage of Craig’s convention is the proximal placement of the origin for a link. Also the rotation \(\theta_i\) is about \(z_i\) and the joint number is the same as the coordinate number, which seem more natural. Torque exerted about joint \(i\) is also at the same place as at link \(i\)’s coordinate system, to which inertial parameters such as center of mass are likely to be referenced. A disadvantage is that the transform mixes \(i−1\) and \(i\) parameters. Both Craig’s convention and the standard DH convention are equally valid. The choice of one over the other is merely a matter of taste or habit.