BeagleBone Black project spotlight:
By Tara Stratton
What’s your perfect vacation? Mine involves sitting out by the pool under the sun as people deliver me ice-cold drinks. Andy Gikling seems to have a similar dream, and he figured out a way to live the good life every weekend—by developing the BBot robot!
The BBot is an open source, remote-controlled drink serving robot. This “cooler camel” puts a cooler on a mini trailer and delivers drinks to people at the pool. As Andy put it, “Why not have a robot go get the drinks? It’s 2013 people!” And with the ability to haul 30-40 lbs, BBot keeps the drinks flowing. This robot does more than just deliver drinks. It can talk to you, see the world around it and even display drink prices and beer advertisements on the screen. One very unique feature is that when people try to steal drinks, the robot kicks on its absurdly loud alarm system.
Andy used 900 MHz XBee radios to transport remote control data from the Microsoft .NET GUI to BeagleBone Black. XBee connectivity enables very long range control, making it possible to “order” drinks from miles away. “The XBee radios were a treat to finally work with,” said Andy. “They are so cool and simple to use.”
The BeagleBone Black computer is the brain of the device. It parses the data and routes it to the various control systems on the robot. “There’s nothing like it with as much computing power, flexibility, and size of active community at the $45 price point,” said Andy. “I needed the vast number if I/O found on BeagleBone Black for my robot. I love how small it is too!” It also provided Andy with a great way to learn more about Linux and C++. “Although BeagleBone Black is rather new, there are an amazing number of sources on the Internet that show you how to do common things,” said Andy. He specifically credited Derek Molloy’s videos for helping him go from “zero to hero” with some of the software development challenges he faced.
Andy stacked a ValentFX FPGA cape on top of BeagleBone Black to provide a robust means of low-level hardware interfacing.
Andy coded the names of the classes and variables to be anthropomorphic. For example, rather than calling the code that runs the robot’s wheels “Motors.cpp” or “Drives.cpp,” he named them things like “Voice.cpp” and “Legs.cpp.” Functions might be “Walk int speed );” instead of “Drive ( int speed );.” The GUI follows the same trend, with the main window user controls named things like “eye ball,” “legs,” and “voice.” Each control communicates with one of BBot’s systems. Another cool feature of the GUI is that the user can connect it to a Leap Motion controller so that the robot can be driven by a simple wave of the hand above the sensor!
Andy says that the robot has a fairly simple mechanical design. The main chasse consists of some simple Plexiglas disks stacked on top of each other with threaded steel rods, nuts and washers. Everything for the mechanical assembly can be purchased at a hardware store.
It seems like BBot already has it all, but Andy has plans to keep adding features to the platform. He would like to add a precision pan/tilt camera system and incorporate a tracking algorithm called TLD so that the robot can follow its user around. He is also contemplating having the main data, video and audio link run through the cell network so he can approach people on the street and offer them a free soda from a friendly and seemingly autonomous robot!
Want your own BBot? (We do too!) Working source code, photos, video and documentation can be found at https://github.com/andygikling/BBot.