
4
iRobot®Roomba®Serial Command Interface (SCI) Specification
www.irobot.com
Safe Command opcode: 131 Number of data bytes: 0
This command puts the SCI in safe mode. The SCI must be in
full mode to accept this command.
Note: In order to go from passive mode to safe mode, use the Control
command.
Serial sequence: [131]
Full Command opcode: 132 Number of data bytes: 0
Enables unrestricted control of Roomba through the SCI and
turns off the safety features. The SCI must be in safe mode to
accept this command. This command puts the SCI in full mode.
Serial sequence: [132]
Power Command opcode: 133 Number of data bytes: 0
Puts Roomba to sleep, the same as a normal “power” button
press. The Device Detect line must be held low for 500 ms to
wake up Roomba from sleep. The SCI must be in safe or full
mode to accept this command. This command puts the SCI in
passive mode.
Serial sequence: [133]
Spot Command opcode: 134 Number of data bytes: 0
Starts a spot cleaning cycle, the same as a normal “spot”
button press. The SCI must be in safe or full mode to accept this
command. This command puts the SCI in passive mode.
Serial sequence: [134]
Clean Command opcode: 135 Number of data bytes: 0
Starts a normal cleaning cycle, the same as a normal “clean”
button press. The SCI must be in safe or full mode to accept this
command. This command puts the SCI in passive mode.
Serial sequence: [135]
Max Command opcode: 136 Number of data bytes: 0
Starts a maximum time cleaning cycle, the same as a normal
“max” button press. The SCI must be in safe or full mode to
accept this command. This command puts the SCI in passive
mode.
Serial sequence: [136]
Drive Command opcode: 137 Number of data bytes: 4
Controls Roomba’s drive wheels. The command takes four data
bytes, which are interpreted as two 16 bit signed values using
twos-complement. The first two bytes specify the average velocity
of the drive wheels in millimeters per second (mm/s), with the
high byte sent first. The next two bytes specify the radius, in
millimeters, at which Roomba should turn. The longer radii make
Roomba drive straighter; shorter radii make it turn more. A Drive
command with a positive velocity and a positive radius will make
Roomba drive forward while turning toward the left. A negative
radius will make it turn toward the right. Special cases for the
radius make Roomba turn in place or drive straight, as specified
below. The SCI must be in safe or full mode to accept this
command. This command does change the mode.
Note: The robot system and its environment impose restrictions that may
prevent the robot from accurately carrying out some drive commands. For
example, it may not be possible to drive at full speed in an arc with a large
radius of curvature.
Serial sequence: [137] [Velocity high byte] [Velocity low byte]
[Radius high byte] [Radius low byte]
Drive data bytes 1 and 2: Velocity (-500 – 500 mm/s)
Drive data bytes 3 and 4: Radius (-2000 – 2000 mm)
Special cases: Straight = 32768 = hex 8000
Turn in place clockwise = -1
Turn in place counter-clockwise = 1
Example:
To drive in reverse at a velocity of -200 mm/s while turning at
a radius of 500mm, you would send the serial byte sequence
[137] [255] [56] [1] [244].
Velocity = -200 = hex FF38 = [hex FF] [hex 38] = [255] [56]
Radius = 500 = hex 01F4 = [hex 01] [hex F4] = [1] [244]
Motors Command opcode: 138 Number of data bytes: 1
Controls Roomba’s cleaning motors. The state of each motor is
specified by one bit in the data byte. The SCI must be in safe
or full mode to accept this command. This command does not
change the mode.
Serial sequence: [138] [Motor Bits]
Motors data byte 1: Motor Bits (0 – 7)
0 = off, 1 = on
Bit 7 6 5 4 3 2 1 0
Motor n/a n/a n/a n/a n/a Main
Brush
Vacuum Side Brush
Example:
To turn on only the vacuum motor, send the serial byte
sequence [138] [2].
Leds Command opcode: 139 Number of data bytes: 3
Controls Roomba’s LEDs. The state of each of the spot, clean,
max, and dirt detect LEDs is specified by one bit in the first data
byte. The color of the status LED is specified by two bits in the
first data byte. The power LED is specified by two data bytes, one
for the color and one for the intensity. The SCI must be in safe
or full mode to accept this command. This command does not
change the mode.
Serial sequence: [139] [Led Bits] [Power Color] [Power Intensity]
Leds data byte 1: Led Bits (0 – 63)
Dirt Detect uses a blue LED: 0 = off, 1 = on
Spot, Clean, and Max use green LEDs: 0 = off, 1 = on
Status uses a bicolor (red/green) LED: 00 = off, 01 = red, 10 =
green, 11 = amber
Bit 7 6 5 4 3 2 1 0
LED n/a n/a Status (2 bits) Spot Clean Max Dirt Detect
Power uses a bicolor (red/green) LED whose intensity and color
can be controlled with 8-bit resolution.