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.-
Four IR based cliff sensors
-
Two bump sensors
-
One wall sensor
-
A top mounted IR sensor. Used by Virtual Walls, Docking Station, and Remote Control
-
One Dirt Detector (acoustic impact). Some Roombas have two.
The Roomba is sold commercially as a Vacuum Cleaner. Thus it also has...
-
One main brush motor
-
A side brush motor
-
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
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).
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...
-
getSensor("value")
-
casterDrop
-
leftWheelDrop
-
rightWheelDrop
-
leftBump
-
rightBump
-
wallSensor
-
leftCliff
-
frontLeftCliff
-
frontRightCliff
-
rightCliff
-
virtualWall
-
leftDirt
-
rightDirt (Some Roombas don't have this sensor, they will always return 0)
-
powerButton
-
spotButton
-
cleanButton
-
maxButton
-
distance
-
rawAngle
-
angleInRadians
-
temperature
-
charge
-
setMode("value")
-
setClean("value")
-
setMotor("value")
-
setStatus("value") Docking Station required for this to function properly
-
reset()
-
off()
-
Value can be any of these sensor names
-
In "safe" mode the Roomba's protection mechanisms are on. While under "full" mode all protection is off.
-
Value can be "spot", "clean" or "max"
-
Value can be "main", "vac", "side", or "off"
-
Value can be either "sleep", or "wakeup" Sleep sends the Roomba to its Docking station. Wakeup returns the Roomba to safe mode.
-
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.
-
Turns the Roomba off. status("wakeup") will not be able to return control to the user.
Next: Interfacing Your Own Robot Up: PyroHardware
