Let's Make Robots!

Serv-O:Home Robot

Navigates via ultrasound/bumper switches, locates (hopefully human) motion via PIR Sensors, navigates to that motion and offers the source a drink
AttachmentSize
ServoFlowChart.pdf41.56 KB
I_am_ServO.mp329.07 KB

Sorry about the bump-all I've done is move him out of WIP status in accordance with FritsL's new rule ;-) He's getting a serious upgrade in functionality and a sensor package that will let him detect humans while on the move (while removing the PIR array.) He ain't gonna look much different though. Maybe a little.

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.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

WOW nice job Max.  This is one of the biggest robots on the website and looks very cool.  The voice is pure Cylon and the glowing blue eyes thing... heading that way.

I bet the dog does not approve at ALL...lol.

Thanks for sure with us, love the video.

 

 

Hot or Not? Max - what a question. This robot is hot.

Now add some smoothening on the acceleration to get rid of the jolt so that the Cuba-Libres and Caipirinhas are transported save through the cocktail party to the boys and girls. Shure we LMR are all invited. Party on!

I need a video to prove it can find people and not just "...not hit the plants..."

You know that if I could I'd bring him to Campus Party.

Wouldn't that be perfect?

I'd wait until a glass of red vine is served for shure.

We saw at the beginning the Roomba for sweeping/cleaning and this one will serve drinks. When this robot is complete it will be popular in the home (or at least corporate meetings!). Good job!

This is the beginning of personal service robots! We wanted them for a long time and they are finally here!

The robot doesn't look at all meanicing and should be very popular.

I would call this a "real robot" as the simple box floor rovers are neat, this robot has a real job to do!

More, More!!!

I have used PIR detectors to good effect , however on motion robots it becomes a tad more difficult to make sense of the data, almost impossible.

Most have a delay switch or timer to prolong the detection trip - this can easily be bypassed so you can get better detect (mine had a 20 second trip alarm which was soon deactivated with a swift solder blob)

What they like is movement - the further away the "hot spot" is the more it has to move for detect. Movement is the Key aspect.

Big plus point is the range that they have.

You can use a distance sensor mounted on a servo to detect people around of your robot.

I think an ultrasound sensor is the best for this purpose:

http://luckylarry.co.uk/arduino-projects/arduino-processing-make-a-radar-screen-to-visualise-sensor-data-from-srf-05-part-1-setting-up-the-circuit-and-outputting-values/

http://luckylarry.co.uk/arduino-projects/arduino-processing-make-a-radar-screen-to-visualise-sensor-data-from-srf-05-part-2-visualising-the-data/

Or you can use a Sharp GP2Y0A02YK0F IR rangfinder (range: 20-150cm).

http://luckylarry.co.uk/arduino-projects/arduino-processing-make-a-radar-screen-part-3-visualising-the-data-from-sharp-infrared-range-finder/

I have used an 10-80cm Sharp IR rangefinder to map the area in front or one of my robots: 

http://www.hobbielektronika.hu/kapcsolasok/files/554/szenzor.avi

You can speed up the maping process, if you use multiple sensors, and one sensor only scan a given sector for objects.

I chose PIR sensors so that the bot could sense motion, which humans tend to be in even when they don't think they are. Distance sensors can't differentiate between a person and a pillar for example with the limitations of the 328's processing power. Again, this isn't a perfect approach. Servo did offer a drink to a fan set to the oscillate mode. He does incorporate ultrasonic distance sensing into his obstacle avoidance and approach routines though.

Not sure what all you have planned but was wondering how you will determine if tray is empty. I was thinking putting rings on the tray to set glasses in with pressure transducers under each to determine full and empty glasses. The rings, or cup holders, would help stabilize the glasses too. Since people will be exchanging empties for full you'll need to know when all are empty.

I didn't watch the whole video but I had trouble with my IR motion sensor so that's in the expiramental stage and not attached to test platform yet. Are yours working out ok?

I'll also be watching for your homing solution. :-)

Based on what the machine was serving, I think. A set of 3 FSRs might be most useful though. It could let him Detect "popularity" so to speak, so that if two items were out but no one was taking the third, he could return to base with the stuff no one wanted and you could fill him up there with the goodies. Also, since all he has left open for I/O are the analog ins, some sort of resistance sensor makes "sense."(sorry). The other option I played with is a light/Ir interrupt like on checkout counter belt drive stops but in reverse. This would be more for e tradeshow environment where he was giving out brochures or other collateral.