A couple of weeks ago, iRobot announced bankruptcy. The pathbreaking Boston-area company that makes the Roomba will now be owned by a Chinese consumer-goods manufacturer.
People argue about who is to blame for the failure of iRobot: Was it poor management decisions? Government overreach in preventing mergers? An inability to innovate? The inevitable race to the bottom of any commodity consumer good?
Regardless of the reasons, I am sad about one thing: that robot developers are missing what made the original Roomba successful.
I will try to explain what made the design of the original Roomba truly innovative, and what lessons we should take from it.
Introduced in 2002, the Roomba was the first successful consumer robot for the home.

Cheap, off-the-shelf components helped price this original Roomba at two hundred dollars so that people who needed a home vacuum could consider buying it. It worked well enough that iRobot eventually sold over forty million of them.
Completely autonomous, the Roomba only needed to be switched on. It would run all over the floor, noisily brushing and vacuuming. When it was done, you emptied its dirt chamber and plugged it in to recharge.
It had its limitations--- for example, it couldn't move furniture, confine itself to one area, or deal with carpet strings or wet messes. Its vacuum was anemic. But within these limitations, it could maintain the floor at an everyday level of cleanliness.
This original Roomba was much simpler and more elegant than today's mobile vacuum cleaning robots, including iRobot's present models and many other competing products. In fact, its internal design was fundamentally different from most other robots.
Normally, industrial robots are made robust and safe by using high-quality, expensive parts that can execute programmed motions precisely, reliably, and repeatedly. The robots are then deployed into a carefully-designed, predictable environment, with safety systems built around them. As long as they don't encounter surprises, their programs continue to work smoothly. If something goes wrong, the safety systems stop them for engineers to debug them.
But as a consumer robot built for unstructured home environments, the Roomba took a radically different approach. Its software was written in such a way that the robot could run as reliably as possible given unreliable parts and an unpredictable environment.
The Roomba didn't have enough memory to remember a map of the room. Instead of building a map, it used clever tricks to cover the available floor region, albeit inefficiently. If it encountered an obstacle, the robot could try backing up, turning, and moving to a different location. If a rotating brush failed, the Roomba might not be able to clean the floor as well as before, but it could at least keep running and do as well as it could using the remaining brush and the vacuum. The product was better than the sum of its parts.
The secret to the Roomba's success was in its software. It was built using an unconventional approach originally invented by Professor Rodney Brooks in the 1980s at the MIT AI Lab. One of the researchers who spent time with Rod Brooks's mobile robot group, Joe Jones, was not actually part of the group, but someone deeply interested in this approach to building robots. Brooks had built a software library, a "behavior language," that enabled his students to program robots using this approach. Jones was one of the few people who actually used the behavior language.
Rodney Brooks co-founded iRobot, and Joe Jones joined the company as an engineer. They made money by building custom robots, eventually landing military contracts for remote-controlled PackBots. Ten years later, when the company had enough money, Joe pushed the company to develop a home vacuum cleaner, and this became the Roomba.
At MIT, Rodney Brooks's work in the mobile robot group was motivated by a well-known paradox: computer programs can do many so-called higher-level thinking tasks like numerical calculations, physics simulations, theorem proving, and playing chess, but they fail at many real-world tasks that seem simpler, like crawling out of a pit, that even so-called low-level animals like insects can perform with ease.
Clearly, living things over the millenia have evolved basic survival skills that are important in the real world. Something was missing in the computer science approach to building robots. Brooks was proposing an alternative approach that would at least demonstrate insect-like abilities in the real world.
Robots sense their world using cameras, sonar, and other sensors, and they act on the world via motors or other actuators. The conventional approach to building an autonomous robot was to use sensors to gather information about the world, build a model of the world using this information, think about possible actions and their effects on this model to form a plan, and then finally execute the plan on the real world by commanding the actuators to do things.
But this method failed to deal with a changing, unpredictable world that is sensed using unreliable sensors.
Instead, Brooks advocated building very simple programs that continuously gather sensor data and directly drive the actuators. Each program would achieve a single, simple goal. For example, imagine a robot with two "eyes" consisting of simple photoreceptor cells that can measure how much light falls on them. Such a robot could be made to move toward a light source by always turning it to the left if the left eye sees a brighter light, and vice versa. In software, this could be done by driving each wheel in proportion to the difference between the brightness perceived by the two eyes. This light-seeking program would be an example of a basic ability. Then, using Brooks's proposed software architecture, the programmer could compose several such different basic abilities, called "behaviors," to achieve higher-level goals.
Individual behaviors can be developed independently and added to the robot. Some behaviors are analogous to the fundamental survival skills developed by organisms early in evolution. These skills remain available while more skills are developed. The trick is in picking the right skills to use depending on the circumstances. For example, if a Roomba discovers that it is standing at the edge of a staircase, then it should stop cleaning and back up, trying a different direction. Survival is a higher priority than cleaning.
The Roomba showed that behavior-based robotics can be a practical approach to developing autonomous robots that are actually useful and fit for purpose.
The approach is not without its challenges. It can be very difficult to figure out how exactly the different behaviors can be reconciled in a robot. The complex interplay between them can make the robot very hard to debug. Building robots is hard. Behavior-based robotics doesn't solve all the problems building robots, but it does show how certain very significant limitations can be addressed.
It's not clear whether robotic vacuums have kept the simplicity of this approach. They don't seem to have. Today's Roombas and competitors sport a great many features: cameras, network connections, phone apps, maps built using visual simultaneous localization and mapping (vSLAM), and so on. For the purposes of cleaning a floor, not all these features count as innovations. Some might be necessary (longer-lived batteries and a more powerful vacuum), but others might be unnecessary dead weight.
In the heat of retail competition and the pursuit of growth, it can be hard to keep your eye on the ball. When trading off advantages and costs, you have to remain true to your architecture. The simplicity of the original Roomba was a virtue.