Skip to content

Latest commit

 

History

History
65 lines (38 loc) · 3.18 KB

writeup_IK_NicholasStepanov.md

File metadata and controls

65 lines (38 loc) · 3.18 KB

Project: Kinematics Pick & Place

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:

  1. Set up your ROS Workspace.
  2. Download or clone the project repository into the src directory of your ROS Workspace.
  3. Experiment with the forward_kinematics environment and get familiar with the robot.
  4. Launch in demo mode.
  5. Perform Kinematic Analysis for the robot following the project rubric.
  6. 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.


Writeup / README

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

Kinematic Analysis

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:

alt text

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

Project Implementation

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

And just for fun, another example image: alt text