The following steps outline a procedure for assigning the DH parameters and coordinate frames attached to the links of a manipulator.

- Identify the joint axes and label them z_i, i = 1,2,...,n.
- Identify common normals of adjacent pairs of z-axes (if possible). These are the x-axes. The common normal direction from z_{i-1} to z_i defines the x_{i-1} direction.
- Identify frame origins, i = 1,2,...,n-1.
- If axes i and i-1 are skew, then origin i-1 is the point of intersection of axis i-1 and the common normal between z_{i-1} and z_i.
- If axes i and i-1 intersect at one point, then that point is origin i-1. Note that the DH param. "a_{i-1}" is zero. Also, if you use the convention, that the x_{i-1} direction is the cross product of z_{i-1} with z_i (in that order), the the DH param. "alpha_{i-1}" will always be greater than zero.
- If axes i and i-1 are parallel, and not colinear, then select a common normal that makes "d_i" zero.
- If i and i-1 are colinear, the choose the origin of frame i-1 such that some "d" and "a" values are zero. This will usually mean that x_{i-1} is in the same direction as an x-axis with a smaller index. Sometimes, you have to work backward from an x-axis with a larger index.

- Assign y_i by y_i = z_i cross x_i, i = 1,2,...,n-1
- Assign frame {0} to be equal to {1} when the first joint displacement is zero.
- Assign {n} such that as many parameters as possible are zero. Also, since no joint i+1 exists, you are free to assign {n} arbitrarily. However, it is possible to assign a frame that is not related to {n-1} by a DH transformation. A general h-t-form may be needed.