Writeup Template: You can use this file as a template for your writeup if you want to submit it as a markdown file, but feel free to use some other method and submit a pdf if you prefer.
Steps to complete the project:
- Set up your ROS Workspace.
- Download or clone the project repository into the src directory of your ROS Workspace.
- Experiment with the forward_kinematics environment and get familiar with the robot.
- Launch in demo mode.
- Perform Kinematic Analysis for the robot following the project rubric.
- Fill in the
IK_server.py
with your Inverse Kinematics code.
Rubric Points
Here I will consider the rubric points individually and describe how I addressed each point in my implementation.
1. Provide a Writeup / README that includes all the rubric points and how you addressed each one. You can submit your writeup as markdown or pdf.
To write code in IK_server.py I used jupyter notebooks to calculate the angles for test cases and recreated those poses in forward kinematics environment to be approximately at the desired locations/orientations
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.
DH parameters and transforms:
2. Decouple Inverse Kinematics problem into Inverse Position Kinematics and inverse Orientation Kinematics; doing so derive the equations to calculate all individual joint angles.
After deriving wrist center position: theta1 = arctan(wy/wx) theta2 and 3 are derived using cosine rule for known sides of the triangle J2, J3, WC After calculating theta1,2,3 Create Rotation matrix R3_G for wrist center using R0_3 with substituted theta1,2,3 and Rrpy matrix theta4 = arctan (R3_G33/ -R3_G13) or (sin(theta4)/cos(theta4)) theta5 = arctan (-R3_G13/cos(theta4), R3_G23) or (sin(theta5)/cos(theta5)) theta6 = arctan (-R3_G22/ R3_G21) or (sin(theta6)/cos(theta6))
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.
In my Theta 4 and Theta6 calculations I did not account for the possible angles to be -7 rad - 7rad, therefore, my code does not recognize the planning and will occasionally rotate joints 4,6 180 degrees to get into desired position