The purpose of the project is to programming a flexible industrial cell based on ROS. In particular, it refers to the UR5e robot mounted in the production line of the ICELab at the University of Verona. This workspace allows to control the robot both in simulation and in reality. The trajectory are planned with MoveIt, instead the comunication with the real robot is given by the Universal_Robot_ROS_Driver. The key points to address are written in following:
- Geometric modeling of a UR5e in a manufacturing cell
- Object Pick and place
- Glue sealing (following a cartesian path with trajectory constraints in orientation and speed)
- Quality inspection(pick an object and show it with two different angles to a camera)
- Communication with the simulator(URsim) and the real robot
In following the most important features of the proposed work:
- Design the model of gripper_mlp3240 attached on the robot starting from CAD to guarantee more reliability during the task. Including the flange between the wrist 3 and the gripper.
- ICELab environmnet reconstruction(mesh and parameters)
- URSim/Robot and MoveIt comunication through a broadcast node
- The tasks parameters are defined depending on real world measure
This work has been devoleped by Antonino Parisi and Edoardo Fiorini at the University of Verona.
To model the UR5e robot mounted in the production line has been used the already existing URDF file from the official repository. In this package there are also all the planning group which allows us to design our trajectory with moveIt.
To ensure the best reliability we have developed the gripper model from scratch. We started from the CAD models from which we extracted the meshes through blender. A bit of post production was needed to get a good resolution. After that we extracted the complete meshes and assembled them inside the urdf. In particular, to see these stuff you have to open the fmauch_universal_robot/ur_description folder. Then, in meshes there are all the 3D shape, instead in urdf there are all the xacro file. Of course, it was necessary to define the links between the ur5e + gripper xacro file and environment.
The production line of the ICELab has been reconstructed in minimal details to avoid gap between the simulation and the real task. To use URSim it is necessary to have all the real parameters regarding the conveyors belt and the support of UR5e. Only in this way what happens in the simulator is exactly what will expect in reality. In following is shown respectively the prodcuction line plant and the geometric model:
This workspace requires a system setup with ROS. It is recommended to use:
- Ubuntu 18.04 LTS
- ROS melodic
To make sure that robot control is not affected by system latencies, it should be better to use a real-time kernel with the system. See the real-time setup guide.
First of all you have to install the URSim simulator from the Universal Robot official page. It is recommended to install the simualtor before ROS to avoid problems with dependencies.
After that you are ready to install the project in your ROS workspace. Open a terminal and write the following commands:
cd $HOME/your_ros_ws
git clone https://github.com/AntoninoParisi/rpc.git
#rename rpc to src (do it with gui interface) cd $HOME/your_ros_ws/src catkin_init_workspace cd ..
#building catkin_make
#activate this workspace source $HOME/your_ros_ws/devel/setup.bash
There could be some problems with ROS-packages or dependencies. Check out the package.xml and install all the package that the catkin_make needs.
To run the project in simulation you have to launch some commands, all of these have to be launch from different terminals and before run the command you have to activate your workspace with:
source $HOME/your_ros_ws/devel/setup.bash
The steps are the following one:
-
Open the rviz simulation (visualizer and planning group):
roslaunch ur5e_mlp3240_env demo.launch
-
Open the URSim simulator:
cd $HOME/your_path/ursim-5.X.X.XXXXX/start-ursim.sh
Now the URCap must be installed in the simulator, using the following guide
-
Extract the calibration of the robot:
roslaunch ur_calibration calibration_correction.launch robot_ip:=127.0.0.1 target_filename:="$(rospack find ur_calibration)/etc/ex-ur5e_calibration.yaml"
-
Run the ROS node that comunicates with URSim
roslaunch ur_robot_driver ur5e_bringup.launch robot_ip:=127.0.0.1 kinematics_config:=$(rospack find ur_calibration)/etc/ex-ur5e_calibration.yaml
-
Run the broadcaster ROS node that send the MoveIt trajectory to URSim
rosrun ursim_broadcaster ursim_broadcaster
-
Run the task ROS node in base on what you want to execute:
- Pick and Place:
rosrun pick_place pick_place_node
- Glue Sealing:
rosrun glue_sealing glue_sealing_node
- Visual Inspection:
rosrun visual_inspection visual_inspection_node
To run the project using the real robot, first of all you have to switch on the robot from the teach pendant and you have to connect to the computer robot. Then you are ready to launch some commands, all of these have to be launch from different terminals and before run the command you have to activate your workspace with:
source $HOME/your_ros_ws/devel/setup.bash
The steps are the following one:
-
Open the rviz simulation (visualizer and planning group):
roslaunch ur5e_mlp3240_env demo.launch
-
Start the robot and open the program with the URCap on the teach pendant:
The URCap must be installed in the simulator, using the following guide
-
Extract the calibration of the robot:
roslaunch ur_calibration calibration_correction.launch robot_ip:=YOUR_ROBOT_IP target_filename:="$(rospack find ur_calibration)/etc/ex-ur5e_calibration.yaml"
-
Run the ROS node that comunicates with the real robot
roslaunch ur_robot_driver ur5e_bringup.launch robot_ip:=ROBOT_IP kinematics_config:=$(rospack find ur_calibration)/etc/ex-ur5e_calibration.yaml
-
Run the broadcaster ROS node that send the MoveIt trajectory to the real robot
rosrun ursim_broadcaster ursim_broadcaster
-
Run the task ROS node in base on what you want to execute:
- Pick and Place:
rosrun pick_place pick_place_node
- Glue Sealing:
rosrun glue_sealing glue_sealing_node
- Visual Inspection:
rosrun visual_inspection visual_inspection_node