Hello, Roomba!

Published: August 20, 2012
Tags: housework repair robots roomba

Because so many residents of Berkeley are students or staff of the University for a finite amount of time, whenever a semester ends or begins there is always a much higher number of people moving into and out of places than at other times. One side effect of these heavy moving times is a significant amount of abandoned furniture and housewares turning up all over the streets as people can't manage to get rid of things in time for their move-out dates.

Walking home the other day my wife and I passed a cardboard box beside the footpath near an apartment complex that had the following written on it in black marker:

Free Roomba!

This awesome Roomba is awesome in spite of (or perhaps because of) the fact that it only turns left, just like superstar male model Derek Zoolander

The box did, indeed, contain a Roomba, along with all the accessories it came with, right down to the little cleaning kit. We were within 3 minutes walk of our apartment at this point so we decided to carry the box home with us and give it a go, figuring that a Roomba that only turns left should still be capable of actually vacuuming a room using a spiral pattern.

It turned out that Roger the Roomba (as he was dubbed) had a slightly more serious problem than we imagined. Rather than cleaning a room in a non-optimal way by only turning in one direction, whenever asked to clean he would do what the Roomba community seems to call "the circle dance" and then, after less than a minute, stop and make a sad noise followed by a series of beeps. Four beeps, to be precise, which the manual decodes as "a wheel motor cannot run".

At this point I figured one of the motors was burned out and the little guy was pretty much useless. But Kirsty found this webpage where another Roomba owner kindly provides very detailed instructions on how they managed to fix the same kind of behaviour on a similar model to ours simply by cleaning a sensor mounted near the wheels. We followed the instructions and cleaned quite a lot of black cruft out from the spoked disc / cog like widgets that spin along with the actual wheels. I suppose the Roomba tells whether it is moving or not, not by using accelerometers or any other inertial navigation technology, but by detecting the periodic interruption of a light beam by the spokes on this wheel, using what looks like a fancier version of putting an LED on one one side of the spokes and an LDR (which, incidentally, I've learned is usually called a photoresistor in the US) on the other. If enough dirt gets trapped to block this sensor set up then the Roomba thinks its wheel isn't turning when in fact it actually is, causing it quite reasonably to give up and cry for help. After this little bit of cleaning work (which cost absolutely nothing and only required some screwdrivers and cotton swabs), Roger can move around just fine and so now it looks like we have scored a perfectly functional Roomba for free! His battery runs down after far less than the 120 minutes the manual indicates, presumably because it's old, but replacement batteries on eBay don't seem too dear.

It's a pretty nifty little gadget. I'm not sure I'd pay a triple figure amount for a new one, but that's largely a combined function of my small postdoc salary, the fact that we don't vacuum "the old fashioned way" all that often anyway, and that I don't drastically care about how clean my carpet is. I think we'll certainly keep using him now that we've rescued him from the streets and reanimated him, though, and probably end up with a cleaner house for it. It's quite interesting to watch him bump his way around. iRobot are understandably fairly secretive about exactly what sort of navigational algorithms the Roomba uses. Supposedly there is some attempt to plan a path that results in something like full floor coverage based on rough estimates of the room size. From some casual observation, it looks an awful lot to me like completely random wandering around combined with a few simple heuristics based on feedback from the bumper, which let it do things like navigate around table legs or hug the edges of walls. It certainly doesn't appear to be doing anything SLAMmy, like constructing a map of the room based on how long it can run in a certain direction at a certain speed before a collision, and then remembering where it's already been. Which is probably exactly the approach that should be taken to come up with a system that works well enough to be useful without being too expensive or susceptible to failing in weird edge cases. It reminds me a bit of Rodney Brooks' paper "Intelligence Without Representation". Watching it progress between different parts of the house after spending some time semi-stuck in regions bounded by a lot of furniture or happening upon a doorway also reminds me a lot of Markov chain Monte Carlo in a two dimensional sample space, but that might just be me...

Feeds
Archives
Top tags