roomba
Drivers

iRobot Roomba More...

iRobot Roomba

Newer versions of the iRobot Roomba vaccum robot can be controlled by an external computer over a serial line. This driver supports control of these robots.

Note that the serial port on top of the Roomba operates at 5V, not the RS232 standard of 12V. This means that you cannot just plug a plain old serial cable between the Roomba and your PC's serial port. You need to put a level-shifter in between them. Or you if have a computer that exposes serial lines at "logic level," (e.g., the Gumstix), you can use them directly. Check out iRobot's hacker site for more information, including the pinout on the Roomba's serial port. The Roomba Wiki has a howto on building an appropriate serial cable.

Compile-time dependencies

- none

Provides

The roomba driver provides the following device interfaces:

- position2d
  - This interface returns odometry data (PLAYER_POSITION2D_DATA_STATE), and accepts velocity commands (PLAYER_POSITION2D_CMD_VEL).
- power
  - This interface returns battery levels (PLAYER_POWER_DATA_STATE).
- bumper
  - This interface returns bumper data (PLAYER_BUMPER_DATA_STATE).
- opaque
  - This driver supports programming song, playing songs, and setting the LEDs.
  - Play song data format in bytes: [0][song_number]
  - Program song data format in bytes: [1][song_number][length(n)][note_1][length_note_1]...[note_n][length_note_n].
  - Set LEDS format in bytes: [2][dirt_dectect(0/1)][max_bool(0/1)][clean(0/1)][spot(0/1)][status(0=off,1=red,2=green,3=amber)][power_color(0-255)][power_intensity(0-255)]

Supported configuration requests

- PLAYER_POSITION2D_REQ_GET_GEOM
- PLAYER_BUMPER_REQ_GET_GEOM

Configuration file options

- port (string)
  - Default: "/dev/ttyS0"
  - Serial port used to communicate with the robot.
- safe (integer)
  - Default: 1
  - Nonzero to keep the robot in "safe" mode (the robot will stop if the wheeldrop or cliff sensors are triggered), zero for "full" mode
- bumplock (integer)
  - Default: 0
  - If set to 1, the robot will stop whenever bumpers are closed
- roomba500 (boolean)
  - Default: false
  - If set to true, the driver will start at the faster default baudrate of the Roomba 500 series

Example

    driver
    (
      name "roomba"
      provides ["position2d:0" "power:0" "bumper:0" "ir:0" "opaque:0"]
      port "/dev/ttyS2"
      safe 1
      roomba500 false
    )

Todo:
  - Add support for IRs, vacuum motors, etc.
  - Recover from a cliff/wheeldrop sensor being triggered in safe mode; the robot goes into passive mode when this happens, which right now requires Player to be restarted

Author
  Brian Gerkey

Last updated 12 September 2005 21:38:45