Giter Club home page Giter Club logo

pick-and-place-robot-arm's Introduction

Note if the pictures not viewed correctly download .docx file

***Kuka KR210 Pick and Place Project ***

This project was simulated by kuka KR210 which has 6 degree of freedom using gazebo, Rvis and ROS.

Objective:

Is to detect a cylindrical object which spawn on one of the shelves randomly and grab it and throw it in the bin by calculating the path using kinematics and inverse kinematics techniques.

Successful pick and place!

{width="7.5in" height="4.21875in"}

Kinemtaics Analysis :

First is to identify the XYZ axis of each joint.

{width="8.5in" height="6.375in"}

Then drive the DH parameters and evaluate the constant values from the udrf file of the kuka arm

{width="8.5in" height="6.375in"}

Build the transformation matrices and drive the transformation matrix from ground to end effector

T0_1 = TM_Generator(alpha0, a0, d1, q1).subs(DH_table)

T1_2 = TM_Generator(alpha1, a1, d2, q2).subs(DH_table)

T2_3 = TM_Generator(alpha2, a2, d3, q3).subs(DH_table)

T3_4 = TM_Generator(alpha3, a3, d4, q4).subs(DH_table)

T4_5 = TM_Generator(alpha4, a4, d5, q5).subs(DH_table)

T5_6 = TM_Generator(alpha5, a5, d6, q6).subs(DH_table)

T6_G = TM_Generator(alpha6, a6, d7, q7).subs(DH_table)

T0_G = T0_1 * T1_2 * T2_3 * T3_4 * T4_5 * T5_6 * T6_G

Apply extrinsic rotation and gripper fixing orientation

Rot_Fixed = z_rot.subs(y, radians(180)) * y_rot.subs(p,radians(-90))

ROT_Error = z_rot * y_rot * x_rot

ROT_EE = ROT_Error * Rot_Fixed

Inverse kinematics Analysis :

First evaluate first three angels by identifing the 5^th^ joint as the wrist center

{width="6.5in" height="5.125694444444444in"}

Then evaluating the last three joint’s angles by using the individual DH transforms we can obtain the resultant transform and hence resultant rotation 

{width="6.725694444444445in" height="4.301388888888889in"}

To setup the project

Make sure you are using robo-nd VM or have Ubuntu+ROS installed locally.

One time Gazebo setup step:

Check the version of gazebo installed on your system using a terminal:

$ gazebo --version

To run projects from this repository you need version 7.7.0+ If your gazebo version is not 7.7.0+, perform the update as follows:

$ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'

$ wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

$ sudo apt-get update

$ sudo apt-get install gazebo7

Once again check if the correct version was installed:

$ gazebo --version

For the rest of this setup, catkin_ws is the name of active ROS Workspace, if your workspace name is different, change the commands accordingly

If you do not have an active ROS workspace, you can create one by:

$ mkdir -p ~/catkin_ws/src

$ cd ~/catkin_ws/

$ catkin_make

Now that you have a workspace, clone or download this repo into the src directory of your workspace:

$ cd ~/catkin_ws/src

$ git clone https://github.com/udacity/RoboND-Kinematics-Project.git

Now from a terminal window:

$ cd ~/catkin_ws

$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y

$ cd ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/scripts

$ sudo chmod +x target_spawn.py

$ sudo chmod +x IK_server.py

$ sudo chmod +x safe_spawner.sh

Build the project:

$ cd ~/catkin_ws

$ catkin_make

Add following to your .bashrc file

export GAZEBO_MODEL_PATH=~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/models

source ~/catkin_ws/devel/setup.bash

For demo mode make sure the demo flag is set to "true" in inverse_kinematics.launch file under /RoboND-Kinematics-Project/kuka_arm/launch

In addition, you can also control the spawn location of the target object in the shelf. To do this, modify the spawn_locationargument in target_description.launch file under /RoboND-Kinematics-Project/kuka_arm/launch. 0-9 are valid values for spawn_location with 0 being random mode.

You can launch the project by

$ cd ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/scripts

$ ./safe_spawner.sh

If you are running in demo mode, this is all you need. To run your own Inverse Kinematics code change the demo flag described above to "false" and run your code (once the project has successfully loaded) by:

$ cd ~/catkin_ws/src/RoboND-Kinematics-Project/kuka_arm/scripts

$ rosrun kuka_arm IK_server.py

Once Gazebo and rviz are up and running, make sure you see following in the gazebo world:

  • Robot

  • Shelf

  • Blue cylindrical target in one of the shelves

  • Dropbox right next to the robot

If any of these items are missing, report as an issue.

Once all these items are confirmed, open rviz window, hit Next button.

To view the complete demo keep hitting Next after previous action is completed successfully.

Since debugging is enabled, you should be able to see diagnostic output on various terminals that have popped up.

The demo ends when the robot arm reaches at the top of the drop location.

There is no loopback implemented yet, so you need to close all the terminal windows in order to restart.

In case the demo fails, close all three terminal windows and rerun the script.

pick-and-place-robot-arm's People

Contributors

abanobeffat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.