The Cocktail Bot 4.0 consists of five robots with one high-level goal: Mix one more than 20 possible drink combination for you! But it isn’t as easy as it sounds. After the customer composed his drink by combining liquor, soft drink and ice in a web interface. The robots start to mix the drink on their own. Five robot stations are preparing the order to deliver it to the guests.
The first robot, a Universal Robots UR5, takes a glass out of an industrial dishwasher rack. The challenge here is, that the glasses are placed upside down in the rack and have to be turned. Furthermore, there are two types of glasses – one for long drinks and one for shots like ‘whisky on the rocks’. The problem was mainly solved with the design of custom gripper fingers. They made it possible to grasp, turn and release the different types of glasses without an intermediate manipulation step. Also, some rubber bands increased the friction and made it possible to let the glass slide down smoothly on the belt. After releasing the glass, the glass tracking started to determine the exact pose.
To get to know the exact position of the glass on the conveyor belt an image processing pipeline calculated its pose. Especially, the transparency of the glass itself made it difficult to detect them reliably at every position. Otherwise the ice cubes or the liquor where not poured into the glass, but off target.
While the glass was placed on the center of the conveyor belt by the first robot, the second robot, a Schunk LWA 4P, started to fill its shovel with ice cubes out of an ice box. It is tricky as the ice cubes stick together after some time and they also change their form by melting. Again, a custom designed gripper guaranteed to get the right amount of ice cubes in each glass.
After ice was added the next step was to prepare the liquor. In total, there were four different kinds of shots – gin, whisky, rum and vodka. All of the liquors where in their original bottles and the third robot, a KUKA KR10 in combination with a Robotiq Three-Finger-Gripper, grasped them precisely. A special liquid nozzle made sure that only 4cl of liquor were poured in each glass after the robot placed the bottle opening above the glass. Pouring while following the movement of the glass made this process independent of liquid level or bottle type.
At the end of the first conveyor belt the fourth robot, again a UR5 with a Schunk PG70 gripper, waited for the arrival of the glass. If the guest just ordered a shot the glass was moved onto the second conveyor belt. Otherwise one of the soft drinks was added. Apart from sparkling and tap water, the taping system provided coke, tonic water, bitter lemon and orange juice. When the right amount of soft drink was added to the drink, the long drink glass was also placed on the other belt.
Only one part missing: The straw. While the fourth robot prepared the drink the fifth and biggest robot, a Universal Robots UR10 and a Weiss WSG-25 gripper, started to get a straw out of the straw dispenser standing next to it. After picking one, the arm moved to its waiting pose above the conveyor belt until the glass arrived. Again, custom designed gripper fingers made it possible to pick a straw out of the box as well as grasping the glass filled with liquids.
When the glass was within reach, the gripper released the straw into the glass and the arm approached nicely towards the glass to grasp it and place it on an interactive table. This was used to show the placed orders as well as the current drink making progress.
All the robots had to work synchronized, with almost no free space around them and close distance to the guests. The Robot Operating System (ROS) made it possible, to control all different kind of robotic arms and grippers within one high-level controller. Each robot station was triggered separately to increase the robustness and also the possibilities of extending the demonstrator for future parties.
The Cocktail Bot 4.0 was created and programmed by a small team of researchers from the FZI Research Center for Information Technologies in Karlsruhe, Germany.