Robot: 6R-PUMA Type

- Joint 1 is the base/trunk joint
- Joints 2-3 for Shoulder & elbow
- Joints 4-6 forming the spherical wrist
Existence of Analytical Solution
According to the Pieper criterion, an analytical solution exists for a 6-DOF manipulator if the last three revolute joint axes intersect at a single point (forming a spherical wrist).
This criterion justifies splitting the inverse kinematics problem into:
- Position inverse kinematics of the wrist center
- Orientation inverse kinematics of the end effector
Position Inverse Kinematics
The wrist center is given by:
\[\vec{p_w} = [w_x, w_y, w_z]^T\]Assigning joint angle symbols:
| Joint | Symbol |
|---|---|
| Joint 1 | \(\theta_1\) |
| Joint 2 | \(\theta_2\) |
| Joint 3 | \(\theta_3\) |
Breaking into subproblems
- Base rotation in XY plane
- 2R planar robot
Base rotation in XY plane
\(\theta_1 = atan2(w_y, w_x)\)
2R Planar Robot
Considering joint 2 (\(J_2\)), joint 3 (\(J_3\)) and the wrist center \(p_w\). Finding the joint angles \((\theta_2, \theta_3)\) using Geometry.
Joint centers:
| Joint | Center |
|---|---|
| \(\vec{J_{\text{2c}}}\) | \([q_{\text{2x}}, q_{\text{2y}}, q_{\text{2z}}]^T\) |
| \(\vec{J_{\text{3c}}}\) | \([q_{\text{3x}}, q_{\text{3y}}, q_{\text{3z}}]^T\) |
Offset from fixed frame:
- \(J_2\): \(\vec{d_2}\)
- \(J_3\): \(\vec{d_3}\)
Ensure a triangle solution exists
Mapping links to sides:
Finding the Euclidean distance between points, which will serve as the side length.
| Side | Link |
| \(a\) | \(|\vec{J3} - \vec{J2}|\) |
| \(b\) | \(|\vec{J3} - \vec{p_w}|\) |
| \(c\) | \(|\vec{J2} - \vec{p_w}|\) |
Mapping angles:
| Angle between sides | Subproblem angle symbol |
| \(ab\) | \(\beta\) |
| \(bc\) | \(\gamma\) |
| \(ac\) | \(\delta\) |
Applying triangle inequality to the 2R planar robot configuration:
\[|a - b| < c < a + b\]Applying law of cosines
-
For \(\beta\):
\[c^2 = a^2 + b^2 - 2ab \cos(\beta)\] \[\beta = \cos^{-1}\!\left(\frac{a^2 + b^2 - c^2}{2ab}\right)\] -
For \(\delta\):
\[b^2 = a^2 + c^2 - 2ac \cos(\delta)\] \[\delta = \cos^{-1}\!\left(\frac{a^2 + c^2 - b^2}{2ac}\right)\]
Note: Two solutions exist (elbow-up and elbow-down).
Concluding joint angles:
| Joint angle | Expression |
|---|---|
| \(\theta_1\) | \(\arctan2(w_y, w_x)\) |
| \(\theta_2\) | \(\pm \delta\) |
| \(\theta_3\) | \(\pm \beta\) |
Orientation Inverse Kinematics of the End-Effector
The forward kinematics of the end-effector is captured by the Product of Exponentials (PoE) formula:
\[T_{\text{target}} = e^{[S_1] \theta_1} e^{[S_2] \theta_2} e^{[S_3] \theta_3} e^{[S_4] \theta_4} e^{[S_5] \theta_5} e^{[S_6] \theta_6} M\]where:
- \(T_{\text{target}}\) represents the pose of the target object in the global frame.
- Each \(e^{[S_i] \theta_i}\) represents a homogeneous transformation, where \(S_i\) is the screw axis and \([S_i] \theta_i\) is its skew-symmetric matrix scaled by the joint angle.
- \(M\) is the pose of the end-effector in its home configuration.
Note: \(M\) represents the home pose of the chosen end-effector frame — it can be at joint 6 or include a tool offset. The derivation of wrist angles remains unchanged regardless of this choice.
Grouping by sub-problem:
\[T_{\text{target}} = T_{\text{1\_3}} \cdot T_{\text{4\_6}} \cdot M\]Here:
- \(T_{1\_3}\) is the transformation from the base to the wrist (composed of the first three joint transformations).
- \(T_{4\_6}\) is the transformation of the wrist itself.
Since we have already solved for the first three joint angles (\(\theta_1, \theta_2, \theta_3\)), the transformation \(T_{1\_3}\) is known. We can rearrange the equation to isolate the unknown wrist transformation, \(T_{4\_6}\):
Rearranging:
\[(T_{1\_3})^{-1} \cdot T_{\text{target}} = T_{4\_6} \cdot M\]Inverse of a transform
Since the determinant of a Special Euclidean transformation is the same as that of its rotation subgroup:
\[SE(3) = \det(SO(3)), \quad \det(T) = \det(R) = 1\]Hence, the inverse of the rotation matrix is simply its transpose, For a homogeneous transform:
\[T = \begin{bmatrix} R & \vec{p} \\ 0 & 1 \end{bmatrix}\]We require that:
\[T \cdot T^{-1} = I\]Assume:
\[T^{-1} = \begin{bmatrix} X & \vec{q} \\ 0 & 1 \end{bmatrix}\]Multiplying out:
\[\begin{bmatrix} R & \vec{p} \\ 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} X & \vec{q} \\ 0 & 1 \end{bmatrix}\] \[\begin{bmatrix} RX & R \vec{q}+\vec{p}\\ 0 & 1 \end{bmatrix} = \begin{bmatrix} I & 0 \\ 0 & 1 \end{bmatrix}\]From which:
\[R X = I \quad \Rightarrow \quad X = R^{-1}\] \[R \vec{q}+\vec{p} = 0 \quad \Rightarrow \vec{q} = - R^{-1}\vec{p}\]Therefore:
\[T^{T} = \begin{bmatrix} R^{T} & -R^{T} \vec{p} \\ 0 & 1 \end{bmatrix}\]Returning to the equation
\[T_{\text{1\_3}}^T \cdot T_{\text{target}} = T_{\text{4\_6}} \cdot M\]Isolating \(T_{\text{4\_6}}\):
\[T_{\text{4\_6}} = (T_{\text{1\_3}}^T \cdot T_{\text{target}}) M^{-1}\]Simplify terms:
\[T_{\text{4\_6}} = T_{\text{partial}} M^{-1}\]Comparing components
\[\begin{bmatrix} R_{\text{4\_6}} & p_{\text{4\_6}} \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} R_{\text{partial}} & \vec{p_\text{partial}} \\ 0 & 1 \end{bmatrix}\]Equating the unknown part (orientation):
\[R_{\text{4\_6}} = R_{\text{partial}}\]Expansion of Wrist Orientation Matrix
The wrist transformation can be expressed as the product of three joint rotations:
\[R_{4\_6} = R_4(\theta_4) \, R_5(\theta_5) \, R_6(\theta_6)\]where:
- \(R_4(\theta_4)\) is the rotation about the axis of joint 4,
- \(R_5(\theta_5)\) is the rotation about the axis of joint 5,
- \(R_6(\theta_6)\) is the rotation about the axis of joint 6.
Define placeholders, For clarity, let:
\[\{c_i, s_i\} = \{\cos(\theta_i), \sin(\theta_i)\}, \quad \forall i \in \{4,5,6\}\]Typical PUMA-style wrist configuration, In a PUMA-type 6R arm, the axes are often arranged as:
- Joint 4: rotation about x-axis
- Joint 5: rotation about y-axis
- Joint 6: rotation about x-axis
Thus:
\[R_4(\theta_4) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & c_4 & -s_4 \\ 0 & s_4 & c_4 \end{bmatrix}\] \[R_5(\theta_5) = \begin{bmatrix} c_5 & 0 & s_5 \\ 0 & 1 & 0 \\ - s_5 & 0 & c_5 \end{bmatrix}\] \[R_6(\theta_6) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & c_6 & -s_6 \\ 0 & s_6 & c_6 \end{bmatrix}\]Multiply them, first:
\[R_{45} = R_4 R_5 = \begin{bmatrix} c_5 & 0 & s_5 \\ s_4 s_5 & c_4 & -s_4 c_5 \\ - c_4 s_5 & s_4 & c_4 c_5 \end{bmatrix}\]Then:
\[R_{4\_6} = R_{45} R_6\] \[R_{4\_6} = \begin{bmatrix} c_5 & s_5 s_6 & s_5 c_6 \\ s_4 s_5 & c_4 c_6 - s_4 c_5 s_6 & -c_4 s_6 - s_4 c_5 c_6 \\ - c_4 s_5 & s_4 c_6 + c_4 c_5 s_6 & -s_4 s_6 + c_4 c_5 c_6 \end{bmatrix}\]Equating with partial
Recall:
\[R_{4\_6} = R_{\text{partial}}\]So each element of \(R_{4\_6}\) gives an equation in terms of \(\theta_4, \theta_5, \theta_6\) that must match the corresponding entry of \(R_{\text{partial}}\).
This forms the system of equations we solve for the wrist joint angles.
Image credit: Chegg, link