The original situation
When metal structures are at the end of their technical service life they will be demolished. The client wants a robot that can cut the structures up into pieces so that these materials can be recycled. The cutting would be done using a torch.
The company is already the proud owner of a Fanuc R-2000iC/270F, so that is what is used for this project.
Dismantling metal structures can be very dirty, hard and dangerous process. This is caused by the contamination of some parts with debris from the enviroment as well as oil leftovers and because of the thickness and amount of steel involved. Rather than cutting big, heavy sheets of metal by hand out of the walls of the metal structure the process should be done by a robot.
To enable a robot to cut automatically a few problems have to be solved:
- The robot must be able to recognize its surrounding
- Code is needed to distinguish the areas that should be cut from the areas that should be avoided (like stiffeners).
- A cutting path/pattern has to be generated
For every part of the project we have made a custom solution.
Using the Intel® RealSense™ D455 camera we made a python code that could see the plate with a supporting structure placed before it. The code can be started through an HMI and performs various post-processing steps on the raw pointcloud from the camera. It then finds the surfaces using the open3d library. The pointcloud of these surfaces will be projected in a flat plane and converted to an Image. Using OpenCV we find the corners, these coordinates go to the pattern generation.
The pattern generator calculates where the cutting lines should be, making sure that even when the image (pointcloud from camera) is bad it still produces straight square pieces. It will then ask the user to approve the pattern on the HMI (as seen below), ones approved the Robot can start cutting.
For the communication between the Robot, the PLC and all the python scripts we used ROS. ROS is a very capable, but complex software. It has a predefined structure which must be always followed and that needs to be setup correctly. ROS likes to produce a lot of errors if this structure isn’t followed or if the code is not totally correct. But if ROS works, then it is reliable and very capable.
We build a complex communication structure that connects multiple python scripts, so that they can send each other data and messages via ROS. With that we were able to execute functions in separately running python files and to interact with the HMI.
In this project we had three main mechanical objects that needed to be made: the EoAT (end of arm tool), the Ignition and the PLC.
First we needed an EoAT that was able to hold the Torch and the camera. For the torch it was also
important that the handle for extra oxygen can be pressed. The handle presser was made using 3D-printed parts and a stepper motor (controlled in the PLC). The final prototype is seen below.
A torch usually gets ignited using a manual Flint Spark Torch Igniter, we chose to use an electric option instead. We created a very high Voltage point that gives a spark when you run power through it. This ignition station is controlled via the PLC.
Unfortunately the transformer in the ignition system broke the last day, that’s why you the torch being ignited by another torch in the video.
Since the project was done using a robot that has a payload of 270 kg, safety was very important. Outside of the normal robot rules (like do not be in the robotcel unsupervised) we implemented safety procedures to make sure everything was ok. To make sure these procedures were being followed they were also implemented in the HMI (Human Machine Interface). An example is the “Is there a flame?” function. When the gas-flow starts and the ignition has ignited the torch the HMI will ask the user if there is a flame, only if there is a flame the cutting process can start.
We would like to thank our supervisor Rick van Kesteren for his support and excellent input during this ambicious project. Rick as a previous SMR student and actual worker from Grimbergen, has the experience from being an student doing the same minor and also the professional experience so it was very helpful. Moreover, we would like to thank Mathijs van de Vegt, Guus Paris and Thijs Brilleman for their technical support and feedback.