||[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."
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
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
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."
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!