Shantibot! The sordid tale of a web controlled party robot.

by Andrew

2005-12-01 10:58:41

[Edit, 27 April 2010] The Shantibot project is sadly no more and I really wish I had documented it better. So this page is more for my own memory than anything else.

A quick History

The Shantibot is a cheaply constructed (several parts literally came out of a dumpster) web-controlled robot. If you have the right permissions you can move around my house guided by a live web feed and talk from anywhere in the world with a web connection and a web browser. Or at least that's the goal, your milage may vary.

This page contains information about building the robot, the actual interface is on another page, and if you don't know where it is you probably don't have permission to use it anyway. Latest updates are at the bottom of the page.

10/23/2004 (the saga begins) This was the night of the big (and I do mean big) going away party for my good friend Shanti. We called it Shantipalooza and it was big, loud, illegal(don't ask), and very drunken. He was going to be away for two years first to New Zealand then all over asia and Europa. At some point durring the night I drunkenly promissed Shanti I'd make him a robot so he could telecommute to our New Years party. I then drank a bunch of absinthe and promptly forgot about it. Drunken Andrew says a lot of things.

10/12/2005 (bring on the pain) Appearently at some point durring the last year I'd promised Shanti I'd have the robot working in time for Shantipalooza II (the quickening). So on Wednesday he calls up and I hear "So how far along is the robot, because we should probably test it before the party."
Fuck
So I calmly tried to give him the general impression we were still beta testing and tried to figure out how I was going to possibly build this thing in a week with litte or no money.

10/13/2005 (But it's so easy?) I had a strategy, I needed a webcam, a chasis, a power train, controllers, a computer, an interface that can be accessed by any simple webbrowser and a bunch of software to tie the whole thing together. I had a attic full of crap and a budget of $0.00 (note to self: give all future totals in lira, it looks more impressive.). First things first, I had an old webcam and since I had no experience with them I thought I should start there. Webcams are everywhere, this should be easy right?

After a solid day with the bastard camera I manage to coax an image out of it, I just still hadn't figured out how to put it on a page. After wasting many hours on-line I finally found my answer. You have a program that takes the image, sends it to a server and then on the client side a simple javascript function that updates the image click here to see the minimal source

I'd also scrounged a computer in my attic to act as the brains of the whole opperation. As an added bonus the computer was saved from a dumpster, so that this really was a zero cost project. I decided to use Yoper Linux to run the whole thing because I'm familiar with it. Linux is a wonderful tool because you can make it do so many things, just none of them are easy.

10/15-17/2005 (And a lot of sleepless nights) After a lot of research I decided to use streamer, which is part of the Xawtv package to capture images and Kermit to ftp the images to my site. If you've never used it, Kermit is a wonderful program with a massive scripting language all it's own that predates God. I did some perl magic and threw together a browser based chatting interface. So Shanti could see us, and chat with us, he just couldn't move. So I'd succeded in transporting Shanti several thousant miles, I'd just made him a quadropalegic in the process. Life is full of little trade offs. Shanti managed to log on a few times to check out the new system and it seemed to sort of work.

To give Shanti a voice again I installed a wonderful program named Festival that does text to speech. It's actually quite easy to install and use, it's just hard to figure out how ( for a quick guide click here ). So now Shanti had eyes and a voice, but no legs.

10/18/2005 (It lives,... in theory) Now I just had to get the stuppid thing moving. I'd controlled projects with the parallel port before so that seemed like the logical thing to do. I tried to recycle some of my old code, but none of it worked. Finally I tracked down the Parapin library which takes most of the pain out of parallel port access. SO for those keeping tally, in the space of about a week Andrew has cobbled together 5 programs and learned 3 programming languages for this bloody robot, and it still can't move. Enter Ed.

10/20/2005 (Send in the Marines!) Ed's a former US Marine, he has some electrical experience, some build experience, but mostly he has a great set of power tools. As a side note he bought his tool set for another of my projects and I think they've spent more time in my house than his. I had some motors, some wheels (more dumpster diving), a bunch of random parts, 2 days and no money. Ed came by Thursday night and we tried to figure out how to make it work.

The plan simply put was to use the computer case as a chasis, screw the power train to one end of the case, a swivel wheel to the other (pirated from a previous job) and put the webcam up on a pedistal. The thing would have to be tethered, but for no money you take what you can get. The main problem was figuring out how to get power from the awkward motor housing to the wheels, especially since we were having trouble finding something to use as an axel. Ed has always had trouble understanding my love of salvaged parts and scrounging which led to by my favorite part of the evening:
Ed(looking at the motor housing)> "What did you pull this from anyway?"
Me(matter of factly)>"A dumpster."
Ed(pained look)>
Finally we had a plan, but it meant making the ultimate sacrifice...

10/21/2005 (the sad eventuality...) Friday morning the inevitable happened, with no axel to be found in my attic and no pully wheel to transfer power I finally had to spend some money. After a quick stop to the hardware store for some allthred, washers and nuts and sacrificing my scateboard for bearings, I was $3.84 poorer but we had a power train. Well sort of.

I decided to power the whole thing off of the Computer's power supply. Fortunately I had some relay boards lying around and so I started sodering. I hate sodering. I sodered, I tested, I sodered and I tested some more and then I ran into trouble. I finally tested the power train and found that it was sucking down an enormous amount of current, more than I could supply or swich. On to plan "B". It finally occured ot me that instead of moving the whole computer I could just move the webcam. I swiched to a remote controled car frame, found an extension for the usb cable and sodered a 15' cable on to my control circuitry. I then remembered some of the best advice I ever heard "don't fuck with it while the power's on." I was having some trouble with my control circuitry, shorted the 5 and 12 volt rails and killed the computer.

10/22/2005 (Day of the party...) In the morning I was able to plunk the harddrive into a new computer (Yay Linux!) and get everything running pretty quickly... but time was running out. It quickly became clear I was not going to get the robot moving in time for the party. So we cut our losses and worried about setting up the livingroom so that people could chat with Shanti as normally as possible. We had to move in extra lights because of my crappy webcam. We wired the soundcard through a mixer into the amp so you could hear his voice and the music.

He logged in, we chatted, people arrived we laughed, he had us mix him a drink... and then the bastard showed up. He'd flown in a few days before and hadn't told anyone.

10/23/2005 (the grass grows loudly) Ring ring ring banannaphone? (you had to be there). And so the project lost impetus until, as chance would have it, our flatmate Owen is out of the country till January and a home sick Owen started loggin in, a lot.

11/03/2005 (I've got not string to hold me down) And I finally broke down and bought parts. Ed had suggested using a wireless web cam and remote controlled car to give the bot some freedom. After some research I found out that wireless webcams aren't worth the powder to blow them to hell, but surveillance cameras are cheep and pretty good quality. After some more research I got obsessed and impatient and finally just ordered the bloody parts. I now have a wireless camera, 12 channel remote that can switch 15 amps and 24 AA rechargables.

11/26/2005 (Buzz word mania) Ajax stands for fun! The old interface on the Shantibot was cobbled together to work with a ton of cludges(programmers ducktape). So I redid the whole interface in Ajax. For the uninitiated Ajax is a new, buzz word aproved, internet technology that allows you to update part of a page without refreshing the whole thing. It looks cool and allowes me to cut down on my bandwidth, which are both important considerations. However:

11/28/2005 (Don't blame me) It turns out Ajax is a fickle bitch godess. When I was at work I realized (thanks to much bitching by my friends who are now using the interface frequently) that Ajax is a hard beast to tame. I also hadn't written any error checking into server side code and my server started acting up so that every once in a while, just for fun the whole conversation will dissapear.

12/01/2005 (So last second) I started this page and there by put off fixing my code for one more night!



Leave a comment

Your message has been sent successfully and will be published shortly.
E-mail must be valid and message must be longer than 1 character.
Send result message will display here.