For the shown general serial link n-DOF robotic arm the joint inertial positions are given by $p_i$, where $i=1,...n$:

enter image description here

I learned that the joints' inertial positions can be calculated in one of two ways:

1- $p_i=r_o + b_o + \sum _{k=1}^{i} (a_k+b_k)$

2- As the first three elements of $\bar{p}_i$, where: $\bar{p}_i=T_o$ $^oT_1\text{...}$ $^{i-1}T_i$ $\bar{p}_0,$ $^{i-1}T_i$ is the homogeneous transformation matrix from coordinate $(i)$ to coordinate $(i-1)$, and $\bar{p}_0=\left( \begin{array}{c} 0 \\ 0 \\ 0 \\ 1 \\ \end{array} \right). [1]$

By definition, the two methods should yield identical results. The problem is that they don't for a $\textbf{ wrist-partitioned manipultor}$.

$\textbf{My question is: Where could I be going wrong?}$

In the following I describe the specifics of my calculations:

1- $a_i$ is calculated as $a_i=A_o$ $^oA_1 ...$ $^{i-1}A_i$ $^ia_i$ (where $^{i-1}A_i$ is the rotation matrix). $b_i$ is calculated in a similar manner.

2- The homogeneous transformation matrix is

$^{i-1}T_i=\left( \begin{array}{cccc} \cos \left(\theta _i\right) & -\sin \left(\theta _i\right) & 0 & a_i \\ \cos \left(\alpha _i\right) \sin \left(\theta _i\right) & \cos \left(\alpha _i\right) \cos \left(\theta _i\right) & -\sin \left(\alpha _i\right) & -d_i \sin \left(\alpha _i\right) \\ \sin \left(\alpha _i\right) \sin \left(\theta _i\right) & \sin \left(\alpha _i\right) \cos \left(\theta _i\right) & \cos \left(\alpha _i\right) & d_i \cos \left(\alpha _i\right) \\ 0 & 0 & 0 & 1 \\ \end{array} \right)$

Where the rotation matrix,$^{i-1}A_i$, is the $3\times{3}$ top-left matrix. And $T_o$ is given by:

$T_o=\left( \begin{array}{cc} A_o & r_o \\ 0 & 1 \\ \end{array} \right)$


$A_o=\left( \begin{array}{ccc} \cos \left(\theta _{b_z}\right) & -\sin \left(\theta _{b_z}\right) & 0 \\ \sin \left(\theta _{b_z}\right) & \cos \left(\theta _{b_z}\right) & 0 \\ 0 & 0 & 1 \\ \end{array} \right).\left( \begin{array}{ccc} \cos \left(\theta _{b_y}\right) & 0 & \sin \left(\theta _{b_y}\right) \\ 0 & 1 & 0 \\ -\sin \left(\theta _{b_y}\right) & 0 & \cos \left(\theta _{b_y}\right) \\ \end{array} \right).\left( \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos \left(\theta _{b_x}\right) & -\sin \left(\theta _{b_x}\right) \\ 0 & \sin \left(\theta _{b_x}\right) & \cos \left(\theta _{b_x}\right) \\ \end{array} \right)$

represents the rotation of the base. For fixed base systems $A_o$ and $T_o$ are identity matrices.


My robot model and the DH parameters I obtained for it are shown below:

enter image description here

$ \alpha =[0^{\circ},90^{\circ},0^{\circ},-90^{\circ},0^{\circ},-90^{\circ}] \\ a=[0,0,a_2,0,0,0] \\ d=[d_1,d_2,0,d_4,0,0] \\ \theta =[\theta_1(t),\theta_2(t),\theta_3(t),\theta_4(t),\theta_5(t),\theta_6(t)] \\$ $\text{Where:} \\ $ $d_2=L_2 \\ d_1=L_1 \\ a_2=L_3 \\ d_4=L_5 $

$[1]$ Liu Haitao, Zhang Tie, "A New Approach to Avoid Singularities of 6-DOF Industrial Robot"

  • 1
    $\begingroup$ The equations look fine, it's likely to be a problem with your DH formulation. Can you add info on how you are choosing your DH parameters? $\endgroup$
    – hauptmech
    Jul 2, 2017 at 23:11
  • $\begingroup$ @hauptmech I made some edits. $\endgroup$ Jul 8, 2017 at 19:17
  • $\begingroup$ @hauptmech If you can help me verify my DH parameters I'd be extremely grateful as my graduation project depends on it. $\endgroup$ Jul 13, 2017 at 21:11

2 Answers 2


Between frame 2 and 3, there should be a net 180° rotation about the Z axis. However, your second and third DH parameter seem to only have a net rotation of 90°.


No valid dh parameters are possible for the transform from frame 1 to 2. Try using a different configuration of the robot to find your DH parameters. Or don't use DH parameters.

Also remember that a constant offset in theta is one of the dh parameters if you care about where your joint zero is. $\theta = [\theta_{1DH}+\theta_{1}(t), ...]$


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.