Tuesday, May 11, 2010

Roomba Mapping

Projects are fun. Documentation... not so much. But Zambots is science, and science requires documentation and repeatability. So here we go!

The aim of this project is to build a room mapping robot. The mechanical platform will be an iRobot Roomba. This means that once the room has been mapped, the Roomba can also clean it optimally, and without missing any spots.

To map the room, a combination of an ultrasonic sensor and touch sensors will be used. The ultrasound will create a general map, and the touch sensors will be used to re-register the robot to clear any accumulated error.

The robot must be untethered, which requires either on-board processing or a wireless module. On-board processing is possible, but I am opting to use a pair of XBee modules. This way processing can be done remotely, allegedly up to 100' away. Processing will be done mainly by an Arduino (for blog cred of course - http://xkcd.com/730/ ), though I plan to use a computer for visualization of the room being mapped.

Controlling the Roomba, once an optimal trajectory has been found, is actually easier than it sounds. The developers left a 7-pin port on the top of all Roombas expressely for this purpose :) which accept a set of simple opcodes, allowing control of the motors, LEDs and sounds as well as returning sensor data.

For those of you who prefer visual information, here is a block diagram of my proposed system:



As the project goes, I'll post pictures, videos, code and schematics as part of my efforts in documenting. Comments are very welcome, especially advice as I've never tried something this complex before.

-Mike

3 comments:

  1. Nice idea using the desktop to do the computing...might get around some of the NP-completeness. I still don't think you'll be able to vacuum a room "optimally", though :). Doing better than the roomba currently, though (random movements in random directions), should be pretty easy :D

    ReplyDelete
  2. ah boss, you cannot be serious! Working on such robots - ah robots are for roads not for carpet cleaning. You are not serious. Iwe! ah at this time you must not be okay in the head. Will they tell me when I can drive over that side? Ah you cannot be serious.

    ReplyDelete
  3. It would be pretty cool if my Roomba didn't go around my apartment in circles a million times and still didn't catch everything!

    ReplyDelete