I've been working on Serv-O since I put ArDui5X here on the site. The objectives for Serv-O are to create a Large, Arduino-based robot capable of finding humans in a home or party setting, approaching them and offering them a drink/snack/pamphlet, then moving on to another guest or to going back to base when the batteries or drink tray get low. (Alternatively to act as a security unit.) For this reason it had to be tall enough that it doesn't require guests to bend over very far to get the drink (or that it would be more menacing than a Roomba if someone broke in.)
This is achieved (imperfectly as of yet) by using a set of 3 PIR sensors mounted in and at 45° to the right and left of the direction of travel. The robot stops (else the PIRs would be useless,) polls the sensors and when it gets a high reading on the front sensor it moves forward. If it gets a low reading on the front sensor, it checks the left and right sensors and turns towards whichever it gets a high reading off of first, then moves towards the "target" until it gets to 30cm from the target, and uses an audio cue to offer the drink up. This is the flow-chart for the program:
Here's a look inside his access panel:
The ISD 1740 is the audio chip and offers plenty of volume without an off-board amp. (Thanks to Fizikus and Gabriel for helping me get this figured out.) Audio cues are my voice using a vocorder. (I've attached an mp3 of the line audio.). Ackjay helped me pick out the voice modulation.
The main brain is an Arduino Uno R3 with an R3 Motor shield (L298 to handle the big amps that these motors pull.)
Sensor and body setup:
The tray is large enough to hold a 12pack of 12 oz drinks. The head moves up and down to allow for wine glasses, etc.
...and one more view:
The "top-brain" as I have been thinking of it is an AT Tiny 45 that "breathes" the eyes. It stalls them when the audio is playing (see the video) and in theory is capable of acting as a kind of VU meter to the audio cues, but I don't know if that's necessary.
Here's a headshot:
I love that face. It was made from a children's "night vision" binocular set from a big box store. I cut it up, painted it and put a pair of sliced-up ping pong balls in the front element slots with two high brightness blue LEDs on the AT Tiny breather circuit mentioned above. This let me have the cool eye effects without tying up any Arduino pins or run time. It also makes it just a little bit like a brontosaurus, if you think about it-two brains, kind of...
The next step is to perfect the programming. Hardware is complete for all intents and purposes, all sensors register on a serial check (of course, the bumper is on the TX pin so it stalls the Serial line but works for the run-time sensing.)
So what do you think LMR? Hot or not? ;-)
Update-yes, its name is "Serv-O" but can you guess what common part is completely absent from this build? I left the option to put the head on a servo open but I don't know how much I like that idea. In any case, the name refers to function, not part usage.
INDEPENDENCE DAY UPDATE
(No offense to my British friends.). JAX, a viewing of the movie and several oz. of liqueur just now made me realize how much of a Tribute to Wall-E that Serv-O is. Not just because of the face and blue eyes, but they're both just babbling trash cans on tracks. Okay, more booze now...
Less of a technical update than a Cautionary Tale...
I looked over at him the other day and discovered that Serv-O had a new purpose:
That's right-dog toy caddy. Notice the streak of blood on his chest. That's from Clara Belle, whose tail gets so happy that she sometimes hits walls and flings blood. (A little disturbing, but we love her none the less.)
In any case, I guess this is one of the problems with building medium- to large-scale robots: space. I have plenty of room for the desktop models, but Serv-O sits next to the bookshelf and takes up space, aRDui and Yubin Kun sit next to the workbench in various states of packing. K-9 is (As I blogged recently) sitting on the bench upside down. I should probably learn to make the robots I have better, but I think making them is what I like most. Refining them isn't as much fun for me.