# TetrisBot

Bin Packing problem
A very old and known problem in the logistics industrie is the bin packing problem. The root of this problem is that there is often too much space between boxes that are being placed in a certain space, which could be filled up with more boxes if the placement would have been done differently. As shown below.

This is till now only done in virtual environments and not yet implemented in a fully automated process. Which is what our project is about.

Solutions
For this problem many algorithms have been made to solve the Bin Packing problem. The most common way is to brute-force the best way of the box placement by trying all the different possibilities the boxes can be placed, this is also tied by a list of rules. For example that the heaviest and biggest box is on the bottom and in the corner on the area the boxes are being placed.

Problem with current solutions
The solutions that have been made are mostly proof of concepts and only done virtually. But the real problem is that all solutions require the full set of boxes before it’s calculation for the best fit, which is logical.

But for our implementation of the bin packing problem in real life, we have a constant stream of boxes. Therefore we don’t know what the total amount of boxes are for the best of the best placements, before we start stacking.

Our solution
For our solution we have a setup of 1 Robot, 1 Conveyor belt, a vision system, a pallet and a rotation table.
We aim to automatically stack the boxes that are coming in via the conveyor belt using a robot in real time. The boxes are being scanned by the vision system, which relays the information to our own bin packing algorithm we made to make the real time bin packing possible.

The conveyor also works as a mini buffer, the robot can reach multiple boxes that are on the conveyor belt. And will pick up the box that has priority.

The robot will get the coordinates and rotation of the box position and where it should be placed, of the box it needs to pick up. If the box needs to be rotated, it will do so on the table next to the conveyor. Then the box will be placed on the designated coordinate on the pallet.