Home ]Software ]Curriculum ]Hardware ]Community ]News ]Publications ]Search ]


1.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.

1.2. Files

     Roomba_Wall_Hugger.py goes in ../pyrobot/plugins/brains

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

1.3. Connecting

A Roomba has its own proprietary serial format.

You can make your own  serial cable,  usb cable, or  Bluetooth dongle. We chose to purchase a "RooTooth" module from  RoombaDevTools.com (although that seems to be out-of-stock). For the iRobot Create, we are trying  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).

1.4. Documentation

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

Roomba Hacking Forum :  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")
    1. Value can be any of these sensor names

      1. casterDrop
      2. leftWheelDrop
      3. rightWheelDrop
      4. leftBump
      5. rightBump
      6. wallSensor
      7. leftCliff
      8. frontLeftCliff
      9. frontRightCliff
      10. rightCliff
      11. virtualWall
      12. leftDirt
      13. rightDirt (Some Roombas don't have this sensor, they will always return 0)
      14. powerButton
      15. spotButton
      16. cleanButton
      17. maxButton
      18. distance
      19. rawAngle
      20. angleInRadians
      21. temperature
      22. charge

  1. setMode("value")
    1. In "safe" mode the Roomba's protection mechanisms are on.

      While under "full" mode all protection is off.

  1. setClean("value")
    1. Value can be "spot", "clean" or "max"

  1. setMotor("value")
    1. Value can be "main", "vac", "side", or "off"

  1. setStatus("value") Docking Station required for this to function properly
    1. Value can be either "sleep", or "wakeup"

      Sleep sends the Roomba to its Docking station. Wakeup returns the Roomba to safe mode.

  1. reset()
    1. If your Roomba is in safe mode and one of the protection mechanisms are tripped then the Roomba must be reset() before you can control it again. This command only sends out codes required to return control to the user.

  1. off()
    1. Turns the Roomba off. status("wakeup") will not be able to return control to the user.

Next: Interfacing Your Own Robot Up: PyroHardware


Home ]Software ]Curriculum ]Hardware ]Community ]News ]Publications ]Search ]

CreativeCommons View Wiki Source | Edit Wiki Source | Mail Webmaster