This repositroy is being developed as one of usecases of ARISE, co-funded by European Union, at the INDUSTRY4.0 laboratory affiliated with Politecnico di Milano.
By the end of Dec 2024, the project will have completed its first year and the implementation progress has been reported. Initially, the usecase is briefly described. Followingly, the functions of each ros2 packages are explained.
A defective PCB is identified in the control station, then the control station transmits data of the PCB and the relevant non-functional components to the reworking station; in the reworking station, an UR5e cobot identifies appropriate tools and prepares the setup of the workspace for the operator. In the meanwhile, an AGV transports the defective PCB from the control station to the reworking station. At the time of arrival, the UR5e cobot unloads the defective PCB. The workspace must be prepared before the arrival of the operator. The workflow of usecase is depicted below:
The high level system architecture is shown:
where the AGV operates on ROS1 Noetic and two cobots operate on ROS2. The ROS1/2 bridge is used to exchange data among devices.
The package "moveitinterface_cpp" is a wrapper of MoveIt C++ API where the cobot trajectory is planned.
The package "robot_interface" contains the service for open/close of ur5e gripper.
The package "panda_info" contains the messages being communincatd between stations.
The package "panda_workstation" is the package installed on the control station publishing the information of defective PCBs to the reworking station.
The package "rs_location_retrival" receives the RGB-D images from the RealSense camera D435i, localizes the desolering tools and publishes the corresponding coordinates.
The robot trajectory has been planned using Moveit2.
The driver of Universal Robot has been installed using official Universal_Robots_ROS2_Driver repositroy.
The driver of Intel RealSense D435i camera has been installed using librealsense repositroy.
The driver of Robotiq Hande gripper is installed using RobotiqHandeROS2Driver repositroy.
The bridge communication between ROS1 and ROS2 is made using this repositroy.
For the localization purpose, it is necessary to calibrate the camera's coordinates with respect to the robot's origin coordinate. The calibration is carried out using this repo which is implemented in ROS1.
- Run this command
ros2 launch ur_robot_driver ur_control.launch.py ur_type:=ur5e robot_ip:=192.168.0.100 launch_rviz:=false
to establish the communication between the PC and the UR5e.
- In a new terminal, run this command
ros2 launch ur_moveit_config ur_moveit.launch.py ur_type:="ur5e" launch_rviz:=false
to launch moveit2 config for trajectory planning.
- In a new terminal, run the command
ros2 launch robotiq_hande_ros2_driver gripper_bringup.launch.py robot_ip:=192.168.0.100
to establish the communication with Hande gripper.
- Run the following commands in the seperate terminals for the unloading of defective pcbs from AGV's tray
ros2 launch moveitinterface_cpp agv_pick.launch.py ur_type:="ur5e"
and pick/place of the desolering tool on the table
ros2 launch moveitinterface_cpp pick_component.launch.py ur_type:="ur5e"
- In a new terminal, run
ros2 launch realsense2_camera rs_launch.py
to establish the communication with the D435i camera.
- In a new terminal, run
ros2 run rs_location_retrival localization
for the localization of desolering tool.