Subsumption Architecture: Moving Robots In The Real World


A small revolution has been going on in the MIT Mobile Robot Lab in the last few years. Professor Rodney Brooks, director of the research lab, believes that a way to achieve Artificial Intelligence is through building autonomous robots that interact with real world environments [1] instead of the virtual worlds of symbols that most other AI programs dwell in. To this end, Professor Brooks invented subsumption architecture, a robust layered control system [2] for writing mobile robot software.

In applying subsumption architecture, a programmer creates a robot control program by writing different layers of competence, each of which is implemented by a (usually small) group of independent computational processes. A higher layer can affect the behavior of lower layers by sending messages to the lower layer, by inhibiting other messages going into it, or by suppressing messages coming from it. A higher layer can also "listen" to the messages coming from a lower layer and modify its own behavior. Using this architecture, the MIT lab has built over a dozen innovative mobile robots.

The mechanical inhabitants of the Mobile Robot Lab are all very different from each other. "Squirt" is the smallest member at just over one cubic inch in size. "Herbert" probably has the most hardware, with two dozen computer processors and thousands of connecting wires. The glamourous, foot-long, insect-resembling "Genghis" and "Attila" have graced the covers of several popular and technical journals. All of their control software is based on the subsumption architecture; all of them are autonomous and exhibit some type of intelligent, typically insect-like, behavior.

The MIT lab has produced two generations of subsumption languages, both loosely based in syntax and semantics on Lisp. A program in the original language [2] consists of a group of Finite States Machines (FSMs), each of which contains some input and output registers and an optional timer. An output register of an FSM may be "wired" to input register(s) of other FSM(s), either by a physical wire if they are executed on different processors, or by a virtual wire if they are executed on the same processor. An FSM may also suppress an output register or inhibit an input register of another FSM. Each FSM implements one computational process in the subsumption architecture. The second generation subsumption language, known as the Behavior Language [3], provides features for writing higher level behaviors, thus insulating the programmers from writing FSMs directly. The MIT lab's latest robots, such as Attila and Toto, all use this language.