My talented friend Barton Gilley asked me to take his R2D2 to the next level. He had improvised rudimentary electronics to produce random lights, sounds, and head movements and, more importantly, equipment to automatically serve beer from a keg hidden inside R2's conveniently-shaped body. My task was to give life to the two foot motors Barton had installed, and give the driver control over the swiveling head and sound system.
We made a list of desired features in order of increasing cost/difficulty, stepping up R2's performance incrementally in our free time. First, I brought order to the electronic rat's nest and bought components to control motors (two in the feet, one to rotate the head), sounds, and beer tap via a single Arduino. In order to make the remote controller as small and inconspicuous as possible, I devised a smooth, intuitive single-joystick driving algorithm (as opposed to the "tank tread" method). A second joystick controls the head rotation, and additional buttons give the driver access to sounds on command, with of course one button dedicated to everyone's favorite Yell. Control of sounds and head position allows the driver to direct R2's attention toward individuals, thereby heightening the robot's emotional connection to its fans.
After testing the driving experience on a typical, bulky RC controller, I created a miniature single-handed controller, hollowing out a Wii Nunchuk with just enough room for an Xbee, two joysticks, five buttons, and a battery tested to last up to twelve hours on a single charge.
Finally, I designed a 3D-printed mount for the beer tap auto-pour sensor, directing its detection path for optimal actuation timing (opening the tap too early or closing it too late results in spilled liquid).
The next challenge will be to automatically extend and retract the beer tap arm. I have already designed a servo-driven door to hide the stored arm. I plan to create a high-torque lifter for the arm itself whenever I am next able to visit my friend and his R2D2.