Let's Make Robots!

FINISHED: LazyBee Security Bot - Laptop Based solution for Dummies

DutchBot's picture
Inter/Intranet controlled robot able to send video/voice/email and play with my kid from the office
Cost to build: 
$700
Time to build: 
120 hours
Weight: 
3500 grams

Hi all,

 I'm from The Netherlands and have a nice little girl that wants me to build a robot. Well, easier said then done so far. Since I'm an IT consultant I wanted to use a windows based solution to control the bot over the internet. Why? Because windows can do lot's of things that will be pretty hard to programm otherwise. Well for me that is..... With the laptop solution it will be pretty easy to talk, see and even play with my daughter. She will be at home, I will be on my lunchbreak :)

Looked for some advice and some projects that go arround but so far all are pretty complicated and require pretty much skill to realise.

So here's the plan, I will add the progress as I go along.

Build a driving chassis - Done

Set up a laptop that can control servos and dc motors - Done

Set up wireless comms with the home network and the internet - Done

Make the bot accessible by using RDP (I love microsoft) - Done + Teamviewer (free internet tool)

Hooking up all the goodies (like a webcam and so on) - Done, the bot uses Skype amongst others

Dive into sensors and a way to make the bot smart........ Done, got it roaming and smoking

UPDATE, 21th june 2010:

Since I smoked the board with the sensors and basically reached my goal, a roving platform carrying arround a laptop with webcam etc. I'll close this project  for now. I'll get another control board and start up a new project shortly. Well I already started one but didn't get arround the pictures yet. Anyhow, for a first robot this was a good project that gave lots of learning experiences already. Things can only get better now ;) Sorry for making it kind of a mess, all has to do with a lesson I learned long ago when modelling planes and ships, get the equipement first so you know things will fit. Somehow I forgot (so there's lots of different platforms in this post, all just not good enough). The new bot will be smaller, lighter and yes, MEANER. :)

UPDATE, 6th may 2010:

Well, since Madrid was that inspiring, with Frits breaking futuristic cars, Antonios contemplating about his next project, Tinhead raging against his valkyrie and Rik picking barfights I had to come up with something new. Size is were it all starts. Let me elaborate on that; build a robot, post it on the internet and before you know you are stuck somewhere on the globe with a bunch of people that made the same mistake. Some are lucky and some are less fortunate. Lucky the ones that can walk home with a small bot, unlucky the ones that have to travell far with a small bot, really unlucky the ones that have to travell far with a heavy bot. Totally (*&#!*@! the ones that have to travel to Romania with a CNC machine. ;)

So go small.

Since the bot carries the laptop I couldn't go much smaller then the laptop itself. The weels looked too big so I had to replace them (well to be honest I started over the whole thing). I also added 2 extra ping sensors.

It's still under construction....... I have so many wheels at the moment :)

Still need to sand the edges. The upper part is just a try out, that will change a lot as soon as some new parts arrive.

My son loves it, to much. Pretty happy I used1.8cm furniture wood and aloi. It can take a beating. My daughter is still in doubt, a robot or a Hercules action figure?!

And just when things where to good to be true an evil spirit took control of the bot. I was lucky enough to carry arround an empty bottle of red wine so I was just in time to get myself a spirit in a botlle. It's been on the table for the last 30 minutes but I think I will open it. The freaking thing won't shut up! :)))

So remember kids! Robots have souls and are alive!

 

Comment viewing options

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

Since a head needs a neck to turn on I build a simple panning/tilting mechanism which holds the laptop.

Bought a flat bearing since all other "flat turning tables" I came up with just didn't work very smoothly.

Since it holds the laptop I added some springs to lower the load on the servo.

Kids see things differently, to me (and most adults) the laptop will be the head with the 2 switches on the front side being the eyes. Not for my girl, the eyes are the pings and she doesn't know why the black thing is on top of it. So I'm thinking about more distinct facial features. Maybe even some eyebrows etc. to make it show some sort of emotion.

To me it looks like some sesamestreet character. More pimping to come.

Sorry for making this thread such a mess. I guess that's what happens when you don't really know what you are starting :)

Antonb's picture

awesome work there i ought to say :)

elegant lines!

 

DutchBot's picture

I knew the Greeks would fall for the butt :))))

DutchBot's picture

Right, attacked the bot again with the jigsaw. Didn't really loose any weight because 3 servo's went into the middle deck. One of them will be used to rotate the laptop on top. 2 others I don't know yet. Got some aloi tubing to shove over the wooden sticks that hold up the decks.

Since my daughter keeps nagging about a head I'll try to use the laptop for that.

Still a lot to do.....

Enough for today........

amando96's picture

Makes me wanna fix my old laptop and do the same :-P

fritsl's picture

That is one ugly spirit!!

It looks tired as well :P

DutchBot's picture

It must have been dead for a thousand years!

rik's picture

Good thing the kids were in bed!

fritsl's picture

HEY! Crazy Dutch man is back! :D

fritsl's picture

But hey, wait, what is this? New design, what? Mismatch between video and main picture? What?

Scheda's picture

Which HP mini is that? I'm writing this from the 110 :)

DutchBot's picture

Stop writing on it and turn it into a bot ;)

(it's a 110 also) So far it works great, little dissapointed on the powerconsumption when using the webcam. Real amp sucker.

TeleFox's picture

Wow, this is really coming along. The new look is very classy.

djhesit8's picture

fasza kis robot :) nice robot :)

Geir Andersen's picture

I must admit that your skill as a builder amazes me. Your robot looks like it was factory built and designed by the best industrial designers out there.

Great work!!!

DutchBot's picture

Thanks Geir, considering what you have build already I take this as a big compliment :)

DutchBot's picture

I also looked into some tools to control the bot. Ofcourse all need to be free of charge. Few things I found to be very handy;

Teamviewer

http://www.teamviewer.com/nl/index.aspx

Works like RDP but easier, you can connect from any internet connection and it doesn't care about firewalls or whatever. Installed a host (runs as a service) on the 10" laptop and a client on my own laptop. You set up a password and that's it, you can connect to it from anywhere. On the downside, it doesn't resize screen resolution so I just get a 10"display on my normal laptop/desktop. That's a bit small so when I'm at home I just use RDP.

YawCam

http://www.yawcam.com

Free webcam utility, open source and it has motion detection. Whenever something moves in front of the cam it will take a picture and set off any "alert" you like (like sending an email or starting a program).

Skype

http://www.skype.com

Pretty much known arround the world. Nice feature, you can set it to auto answer calls from anyone in the contact list. So no need for someone to be on the robots side to switch things on. Just start a video call et voila, your live, seeing what your robot is seeing and speaking through it. My kids LOVE this feature and even better, when the robot sits in the living room they break less stuff since they are worried I can see them :)))) I looked for ways to incorporate voice into skype so my daughter can call me (eg Daddy!) and skype would set up a call to me automatically. It's there but so far I couldn't find a free version. Bummer, guess that will have to come from a torrent.

DutchBot's picture

Hi guys, after being ill for a while (freaking flue I can't get rid off still) I started building again. Well even if I wouldn't of been ill, I had to wait for my parts to arrive. I guess all know what that's like. One order falls in the mailbox after 3 days and the next makes you wait for 2 weeks just to find out that not all parts have been included and you have to wait for another week.

So far the 10" laptop arrived (thanks boss), the engines from active robots (where I orderd most stuff, quick shipping, great stuff but they don't know how to answer emails, you need to phone them if you have any inquiry).

Another lesson I forgot about, don't start building before you have all the kit complete (well, at least the biggest parts). My robot already had 4 different looks mainly because I started to build just to find out later that things wouldn't fit.

I liked the MDF at first untill I had to paint it. Man, that was dreadfull. It just sucks up anything you put on there so I was forced to use lot's of "plamuur" don't know the English word for that (it's the stuff you fill up gaps with before painting it). And then sanding, lots of sanding just to find out it wasn't enough and to start sanding again. I finally went for the hamerite paint since the glossy black just showed any imperfection. I need some metal workers equipement.

On the top you have the PIR sensor and on the black part there's a little Sony electret microphone. I tried to use the internal one but that's not sensitive enough for proper voice commands. Especially not with my daughters voice, she's a bit to small to speak with the same voice (plenitude/amplitude) all the time so the bot didn't respond very well. The external one improved that a LOT!

The base for the robot arm (still in the workshop being sanded) is a lit of a chrome storage can (used in kitchens). The arm is made out of aloy now (thanks Werner) and mostly done.

So next step is installing the batteries, hooking up the parallax (the digibee+ is already functional, controls all 8 LED's for now) and I guess the hard part, programming the thing to move arround by itself.

MG2R's picture

Hee man,

 

prachtig werk tot nu toe! blij te horen dat er op deze website ook buren zitten :)

Nice robot!

Where did get those wheels?

 Did you also consider Microsoft robotics studio?

DutchBot's picture

Got the wheels of a local hardware store, 4 euros each ;)

My bigmouthing about the cheap servo's is setting me back now. I got them in but they just jitter a lot when I hook them up. Grrr. Another problem was extending the cable from the parallax sensor. Again, doesn't work while others (branded) do work fine. I'm starting to understand the rather steep differences in price.

DSC00704.jpg

I sort of restarted the chassis. "Dad, where is his face and where are his eyes?" So here they are.

DSC00699.jpg

Now please electronics, give me a break :)

DSC00700.jpg

Should be done before 2012 :)

Could you be more specific on the wheels? Waar heb je ze gehaald? Ik woon namelijk ook in Nederland dus ik ben zeer geïntereseerd!
DutchBot's picture

Dat maakt het makkelijker inderdaad ;) Bij de Praxis.

TheGrue's picture

I just used standard DSL cable to make my extension cables.

 And CAT 5 Cable

Just about any cable will do. The fun part was crimping all the ends

Chris the Carpenter's picture

I remembered this which might help a lot...

http://letsmakerobots.com/node/2390

This is a post about a lynx system arm but it has a lot of usable info. There is a list of all the servos used and you can see how they are mounted and arranged. Also, if you scroll down a bit, you will find a link to all the photos of assembly. You can see each part and how they fit together. Should be pretty handy when refining yours.

 

(Wish we would switch to metric)

Chris the Carpenter

Chris the Carpenter's picture

Hey my friend,

I have been keeping an eye on your progress here and well, I don't want to be a downer (and maybe someone has already said something about this) but...

I think your arm might be a bit long. It appears you have cutouts for standard servos there. It also appears that when fully extended, your arm might even be 1/2 meter long. Just as a friendly suggestion, and understand I have made this mistake, I would do some math on the strength of your servos. 

I.e. A "standard" servo is rated at 3.2Kg/cm (you are a metric guy, right?) So at 1/2 meter, with the arm fully extended, the total weight at the tip cannot exceed .064Kg --I think this is 6 grams. Not to mention, you have to figure in the total weight of the arm itself plus the weight of the other servos at each joint. Again, each "standard" servo weighing in at around 40 grams. 

You are probably going to need to look for some heavy duty guys, or 1/4 scale servos or possibly doubling them up.

Good luck, my friend.

DutchBot's picture

Hi Chris,

 you are spot on. I managed to get the standard ones (which are in there now) to work using some rubberbands on the corners of each joint. It's on the edge but that will soon be better when the new ones arrive (6 high torque/low profile ones). I ordered 6 just in case I do need to double them up. The arm on there now is just a little try and eventually will be made out of alloy or carbonfibre.

Regards,

Louis (metric indeed) ;)

DutchBot's picture

I got a set of little electronic thingies such as a couple of resistors etc. Tried a little circuit from the PE kit doc's but ofcourse out of all the 200 parts I bought I missed 1. Better was the delivery from active robots! I got the parallax robot control board and started playing arround with it. At first it gave me headaches as I couldn't get crap to work.

DSC00667.jpg

Then I just started building it into the bot, hooked up some things that couldn't go wrong and started looking for some more sample code. I sometimes need a little break to see the light. And now I've seen a bit, I love it.

DSC00671.jpg

I first tried to make 1 servo move. A breeze. All others servo's is just changing the numbers of the ports to which the servo's are attached. You can also set a 5v output on any of the ports so I hooked up 2 to the input channels of the digibee and the motorbee. Don't know yet for what I will use that. So far so good, the laptop will go in there eventually and add some windows standard functionality to the bot. I'm back on track ;) Added a little video of 3 servo control and some lights.

TheGrue's picture

If that board was out a year ago, I would have TOBI done by now. I am on the last chaper of the PE Kit book and it talks about the counters that are built into each cog. It has a section about controlling servos using the counters. This frees up the cog to do other things while the counters send servo pulses.

I love how you can also pulse several pins at the same time e.g.

outa[0..6]~~

DutchBot's picture

Lazy Does It ;)

Then again, I don't want to cheer to quickly. As soon as I get the sensors to do what I want I'll dive into the multitasking part. So please Grue, keep reading that last chapter :))

The sensor part is some different game all together. Whilst servo movemend is really easy I'm still holding my breath over the ping and pir at the moment. (As I don't fully understand the code yet, well I think I do but the one provided is either rather silly or it doesn't seem to trigger anything). I'll hook it up to the digibee tommorow to see if it still sets a high when activated.

TheGrue's picture

Remember to set the direction of the pin to input or output first like:

dira[pin_number]~~

then set it to a high like:

outa[pin_number]~~

You can also do it in just one line of code like:

outa[pin] := dira[pin] := 1

As for the PING))) sensor, that should be simple using the object from the OBEX. Download the object called "PING)) Demo" and extract it from zip file to where you are working on your other objects. All you have to do is declare it in your program and then call it to your variable like this:

OBJ

  pg : "ping"                                                                        'Declare the PING object with the Alias of "pg"

CON

  pin  = 0                                                                           'Set my pin for the Ping

VAR

  long   useconds, inches, centimeters, millimeters                ' Setup variables that store the results

PUB GetDistance

  useconds := pg.Ticks(pin)                                                ' Get ms reading and assign that to the VARiable "useconds"

  waitcnt(cklfreq + cnt)                                                      ' wait one second just (because I want to)

  inches := pg.Inches(pin)                                                  ' get distance in inches and assign that to the VAR of "inches"

  waitcnt(cklfreq + cnt)                                                      ' wait one second just (because I want to)

  centimeters := pg.Centimeters(pin)                                  ' The VAR "centimeters" now holds the distance in centimeters

  waitcnt(cklfreq + cnt)                                                      ' wait one second just (because I want to)

  millimeters := pg.millimeters(pin)                                    ' same as above the "millimeters" VAR holds the distance in mm

 

The coding is fairly strait forward by looking at the PING.spin object. Remeber that you do not have to look at all the lines of code in an object's PUB routine to use it. For example:

PUB Millimeters(Pin) : Distance

The name after the PUB statement is what you call from your own object with the options in parenthesis (pin).

 

DutchBot's picture

Nooooooooooooo!!!!!!!!!! All my dreams just shattered. I played arround with the DigiBee+, got the PIR sensor to work and react by putting a led on. But somehow I wasn't able to drive a servo (for the arm on the bot) with the few available examples. So i contacted pccontrol (amazing, they even answer your mail on sundays). And this is what he told me;

Hi Louis,
    Unfortunately a servo does not simply require a digital output to control it.   The signal supplied by the motorbee to the servo consists of a set of pulses 20ms apart. When the pulse width is 1ms the servo is at one limit of travel and when it is 2ms it is at the other limit. The position between these limits varies in direct proportion to the width of the timing pulse(eg 1.5ms positions the servo halfway)
    If you need to use more than one "bee" board on the same pc at the same time then you need to use the "BeeHive" software and associated DLL. This is available for free download from our website. More info at the following link...
    I'm sorry but I'm not familiar with your "parallax/ping" device but there is no way to change outputs to inputs or vice versa on the "bee" boards.
best regards
Archie
So grrrrrrrrrr, I'm stuck with a pretty much useless control board. Guess it's nice to set the lights on a modeltrain track or something but it won't control servo's. Neither is any of the in/out channels invertable so getting the ping to work will be a pain.
I hate robots. ;)
I'll probably go and order the parallax robot control board. Then again I love the really short code that the PicAxe uses. On the other hand, parallax gives full code examples with all their stuff when ordered so it's more a question of intergration then reinventing the wheel.
At least my servo's have been shipped today.
TheGrue's picture

Have you looked at Phigets to interface your motors and sensors to your Laptop?

Are you abandoning the idea of a Laptop controlled Robot? There are many ready made Objects for the Propeller in the OBEX that make code writing short and simple plus you have four languages to choose from and can control the Propeller with the Laptop. If you order the Propeller powered robot control board, you should also buy the book called "Programming & Customizing the Multicore Propeller Microcontroller: Official Guide" for help and examples on video, sensors and general robots. It has lots of code examples and real-world robot projects listed in it.

DutchBot's picture

I'm not sure how to go ahead now. I mean the MotorBee works, so I can basically drive it arround, set some lights on and control 1 servo (all with the laptop). It's just the digibee that doesn't want to do what I want (control servo's). I already looked at the parallax servo control board but I guess I will run into some dificulties making it drive arround whilst just using sensoric input. At start this wasn't the intention anyway but I'm having to much fun.

I already ordered the robot controll board from a shop in the uk (incl shipping it was cheaper then the 1 shop in the Netherlands selling them). I see little use in keeping the motorbee in my bot since the parallax board can do the same and more/better.

TheGrue's picture

The Propeller has a lot to offer. I recomend that you get that book and/or go through the programming tutorials of the PE Kit to learn. The PE Kit documantation is free and you can download the example code for it here. I am working through this right now to better learn SPIN to program my robot. The PE Kit Forum on the Parallax site is also a great source for SPIN examples and help.

For the fun of it you might try the visual language of 12blocks to program your robot or have your child program it (depending on your child's age)

chench's picture
Looking pretty cool. I like the carbon-fibre effect!
DutchBot's picture

Got the ping))) attached and drilled a hole for the PIR sensor. I also added the little wheels to the base of the gripper platform. This helps quite a bit but I guess I have to get me one of these servo slowing down thinggies. The speed of the servo in combination with the weight of the gripper just gives to much momentum to keep things in one part.

andere_kant.jpg

Well it's just a first little experiment. I might re-do the chassis entirely when things work but with a little more accuracy and sensibility to get a real tight fit on all parts. To be honest I'm already starting to get low on space and I still need to install the computer.

zijkant_0.jpg

I don't really like the swivel wheel neither. Might get 2 other full sized wheels. Just for looks.

DSC00663.jpg

Order is still pending in hong kong (hobbycity.com) due to chinese new year. Damn. If you go and buy something there make sure to create an account b the way, prices when logged in are MUCH cheaper.

TeleFox's picture
A very clean looking robot so far, I like where you're going with it.
Oh, and don't forget that the PIR sensor won't be of any use while the bot is moving, since stationary objects will appear (to the bot) to be moving instead =)
DutchBot's picture

Haha, yeah I figured that. What I will try to do is make it run a program as soons as it detects movement. This will run for a period and will then stop the bot again (and activate the sensors after it stopped).

DutchBot's picture

To fix the wiggly base I got a couple of little rollers, exactly 18mm as I needed (luck was on my side this time). Some hinges for the top-plate and some screws. It's the little stuff that will add to the cost most I guess. More pic's tonight.

Still wondering how to make a hole in the plexiglass dome (for the PIR sensor). Don't really want to use some wooddrilling equipement on it because I'm affraid it will break the dome entirely.

DutchBot's picture

For now I got 2 sensors to play with (starting with the movement detector, just a switch that should turn things on its on the plastic dome)

DSC00633.jpg

And the well known PING)))) Now please servo's, arrive quickly.

DutchBot's picture

Base is a bit wiggly so i have to fix that. The arm has yellow bee paint striping now and some more plastic foil. Weight of the MDF is dissapointing to even with the holes out.

DSC00615.jpg

Well its looking like a bot already.....

DSC00611.jpg

DutchBot's picture

Reduced the weight of the arm a little and cut out the servo holes

DSC00590.jpg

Once I got this sorted right a friend of mine (he's a metal worker) is going to rebuild it out of aluminium. If anyone is interested I might get him to make a couple of them for probably a very reasonable price (normally thats just the price of the metal being used). It's my first arm (well it's my first everything here) so I am just going for logic. If I'm screwing up or not making sense somewhere please tell me :)

DSC00591.jpg

And here it is, fully erected (I know it sounds terrible)

DSC00594.jpg

Well, as you can see this thing is taking me by the hand. Not anything close to what I had in mind when I started. But it's just to much fun! My daughter already danced with the thing :) The bot flashing its lights and my daughter just bouncing arround it.

DutchBot's picture

I uploaded a little video where it runs a small program to blink the leds. Also got the first parts of the arm together.

met_arm.jpg

Looks a bit solid but i will cut out some bits and pieces when the servo's arrive. I got some 6kg ones on the way but have no clue yet on what the lifting capacaty will be. Hoping on 500 grams to a kilo.

met_arm_2.jpg

The ping sensor with brackets will go between the front lights. Now hurry up mailman :)

Nice design dude. I like this robot.
DutchBot's picture
Nagyon köszönöm ;)
Magyarok mindenhol ott vannak! :) Grat a robothoz.
DutchBot's picture

Finshed playing arround with the motorbee, hooked up all outputs and just have to wait for the motors to arrive. Got 2 new wheels and some lights etc (spent about 60$).

wired.jpg

Got some plastic covering and some ventilation plates from a hardware store to make it look a little better and to keep it cool

zijkant_lampjes.jpg

The LED's are hooked up to the motorbee and can be switched on or off (or play a sequence). Since it can only control 2 motors (forward reverse) or 4 motors just forward I went for the 2 wheel and a swivel-wheel like many bots have. Few euro's each.

zijkant.jpg

The turret was a bot to heavy for the servo so I have to think about that a little more.... Might end up looking something like this;

met_cam.jpg

So far I fixed the driving part and the lights. A breeze with he supplied software. Now lets order some sensors and work on the turret! Getting my mobile webcam to function over the web is pretty close allready.

DutchBot's picture

Okay, I'm surprised by the ease so far, hooked up the engine plugged in the usb cable and started up the engine.

DSC00448.jpg

Alright, I can drive my bot arround in theory, just have to order 2 proper engines. The little black box attached to the Lipo is a whatsup. Costs few $ and gives you the voltage/watts and amps drawn realtime and memorises the peak value's. A real hardware saver!

DSC00449.jpg

Guess I have to use real slow motors as you need to mouse control 2 levers in the software (left and right engine) for now. I have to look into an interface that will make that a little more convenient. Later.....

DutchBot's picture

The boards arrived so I installed the turret servo, this one will connect to the motorbee.

DSC00444.jpg

There's the motorbee and the digibee installed on the lit, the little motor just sits there for testing

DSC00445.jpg

Used some old PC and RC parts the lazybee will be painted at a later stage

DSC00447.jpg

Still not sure about the motor, regular or sensor one or maybe even a big rotating servo?