Wednesday, February 9, 2011

Low-Cost Video Chat Robot

Since I relocated down to Mountain View, I wanted a good way to keep in touch with my fiance who is still back in Seattle. So, I decided to mount an old netbook I had on top of an iRobot Create to create a video chat robot that I could use to drive around the house remotely. Since it was a good procrastineering project, I decided to document it here.

There are two major components to the project: the iRobot Create which costs around $250 (incl. battery, charger, and USB serial cable) and the netbook which I got for around $250 as well. At $500, this is a pretty good deal considering many commerical ones go for several thousand dollars. The software was written in C# with Visual Studio Express 2010 and only tested on Windows 7 with the "Works on my machine" certifcation. =o) I'm sure there are TONs of problems with it, but the source is provided. So, feel free to try to improve it.

     Download Software:
     VideoChatRobot v0.1 (posted 2/9/2011)
     VideoChatRobot v0.2 (posted 2/11/2011)

Included are the executable, C# source, and two PDFs: one describing installation and usage of the control software, the other more information about modifying the charging station.

The software does a few nice things like try to setup UPnP router port forwarding automatically, queries the external IP needed to make a connection over the open internet, maintains a network heartbeat which stops the robot if the connection is lost, a control password, auto-connect on launch options, and even mediates the maximum acceleration/deceleration of the motors so it doesn't jerk so much or fall over.

The UPnP port forwarding is far from perfect is not well tested at all. If it works for you, consider yourself lucky. Otherwise, ask a friend how to set up port forwarding to enable remote control over the internet.

Once you have all the parts: the netbook, the robot, the serial cable, the software. You can probably be up an running within 5 minutes. Assembly is merely plugging cables together.  Mounting the netbook can be done with velcro or tape.  Building the rise stand is more challenging, but entirely optional.  I happen to have access to a laser cutter to make my clear plastic stand, but you can probably make something adequate out of wood.

Optional: Modifying the Charging Station
Probably one of the more interesting parts of this project from a procrastineering standpoint is the modifcation to the docking station so that it would charge something else in addition to the robot base.

What I did is admittedly pretty crude and arguably rather unsafe. So, this is HIGHLY NOT RECOMMENDED unless you are very comfortable working with high voltage electricity and accept all the personal risks of doing so and potential risks to others. This is provided for informational purposes only and I am not responsible for any damages or harm resulting from the use of this material. Working with household power lines can be very dangerous posing both potential electrocution and fire risk. This is also unquestionably a warranty voiding activity. DO NOT ATTEMPT THIS without appropriate supervision or expertise.

Now that I've hopefully scared you away from doing this... what exactly did I do? A high level picture is shown here:

The PDF document in the download describes changes in more detail. But, I had a lot of trouble trying to tap the existing iRobot Create charging voltage to charge something else. Primarily, because the charging voltage dips down to 0V periodically and holds for several milliseconds. That would require making some kind of DC uninterruptable power supply and made the project much more complex. The easiest way to support a wide range of devices that could ride on the robot was to somehow get 120V AC to the cargo bay... for those of you with some familiarity with electronics, you probably can see the variety of safety hazards this poses. So, again this is HIGHLY NOT RECOMMENDED and is meant to just be a reference for trying to come up with something better.

I actually do wish iRobot would modify the charging station for the Create to officially provide a similar type of charging capability. It is such a nice robot base and it is an obvious desire to have other devices piggy back on the robot that might not be able to run off the Create's battery supply. I personally believe it would make it a dramatically more useful and appealing robot platform.

Usage Notes
At the time of this post, I've been using it remotely for about a month on a regular basis between Mountain View and Seattle.  My nephews in Washington DC were also able to use it chase my cat around my house in Seattle quite effectively.  Thus far, it has worked without any real major problems. The only real interventions on the remote side have been when I ran it too long (>4 hours) and the netbook battery dies or having the optional 4th wheel on the iRobot Create pop-off which can be solved with some super glue.  Otherwise, the control software and the charging station have been surprisingly reliable. Using remote desktop software like TeamViewer, I can push software changes to the netbook remotely, restart the computer, put Skype into full screen (which it frustratingly doesn't have as a default option for auto-answered video calls), and otherwise check in on the heath of the netbook.


Aaron said...

This is great!
I wonder if, to save power, you could use a jailbroken iPad (or perhaps an iPad running a Netbook OS, there are a few hacks out there) with a camera kit webcam?

Thanks for the great post.
~ Aaron

TotoSuperstar said...

I'm amazed how much fantasy you have!
I'll keep following your works.
What about a recognition software so the robot can follow the subjet around the house?
Looking forward your next idea!!!

Unknown said...

Awesome project. I like how you changed the charging dock. I'd love to see the photos of the modifications. Your project is a great inspiration. Thanks for sharing.

Unknown said...

nice project dude,.. very indpiering,.. i might build something like this one day,.. (c: Perhaps using bluetooth,..

Anonymous said...

Are you going to keep updating the code or this is it?

Jef said...

Hey Johnny,
You always give me great inspiration to try these projects. Keep them coming!

betterman said...

I wonder if a good alternative wouldn't be to rig some sort of induction charger?

Unknown said...

Instead of a notebook , what about an android phone? It has everything needed: cameras(new phones have front and back,so you could even see from both sides), gps (could make an out doors unit!). Would be more lighter , flexible and easier to charge.

Antonio Rentero said...

Amazing, man!!!

It could be a great idea using a Galaxy Tab (or similar) better than tne notebook: smaller, less battery drainer and videoconference cam attached from factory, plus integrated 3G module.

Although the first thing I´ve think off whaun watching the video was "how about mounting this inside a R2-D2 real size replica?".


Best of all, the integration with iRiver, movement and intelligent recharging.

As always, very good job.

Unknown said...

Another great Blog entry and something to take up for inspiration and take it to the next level.

Thanks Johnny

Unknown said...

For the charging base, how about replacing the original AC/DC adapter with one that supplies much more current, then tapping into the DC side on the Create, and use a DC-DC converter (like PicoPSU) to get the proper voltages needed for the various charging inputs?

This will be MUCH safer than having AC voltage sitting around on potentially exposed contacts. If liquid is spilled on that base, it could become deadly easily.

Unknown said...

Awesome stuff dude ! You rock !!

UV411 said...

Would be awesome if you could make this for iPod Touch!

heroineworshipper said...

1 word: beamed power

So what was the point of the UPnP port forwarding that doesn't work? Honestly never heard of UPnP actually working, except for being included in products that need to pass some Cablelabs certification. Why would anyone use it in a hobby project?

Anonymous said...

Oh man.....Johnny....write an app for this. Irobot, ipad 2 running skype or FaceTime. I Want One!

Gregor Markič said...

This is awesome! Does your software support irobot roomba or irobot scooba. Thnx for your reply.

Whumpa said...

Awesome. It would have been cool at the end of the video if you'd turned right down the stairs instead of going straight! ;-)

||::[ взпјάміл ]::|| said...

This is really interesting! I live overseas too and once had that idea when I started playing around with Skype. Its such a nice feeling to see someone had actually built it! Great Job! You should mount a laser pointer on it that you can remotely control so that you'll be able to point at things for your loved ones... Sometimes its useful to be able to do that rather than telling them over video: "Oh its in the 2nd shelf of that cabinet... No not that one.. The other shelf over there!"

Unknown said...

mac version using skype

Blueroo said...

At the rate that you make great projects what we really need is a chat robot that just watches you all day :)

Icesnake Frostfyre said...

Suggestion for avoiding the 110VAC connection via the iRobot dock: Use a split transformer (such as used in cordless toothbrushes) to allow magnetic coupling between the netbook's charger and the AC power line. I haven't tried to find one ready-made, but winding a transformer yourself is tedious, not difficult.

Raza Rizvi said...

i'd like to join others in requesting a version where i can stick my samsung galaxy tab over the irobot. Galaxy has cameras both ways and i assume will take up less power. please please please!!! even an android phone version would do.

Александр Шавыкин (Alexander Shavykin) said...

Cool project. I am sure we will use such devices in the future. I test your program in XP. it runs but crash after pushing the button "Enable network control". Other buttons work correctly. In Win7 all is ok.

Unknown said...

Another fantastic Johnny Lee Project!
I think the mechanical safety switch is a good idea in the docking station, but especially with a remote application I can see where this could go tragically wrong. I would suggest something like the Energizer Qi which could possibly be made to work.
Also, if you could ditch the netbook battery, everything would be lighter up top and you wouldn't stress the castors.
The plastic is also surprisingly heavy - I wonder if a simple 1/4" steel post with three tension guy wires wouldn't be lighter and easier.
Johnny (Dr. Lee now that your CMU days are over), I have to say "thank you" for your willingness to post these things in the past and present. Certainly for me these have pushed the envelope and heightened my awareness of what is possible.

M said...

I set this up with a spare netbook and a Create. The local conection works great, but as soon as I connect to it remotely from another machine, one of the wheels begins spinning, even though I am not sending any input. The remote machine shows a velocity of "0 0", but the local machine shows "-18 -98", which seems corroborated by flipping the Create over and observing the wheels. As soon as I disconnect, the Create stops. Did you encounter this issue?

Unknown said...

I really like this idea. We provide video remote interpreting for none english patients using a flex application. We have figured out a way to replicate this with the controls in our application. I will keep you posted...great idea.

Unknown said...

great idea..we provide video remote interpreting and we have figured out a way to control the robot within our application (flex). I would of never thought of this...keep up the good work and I will keep you posted with our version and share the results.