Robot stops when a
wheel drops off an
B IR “cliff” sensors
Detects stairs when
C Bumper sensors
Helps robot to follow a
wall on the right.
Used to locate a virtual
wall and charge dock.
I think the robot will
stop and go forward.
The Roomba appears to use a
microcontroller. However, iRobot has
done such a wonderful job on the
sensor integration and motor
controllers of the Roomba that I would
be loathe to mess with it.
Leave the code in the Roomba robot as it is and look
at how we can interface it to what is already there (rather
than throwing out the baby with the bath water). My
quick answer is: Don’t program it. Connect to it using the
iRobot serial command interface (more on that later).
The Roomba has lots of sensors in it; most of them
are useful to us, while at least one of them is a real puzzle
to me (the dirt sensor). Look at Figure 2. I have labeled
the sensors shown inside the main body as detailed below:
As far as I can tell, the (A) motor drop sensors simply
stop the robot to keep it from tumbling down the stairs if
a wheel falls off a cliff. These are simple microswitches
that are triggered when the spring-loaded wheel drops.
The (F) tail wheel-drop sensor is one that I’ve not
maneuvered the robot into using yet, but if I had to guess
I’d bet it would make the robot stop going in reverse and
The (B) IR cliff sensors are really good at seeing a
drop-off/-on either a carpeted or hardwood floor. (I’d love
to know how they did that! My IR proximity detectors are
typically confounded by carpeting.) The bumper sensors
do what you would expect.
There are two IR slotted interrupter sensors (C) that
the highly flexible front bumper can activate. If you collide
on the right, only the right sensor is triggered; the same —
but opposite — is true for the left side. If you hit more or
less in the center, then both of the sensors are triggered.
The robot changes course accordingly. (If you’ve ever seen
a Roomba in action, you marvel at how well it determines
the correct course to take).
The wall follower IR sensor (D) is most likely (I’ve not
confirmed this) a fixed distance IR sensor that allows the
Roomba to hug the wall when it finds one. It can also
nicely navigate an inside or outside corner with this. (It is
cool to just watch this little guy in action!)
Finally, there is (E) the IR beacon sensor dome. This
watches for messages from the charging dock (if your
model supports it) or the “virtual wall” beams that tell the
Roomba when it has reached the end of its allowed space
going forward. It is the efficacy of the programming that
supports these sensors that makes me suggest that you
are better to send messages to the Roomba using the SCI
interface than writing your own OS for it. Table 1 gives a
quick summary of all these sensors.
As a robot hacker, I’ve never seen a re-purposed robot
that is so flexible and able. As anyone can tell you, making
a highly maneuverable robot can be a challenge if you
want it to work on hard floors or carpeting. The Roomba
does this with ease.
The drive wheels are very grippy and their spring-loaded suspension makes them very adaptable to terrain
SERVO 01.2013 17