UserPreferences

Using the Roomba


1. Roomba

The Roomba is intended to be a cleaning robot, however with little to no modification it can become a powerful educational/hobbyist robotics platform. The Roomba comes with these basic sensors.
  1. Four IR based cliff sensors

  2. Two bump sensors

  3. One wall sensor

  4. A top mounted IR sensor. Used by Virtual Walls, Docking Station, and Remote Control

  5. One Dirt Detector (acoustic impact). Some Roombas have two.

The Roomba is sold commercially as a Vacuum Cleaner. Thus it also has...

  1. One main brush motor

  2. A side brush motor

  3. and a Vacuum motor

This code also works with the Create, which does not have any vacuum or brushes.

2. Files

This is an example brain that attempts to use the bump sensor to follow a wall.

3. Connecting

A Roomba has its own proprietary serial format.

You can make your own [WWW]serial cable, [WWW]usb cable, or [WWW]Bluetooth dongle. We chose to purchase a "RooTooth" module from [WWW]RoombaDevTools.com (although that seems to be out-of-stock). For the iRobot Create, we are trying [WWW]ElementDirect's BAM!. Other cables including Usb and Serial are also available from RoombaDevTools.

We used the methods described in Using the IntelliBrain-Bot and Using the Hemisson Robot to connect with our bluetooth device.

The Roomba's default baud rate is 57600 but can be changed through the Serial Control Interface(SCI).

4. Documentation

[WWW]IRobot, the Roombas creator, was very generous and released a SCI for the roomba. That is available [WWW]here. This is not required for use of the Roomba under Pyro.

Roomba Hacking Forum : [WWW]RoombaReview. If you can't seem to find the answer ask the nice community over there.

Besides the regular movement commands(move(), translate(), and rotate()) Roomba supports the following commands under Pyro...

  1. getSensor("value")

  2. setMode("value")

  3. setClean("value")

  4. setMotor("value")

  5. setStatus("value") Docking Station required for this to function properly

  6. reset()

  7. off()

Next: Interfacing Your Own Robot Up: PyroHardware