Coder Social home page Coder Social logo

jhaardt / wrs Goto Github PK

View Code? Open in Web Editor NEW
69.0 1.0 13.0 22.84 MB

Force controlled assembly process. In real and simulated environment. Using Universal Robots UR5, ROS, Gazebo.

License: BSD 3-Clause "New" or "Revised" License

CMake 7.96% C++ 58.27% Python 15.49% C 0.38% Makefile 17.89%
ur5 gazebo ros robotiq-gripper robotiq force-control moveit

wrs's Introduction

wrs

Introduction

This Workspace is the result of my master thesis. The goal of the project was to create a force controlled assembly process, that works in a simulated and a real environment. I used the following robot setup: Universal Robots UR5 with an attached Robotiq 2F-140 gripper and ROS Kinetic Kame. The task was to fit a pin and a bearing housing into a mounting plate and originated from the assembly task of the 2018 World Robot Challenge.

This video shows the gazebo simulated UR5-Robot, searching the mounting hole and fitting the Pin into the mounting plate by only using the integrated force sensor in the TCP.

youtube

(Unfortunately, due to COVID-19, it was not possible for me to get into the Lab again and take a Video of the real Robot).

To make it work, some ROS-Packages, other than my own, needed some changes. For that reason, I decided to upload the whole workspace to GitHub.

Getting set up

This workspace was developed with ROS Kinetic Kame. Other versions of ROS aren't tested, but might work.

To clone the git repository, navigate to your new ROS Catkin_Workspace and run the following command:

$ git clone https://github.com/jhaardt/wrs.git src

Running the code

To run the different programms, run the following commands in different terminal windows:

Simulation

$ roslaunch wrs_gazebo wrs_simu.launch

$ roslaunch wrs_moveit_config wrs_moveit_planning_execution.launch sim:=true

$ rosrun wrs_run pick_place_simu

For further information about the assembly process, you can run these two analysis tools:

$ roslaunch wrs_moveit_config moveit_rviz.launch config:=true

$ rqt

Real

If the real robot is not connected, start Universal Robot UR5-Sim first:

$ ursim-3.5.4.10845/start-ursim.sh

If the real robot is connected:

$ roslaunch wrs_real_setup ur5_gripper.launch

$ roslaunch wrs_real_setup activate_gripper.launch

$ roslaunch wrs_moveit_config wrs_moveit_planning_execution.launch

$ roslaunch wrs_moveit_config moveit_rviz.launch config:=true

$ rosrun wrs_run pick_place_real

Known Issues

  • Simulation: While trying to assemble the bearing housing, the robot model breakes, when the housing touches the mounting plate a second time, due to simulation problems with Gazebo.
  • Real: While assembling the pin, the forces are getting to big and the pin winds out of the gripper.

References

The links to the used packages are:

gazebo_ros_link_attacher [GitHub]

moveit_jog_arm [GitHub] (clone) The orignal git dosen't exist anymore since it got changed, while creating this project. It has been moved to MoveIt Experimental and is now known as MoveIt Servo.

roboticsgroup_gazebo_plugins [GitHub]

robotiq [GitHub]

kinetic-devel [GitHub] (necessary for Jog Arm)

universal_robot [GitHub]

ur_modern_driver [GitHub]

A big help and guideline was:

intuitivecomputing/icl_phri_ur5 [GitHub]

philwall3/UR5-with-Robotiq-Gripper-and-Kinect [GitHub]

intuitivecomputing/ur5_with_robotiq_gripper [GitHub]

wrs's People

Contributors

jhaardt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

wrs's Issues

Related theoretical articles

Thank you for sharing this interesting work.

But in the process of studying, I encountered the problem of incomplete theoretical foundation.

Do you have any articles or blogs about this work that you can recommend to me to learn?

catkin_make时报错

[ 15%] Building CXX object wrs-master/wrs/wrs_simu/wrs_run/CMakeFiles/wrs_run.dir/src/functions.cpp.o
/home/dayna/catkin_wrs/src/wrs-master/wrs/wrs_simu/wrs_run/src/functions.cpp: In function ‘void upright(moveit::planning_interface::MoveGroupInterface&, float, float, float)’:
/home/dayna/catkin_wrs/src/wrs-master/wrs/wrs_simu/wrs_run/src/functions.cpp:250:32: error: no matching function for call to ‘tf2::Matrix3x3::getRPY(tf2Scalar&, int (&)(int, FILE*), long long int (&)(const char*) throw ())’
mat.getRPY(yaw, putc, atoll);
^
In file included from /opt/ros/melodic/include/tf2/LinearMath/Transform.h:21:0,
from /opt/ros/melodic/include/tf2_geometry_msgs/tf2_geometry_msgs.h:37,
from /home/dayna/catkin_wrs/src/wrs-master/wrs/wrs_simu/wrs_run/include/functions.h:7,
from /home/dayna/catkin_wrs/src/wrs-master/wrs/wrs_simu/wrs_run/src/functions.cpp:1:
/opt/ros/melodic/include/tf2/LinearMath/Matrix3x3.h:364:7: note: candidate: void tf2::Matrix3x3::getRPY(tf2Scalar&, tf2Scalar&, tf2Scalar&, unsigned int) const
void getRPY(tf2Scalar& roll, tf2Scalar& pitch, tf2Scalar& yaw, unsigned int solution_number = 1) const
^~~~~~
/opt/ros/melodic/include/tf2/LinearMath/Matrix3x3.h:364:7: note: no known conversion for argument 2 from ‘int(int, FILE*) {aka int(int, _IO_FILE*)}’ to ‘tf2Scalar& {aka double&}’
wrs-master/wrs/wrs_simu/wrs_run/CMakeFiles/wrs_run.dir/build.make:62: recipe for target 'wrs-master/wrs/wrs_simu/wrs_run/CMakeFiles/wrs_run.dir/src/functions.cpp.o' failed
make[2]: *** [wrs-master/wrs/wrs_simu/wrs_run/CMakeFiles/wrs_run.dir/src/functions.cpp.o] Error 1
CMakeFiles/Makefile2:11853: recipe for target 'wrs-master/wrs/wrs_simu/wrs_run/CMakeFiles/wrs_run.dir/all' failed
make[1]: *** [wrs-master/wrs/wrs_simu/wrs_run/CMakeFiles/wrs_run.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j2 -l2" failed
aee0153eb6ea5bafec660d99e553836

tf2_geometry_msgs

‘TwistStamped’ is not a member of ‘tf2_geometry_msgs, but in std_msgs/ geometry_msgs

rqt_plot

hello

i'm interested in the force processing of your code

but when i use the rqt_plot to output the /wrench_world/force,the rqt_plot just display three lines on the screen

i cannnot understant it

just like it

image

the master's thesis

Hello, thank you very much for your open source.
can I see your master's thesis? I want to learn related knowledge...

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.