1. Run the forward_kinematics demo and evaluate the kr210.urdf.xacro file to perform kinematic analysis of Kuka KR210 robot and derive its DH parameters.
1 | 0 | 0 | 0.75 | |
2 | 0.35 | 0 | ||
3 | 0 | 1.25 | 0 | |
4 | -0.054 | 1.50 | ||
5 | 0 | 0 | ||
6 | 0 | 0 | ||
7 | 0 | 0 | 0.303 |
Above is the table containing the Modified DH parameters.
2. Using the DH parameter table you derived earlier, create individual transformation matrices about each joint. In addition, also generate a generalized homogeneous transform between base_link and gripper_link using only end-effector(gripper) pose.
$$ T^0_1 = \begin{bmatrix} cos(\theta_1)& -sin(\theta_1)& 0& 0 \ sin(\theta_1)& cos(\theta_1)& 0& 0 \ 0& 0& 1& 0.75 \ 0& 0& 0& 1 \end{bmatrix}
T^1_2 = \begin{bmatrix} sin(\theta_2)& cos(\theta_2)& 0& 0.35 \ 0& 0& 1& 0 \ cos(\theta_2)& -sin(\theta_2)& 0& 0 \ 0& 0& 0& 1 \end{bmatrix}
\notag $$
$$ T^2_3 = \begin{bmatrix} cos(\theta_3)& -sin(\theta_3)& 0& 1.25 \ sin(\theta_3)& cos(\theta_3)& 0& 0 \ 0& 0& 1& 0 \ 0& 0& 0& 1 \end{bmatrix}
T^3_4 = \begin{bmatrix} cos(\theta_4)& -sin(\theta_4)& 0& -0.054 \ 0& 0& 1& 1.50 \ -sin(\theta_4)& -cos(\theta_4)& 0& 0 \ 0& 0& 0& 1 \end{bmatrix} \notag $$
$$ T^4_5 = \begin{bmatrix} cos(\theta_5)& -sin(\theta_5)& 0& 0 \ 0& 0& -1& 0 \ sin(\theta_5)& cos(\theta_5)& 0& 0 \ 0& 0& 0& 1 \end{bmatrix}
T^5_6 = \begin{bmatrix} cos(\theta_6)& -sin(\theta_6)& 0& 0 \ 0& 0& 1& 0 \ -sin(\theta_6)& -cos(\theta_6)& 0& 0 \ 0& 0& 0& 1 \end{bmatrix} \notag $$
Given the target orientation
3. Decouple Inverse Kinematics problem into Inverse Position Kinematics and inverse Orientation Kinematics; doing so derive the equations to calculate all individual joint angles.
First we need to calculate the Wrist Center vector
Before calculating
Given our target matrix
So, first we calculate
1. Fill in the IK_server.py
file with properly commented python code for calculating Inverse Kinematics based on previously performed Kinematic Analysis. Your code must guide the robot to successfully complete 8/10 pick and place cycles. Briefly discuss the code you implemented and your results.
The target rotation matrix R0_6
as is described in eqs.
In my code I also implemented a correction step for the target rotation matrix R0_6
. This is done by first creating a Modified DH transformation matrix R_corr
in lines 58-69. After that the target rotation matrix R0_6
is multiplied with this matrix in line 147.
In the lines 150-193, I have implemented the inverse position kinematics.
First the code for computing theta1
is implemented in lines 150-159 as described in equations
Then some helper variables which are described in equation
The theta3
angle as described in equation theta2
angle as described in equation
The angles theta4
, theta5
and theta6
are computed in lines 196-207 as described in equations
The robot arm successfully grasps the items on the shelf. The gripper is always oriented properly towards the items and is also correctly oriented when releasing the items into the bucket. When moving from start position to end position the gripper does like to rotate around a lot, but this is less of an issue given that the arm does not hit anything and it correctly grasps the items and correctly drops them. The downside of the excessive rotation of the gripper is that it takes a little more time than would otherwise be needed to carry out the movements.
Possibly the implementation could be improved with additional code making sure that the angles stay within the limits which are mentioned in the URDF description. In addition there might be some uncaught singularities or other mathematical quirks that have been overlooked, but in the tests I did, these did not show up.
Bringing a standard 6-Axis industry robot into FreeCAD for simulation. link
Kuka. KR 210-2 - KR 210 L180-2 - KR 210 L150-2 Technical Data. PDF
Milford Robotics. Theory videos for Introduction to Robotics ENB339. Youtube Playlist
Piotrowski, Norbert and Barylski, Adam. Modelling a 6-DOF manipulator using Matlab software. PDF
Rubric Points from The Udacity Robot Nano Degree program.
Slabaugh, Gregory. Computing Euler angles from a rotation matrix. PDF
Wikipedia. Inverse Trigonometric Functions. link
Wikipedia. Atan2. link