Bin-picking of Computer Monitors
a CDIO Project at Linköping University

ProjectWhat is this?

Background

2 million LCD monitors and TVs are sold each year in Sweden. As a monitor contains both environmentally harmful substances and valuable materials, the interest in an automated recycling process is large. This project is a part of the research project HÅPLA which investigates the possibility for such processes.

Project Aim

The objective of the project is to detect and locate LCD monitors in a pallet using a Microsoft Kinect sensor, then use a Yaskawa SDA10 industrial robot to pick up the monitors and place them by the side of the pallet. The project shall investigate the degree to which the sensor can be used to detect LCD monitors as well as how much information that can be obtained about the monitors.

Project Description

The system includes a Microsoft Kinect sensor that provides 2D-images and depth images. These images are processed by our software program in a computer in order to determine which monitor in the pallet that is most suitable to pick up. A route with a number of points for the robot arm to move through towards the grasping point is also calculated. Given the calculated points and the grasping point, the robot arm is programmed via the Yaskawa Controller to move through the points on its way towards the selected monitor to pick it up and then drop it off at a pre-programmed position on the side of the robot.

For a more thoroughly description, see ‘Technical Report’ under the section ‘Downloads’.

Future Work

There are a lot of future development opportunities. This is just the beginning of a project that will hopefully, in the end, consist of a fully developed recycling machine that retrieves pallets with monitors on a conveyor belt and sorts and places the monitors on another conveyor belt for collection of the dangerous and valuable materials inside the monitors.

Hardware

The robot used for this project was a Yaskawa SDA10 which has seven joints instead of six wich is more usual for industrial robots. The extra axis means that it can change it's posture similar as a human and has a broader operating range. This results also in a system with higher complexity that is more inclined to get stuck in singular positions.

Software

The software is written in C++ using Visual Studio and is currently compiled for a Windows environment. The software is however is not depending of any windows specific libraries so it should be theoretically be easy to compile for other operating systems as well. To enable a simple setup Cmake is used.

The robot that was used for the project could be manipulated through soap requests via http. The version we used only allowed variable reading and setting so we could not read or change any system state, like starting program or reading errors. One workaround that we used was starting a main program in the robot. This program waits for variables to be set and chooses a subroutine based on the variable value.

Third party libraries used in the project

OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. The library has more than 2500 optimized algorithms, which includes a comprehensive set of both classic and state-of-the-art computer vision and machine learning algorithms.

The Point Cloud Library (or PCL) is a large scale, open project for 2D/3D image and point cloud processing. The PCL framework contains numerous state-of-the art algorithms including filtering, feature estimation, surface reconstruction, registration, model fitting and segmentation.

Libraries used by PCL:

  • boost
  • Eigen
  • FLANN
  • VTK
  • Qt
  • QHull
Natural Interfaces are devices that capture body movements and sounds to allow for a more natural interaction of users with computers in the context of a Natural User Interface. The Kinect is an example of such a device.
Pugixml is a light-weight C++ XML processing library. This was used for parsing the soap answers from the robot.
Libcurl is a client-side URL transfer library support many protocols including HTTP that was used in our project for communicating with the robot.
Free C++ libraries that contains many features and available on man operating systems. For this project the multithreading and file handling functions was used.
Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.