This is my implementation for Udacity Robotics Software Engineer Nanodegree Program Pick and Place project.
Problem Statement:
Complete ROS & Gazebo package of Kuka KR210 RRR type robot arm is given in the original project repository of Udacity. Typical Pick and Place operation consist of 6 main steps.
- Going for the target objects pose.
- Approaching to the object
- Grasping the object
- Retracting
- Going for second target pose
- Release the object
Provided ROS package has all the steps except from 1 and 5. What's left to us is to create a Inverse Kinematics service node (IK_Server.py) which calculates the necessary joint angles for all joints for all provided trajectory samples provided by Moveit! Rest is already done by the ROS package
How to use this code?
- Go to Udacity original repo, clone and follow the instructions
- Go to the
/src/RoboND-Kinematics-Project/kuka_arm/launch
folder and change the demo flag to "false" in theinverse_kinematics.launch
file - Replace the IK_server.py file under
/src/RoboND-Kinematics-Project/kuka_arm/scripts
with IK_server.py file - Change execution permissions
$ cd ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/scripts
sudo chmod u+x IK_server.py
- Open a new terminal, source your workspace and execute:
$ cd ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/scripts
$ ./safe_spawner.sh
This will initialize Moveit, Rviz and Gazebo ready for Pick and Place operation.
- Open another terminal, source it and run the IK_server.py
$ cd ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/scripts
$ rosrun kuka_arm IK_server.py
Description of Files
- writeup_pick_and_place.md Writeup file includes solution steps and all explanations
- IK_server.py : ROS node for Forward and Inverse Kinematic Calculations
- Video: Video of 9/10 successful pick and place operations.