Barobot construction principles
- Dosing accurate amounts of ingredients
- Adequate shaking/mixing capability
- Any popular glass and bottle should fit
- Should handle liquors, juices, carbonated liquids, milk and syrups
- No cleaning in between drinks (eg. Pinacolada residues cannot spoil Whiskey and Coke poured next)
- Easy cleaning after the party
- Frame produced in deterministic way made of popular material
- Electronics built of popular parts
- A touchscreen with user interface
- Easy to assemble at home without advanced skills or tools
- As easy as possible to operate by unskilled users (eg. slightly intoxicated people late during a party)
- Can stay in cabinet with alcohol bottles loaded for a long time without need for any interaction
- Illumination of the cocktail ingredients
- LED illumination should add WOW factor to the party
- Upgradeable software and firmware
- Open source/open hardware
- Remote cocktail ordering
- Adjustable user interface touchscreen position
- 12 bottle capability
- Intuitive user interface that can suggest drinks
- One person should be able to move it
- Should fit into 90cm/36’’ cabinet or a sedan car
- Easily extendable on software and hardware side
- One load should be enough for ~100 drinks
- Easy to resupply ingredients during a party
- And most important: as cost effective as possible
For a year we worked on choosing materials, technologies and architectures. During that time we made numerous iterations and wrote tons of code and finally all the above requirements are fulfilled. Below is a detailed description of Barobot operation and construction.
Barobot pours drinks by moving glass under one of 12 bottles. Each bottle has a dispenser – a common bar optic easily obtainable in bartender shops. Barobot uses both 20ml dispensers for spirits and 50ml dispensers for soft drinks. Bottles are set in upside down position and we let gravity do the work by using a well proven solution. Any glass or even cup will do as long as it fits under the dispenser i.e. is lower than 17cm (6 3/4”). All but the very tallest glasses are fine.
Frame is made exclusively from flat laser cut/waterjet elements 6mm and 10mm in thickness. All parts fit like LEGO blocks and form a rigid and precise 3d structure. We use acrylic glass (PMMA) as the material of choice.
Glass moves around in two axes – X axis operated by stepper motor and Y by high torque model servo. The second “Y axis” is really a curve. We decided that it is easier to create circular than linear motion due to space and cost constraints. Second servomotor operates “Z axis” which is really just a name for actuator pushing dispenser triggers to pour liquids into glass beneath.
Somehow we find it mesmerizing to watch the glass moving around!
While robot works just fine, there is Murphy’s Law plaque hanging in our lab as a friendly reminder. Our main principle is that in the worst case scenario Barobot can fail to pour a drink or it can even pour a wrong drink, but absolutely nothing should ever spill (remember that we have 12 bottles full of liquid hanging upside down within frame).
Barobot utilizes a series of fail-safe detectors:
- X and Y axes have closed-loop control systems. There are magnets placed in strategic positions and polarizations to tell the machine about current glass position. Magnets are detected by Hall sensors and Barobot will start pouring only the glass is directly under a bottle.
- Glass detection is performed by weight sensor located under glass platform. Again no pouring unless glass weight is detected. This sensor doubles as a pouring detection. If Barobot attempts to pour and glass weight is not changing then something went wrong. Presumably there is no more liquid in the bottle.
- Finally Y and Z servos have current sensors. If there is obstacle preventing Barobot to reach desired position and current consumption is high for a prolonged time an error message is produced.
Low level functions of barobot are performed by dedicated PCBs. Two of them: carriage board and main board are based on ATmega 328 (yes, the same as Arduino hence Barobot is Arduino compatible in terms of programming). They are responsible for collecting and relaying information from sensors as well as giving commands to actuators (motor and servos).
The other 12 boards are called u-panels with tiny ATmega 8 microprocessors. Their main purpose is operating 96 LEDs on top of the robot (for bottle and Barobot interior illumination). All the PCBs communicate via I2C and ISP protocols in a distributed manner. One of the advantages of this setup is that all those independently operated LEDs that can illuminate the frame and individual bottles in a myriad of different ways (simple elegance mode? color stroboscope? sync with music? you name it!).
The boards have spare PINs sockets. So if you feel like adding your own sensors/peripherals (RFID, range sensor, displays etc.) it is easy to do so.
High level functions including displaying user interface are done by Android 7” tablet. It is connected to mainboard via USB/RS232 and serves as command and control centre for all the PCBs. Tablet’s WiFi can be used to access Barobot menu remotely via another smartphone or tablet (aka Sofa server functionality).
No robot is complete without software.
PCBs run in Arduino C++ code and communicate over I2C and ISP. On top of that a clever trick we used allows for easy firmware update of the whole distributed system. So if you feel less programing savvy you will be able to just press a button on Android to update the all the Barobot with newest firmware.
Tablet application is written in Android Java and features:
- browsing drink recipes database (shows only cocktails that are possible to create using installed ingredients)
- choosing drinks basing on: flavour, ingredients, colour, strength etc.*
- proposing random cocktail recipe (“I feel lucky”)
- composing new drinks and adding them to the database
- pouring drinks ordered remotely (Sofa server)*
- showing history of drinks orders defining what ingredients/bottles are installed
- defining external ingredients (i.e. not installed in Bartender)*
- setting light themes generating new light themes*
- calibrating all aspects of Barobot operation
Items marked with * are currently (mid May 2014) under development/exist in proof of concept stage.
Barobot database includes over 1000 drink recipes starting from overtime classics to novel, brave combinations. At a given time only a subset of these recipes is available due to limited number ingredients. With 12 bottles installed (e.g. 6 spirits, 6 non-aloholic ingredients) 80-150 recipes are available.
“Sofa server” functionality i.e. ordering drinks remotely without actually getting up from the couch is currently under development. It bases on tablet http server and delivering drinks menu over www site to WiFi LAN devices. Please note that while choosing drink can be done remotely (it can take time if there are 100+ positions in the menu!) actual pouring can only happen when a glass is positioned in the robot.
While the whole Barobot design is well tested (we love Barobot testing! ;-) it can certainly be tweaked and upgraded with new awesome features. Expect software upgrades in future!
All the Barobot hardware and software specs are open, and assembly manual is provided here. So if you feel like taking a look and tinkering on your own (or even building a Barobot from scratch!) you are most welcome.