Beer Me, Robot
Around 5 PM on Fridays, many of us here at Willow Garage start thinking that a cold one would taste pretty good. However, we often have a few loose ends to tie up before the weekend begins in earnest. In this situation we've often thought about how perfect it would be to have the robot autonomously deliver beer. The goal of Willow Garage's third summer hackathon was to make this dream a reality. The idea of the hackathon is to start hacking Monday morning and demo on Friday afternoon, using all of the existing ROS tools and packages. Sleep is highly optional.
For this hackathon, our goal was to make beer fetching as robust and user-friendly as possible. We also wanted the robot to safely transport the beer to any office, which requires navigation with the arms tucked. For safe beer transport we designed a bar-keeper add-on to the PR2 base -- a four-holed foam block placed behind the robot's base navigation laser. Three round holes are for stowing beers during navigation, with the fourth hole storing a convenient beer opener that the robot can pick up. Equipping our standard fridge with a tilted self-stocking rack meant that the robot could service many user requests without human intervention.
The user experience begins with the Beer Me web application. In this web app, the user is presented with a menu of ice cold beers and ciders, and a pull-down menu specifying the office for delivery. Once the user hits the enticing Beer Me button, it's the robot's job to make the magic happen. The robot navigates to the fridge, identifies the door, and performs a handle detection to determine a precise grasping location to use for opening. The robot then grasps and pulls open the handle, and positions itself between the door and the fridge to make sure the door doesn't close.
The robot uses object recognition to determine which beers are in the rack, and will report back to the app if the user's selection is not available. Otherwise, it stocks the ordered beers into the foam holder, closes the door, and navigates to the indicated office. The final piece of the puzzle is the handoff. We wanted to make very sure the robot didn't commit a party foul and drop beers on the floor, so we added face detection to the handoff behavior. The robot offers a beer and waits until it detects a face in near proximity. It then looks at the closest person and will release the gripper when the beer is tugged. The robot will also offer the bottle opener and wait for it to be returned. We even got the robot to open beers itself using a standard bottle opener.
Roboticists get used to hearing: "That's pretty cool, but can it bring me a beer?". Well now the PR2 can, and it may even open the bottle for you.