# Postion of Robotic Arm Joints

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

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)$

Where:

$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.

$\underline{EDIT}$:

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

$\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"

• 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? – hauptmech Jul 2 '17 at 23:11
• @hauptmech I made some edits. – Tarek Ibrahim Jul 8 '17 at 19:17
• @hauptmech If you can help me verify my DH parameters I'd be extremely grateful as my graduation project depends on it. – Tarek Ibrahim Jul 13 '17 at 21:11

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), ...]$