Have you ever wondered how the iRobot Roomba vacuum robot works? When I brought my new household robot home, that was the first thing I wanted to know. For example, did you know your robot floor cleaner was basically a complex robot bug?
Now let's observe the little robot with a white coat and a loop see what we can reverse engineer...
Vacuum robots work pretty much like traditional vacuums. They have a vacuuming unit to suck the dust in and rotating brushes to move the dust up so that it is naturally drawn inside.
You can see on the picture the 2 rotating brushes with their rotating directions. They both send the dust toward the middle so that the dust will rebound on each other until it gets sucked up by the Roomba vacuum robot. Also, between the two brushes we will see later that their is a useful dirt sensor. But for the sensor to work, the brushes must send the dirt on it.
Do you see this spinning brush on the corner? It is one of the cool features of the Roomba vacuums. Just like usual vacuum cleaners, a robot vacuum cleaner can only clean the dust that is right under it. It's a problem when the cleaning robot cannot go too near from walls. But the spinning brush will move the dust near the walls and throw most of it under the robot and the rest randomly around the room, ready to be picked up later.
The vacuuming is clearly less powerful than a traditional vacuum cleaner, but your Roomba vacuum robot will handle that with a unique strategy for vacuum robots: it doesn't try to vacuum the room fast with an optimized path finding. Instead the robot vacuum cleaner goes randomly and passes over most of the room several times. By passing several times over the floor, it makes a better job than most robot vacuum cleaners passing only once quickly everywhere.
The Roomba vacuum robot evolved from bugs (or at least bug robots). It uses a combination of simple behaviors that can reach complex goals together.
This idea was created by Rodney Brooks, the supervisor of Colin Angle and Helen Greiner. The three of them founded the iRobot company. Brooks made a significant work with his subsumption architecture: instead of "sensing, detecting, thinking and deciding" occuring as one step after another, Brooks proposed to have all of these happening together, independently.
How to make a Roomba vacuum robot?
In short, your Roomba vacuum robot will not try to avoid you, then try to go straight and then try to vacuum the room. Instead it will follow navigation patterns that cover efficiently the room while modifying them in case of obstacles and other reactive behaviors.
Now what kind of behaviors did I observe in my Roomba?
These many behaviors combined make the iRobot Roomba vacuum robot very efficient and safe. The company even claims the Roomba has "more than 60 robotic behaviors".
Why is this strategy more efficient to clean your floor?
Compare to other vacuum robots, Roomba vacuums don't care about doing a quick job. A Roomba takes at least 4 times longer to clean a room than a Neato XV-11 vacuum robot. But the Roomba passes several times everywhere. The combination of wall following, spiraling in the middle and random turns makes sure the iRobot Roomba vacuum covers all the room.
The logic is that since there is no human supervision necessary, there is no hurry. I agree with that. I can easily leave my Roomba vacuum the other room while I'm watching TV for example. The noise is not even a problem, especially when I close the door.
The Roomba vacuum robot has many sensors that help get the job done. Here is a list of most of its sensors:
The Roomba vacuum robot can detect when it is charging.
The bumpers are quite straightforward: if it touches something, it pushes a button that tells the robot to change direction. They are low enough to detect my toes. And the robot is slow enough that it won't hurt any toe (though the spinning brush was tickling me) or furniture.
The infrared receiver is a littler better than the one they use in TVs since it can detect the position of the charging base. I suspect the robot must triangulate this position since clicking "dock" in front of the charging base doesn't help much the Roomba vacuum robot for docking. Triangulation means that the robot look in which direction the signal comes from, then moves and checks again, and again... After doing it several time, it can trace the direction lines on a virtual map and they should all point to one special direction.
The cliff sensors send infrared signals that rebound on the grounds and come back... if there is a ground. If the Roomba vacuum robot doesn't receive a signal back, it knows there is a danger. There are four of these, so that the robot can follow the cliff just like it can follow a wall using its bumbers.
The dirt sensors are hidden by the brushes. iRobot also says they use acoustic sensors to detect places with more dirt on the ground. I am not sure yet if they replaced the dirt sensors with acoustic sensors. But thanks to this sensor, the robot will stay around the dirty place slightly longer to be sure it cleaned all right.
After that the current sensors and encoders
are just basic robotic sensors that I am pretty sure are on the Roomba
vacuum robot. For example, when I move the Roomba 1 or 2 cm away from
its charging station, it will move back into position to stay on charge.
Also, my Roomba complains sometimes that it is stuck. The easiest way
to do that is to compare the speed of the wheel with the speed of the
robot. All these sensors are very cheap and small, and in almost every
Did you have enough?
Well, that was a little long, and I feel it left some details behind about the software architecture (that I can just guess anyway) and some of the behaviors. I'll just add the links when I write complementary articles.
Other pages that might interest you: