Results Generaton - Environment or Test Generator?
Auto-dependency Generation

Oh Roomba, How I Love Thee

Earlier this spring I came across a news article about a company called iRobot.  iRobot makes the robots used by the US military in places like Afghanistan which look strangely like Number 5 from the 1986 movie Short Circuit. Packbotexplorerright

As it turns out, they also make something  slightly more useful to the average household called the Roomba.  The Roomba is a robotic floor vacuum cleaner which is supposed to relieve the average homemaker of the arduous chore of vacuuming the house.  The price?  A mere $300 for the top of the line model, within the same price range of a regular upright vacuum cleaner.  Could it be true?  Would the thing work as advertised? 

I spent a lot of time browsing through the iRobot web site going through the FAQ and watching videos to try to find out things like:

  1. Does the Roomba fall down stairs? (Supposedly no, it has sensors to detect the stairs and will stay away unless you have light colored carpet, more on that later).
  2. Can the Roomba handle the height change between carpet and tile? (Yes, if the distance is less than about a half inch or so).
  3. How does the Roomba know when it's done cleaning? (Magic, as best as I can tell :-).  The Roomba keeps bouncing around until it feels it's covered all portions of the room in question more than once, or until the battery is dead at which point it tries to return to it's home base for recharging.
  4. Does the Roomba have a laser beam?  (iRobot isn't saying, but I'm convinced there must be one inside the Roomba somewhere!) Personally I think a laser would be quite handy to ward off small children and pets who would rather play with the Roomba than let it vacuum, but for some reason iRobot choose to have the Roomba either bounce off these types of obstructions or shut off if flipped upside down. 

After some discussion, and after discovering the Roomba was being sold at Target, my wife and I decided to take the plunge in hopes of weekends free of vacuuming while enjoying clean carpets and tile floors.  So does it work?  Absolutely!  Unfortunately, the first several times we used the Roomba we didn't save much time ourselves as we spent several hours watching it do its job (just to make sure it didn't cause any trouble).  Roomba_discovery_lgNot only did the robot clean the carpets and tile, it did a better job than we would have done ourselves.  Why?  Because of its size, the Roomba can go under beds, chairs, and tables that would otherwise have to be moved out of the way when using a regular vacuum.  It also is able to go behind our TV and sofa (we did have to move each one out from the wall a few inches to make sure there was enough clearance).  It also has the ability to clean along walls so it tends to be a bit more thorough than we ever were ourselves.  Because of its small size the dirt trap needs to be emptied after every use or two.  It also has a small filter that needs to be replaced every couple of months.  Two filters came in the original box but you can buy more from the iRobot online store (a bit spendy at $15 for a pack of 3 but not totally unreasonable). 

There have been a couple of issues.  First, since we have light colored carpet our Roomba can't see our stairs until it's too late.  But it's not catestrophic.  It simply goes over the edge just a bit too far for it to back up, but it doesn't fall down.  To resolve the issue we use the "Virtual Wall" units that come with the Roomba.  The units shoot out an infrared beam that signals to the Roomba that it shouldn't proceed.  You can use the units to block off stairs or make sure the Roomba stays within the confines of a certain part of the house.  Another thing that was a bit disappointing was the length of time the Roomba takes to clean a room.  It seems to take about an hour for a reasonably sized room (15'x20') but given the chance we've also had it do our entire downstairs (about 800-1000 square feet) which it also finishes in about an hour.  The Roomba just seems to like to reclean spots over and over again (it will go through the same spot several times during the course of a cleaning).  The battery takes about three hours to charge, and then you can move the Roomba to another part of the house and continue cleaning. 

After my initial excitement wore off, I started wondering about what sort of test environment would be required to make sure the Roomba was ready for all of the possible household environments it might encounter.  I would imagine that there would be a combination of hardware and software simulation environments as well as test rooms where the final product could be run through its paces.  There are a large number of job openings at iRobot, and while it would seem that experience with robotics would be a necessity, I believe anyone with a strong background as a verification engineer would make an excellent addition to the iRobot team.  Why?  Because one of the characteristics of a verification engineer is the desire to break stuff.  As robots become more complex and take on more advanced tasks, ensuring the end product is safe and effective will be even more important.  Ah... I think our Roomba may be recharged after cleaning our bedroom and master bath... time to move it to the next location!

Update: After some browsing around the web I found this blog entry entitled "All I Ever Needed To Know I Learned From My Roomba".  If nothing else, it's thought provoking.