REXIS (V2): The Subsumption Architecture OS

Subsumption Architecture was defined by MIT’s Rodney Brooks as a new method of building intelligent systems based on reactive behavior based control. While 20+ years later, the promise of the subsumption architecture has not produced an intelligent robot yet (although I suppose we don’t *really* know the full capability of the PackBots used by the military :-) ), the subsumption architecture remains an enticing theory for building control systems. With the ever increasing use of embedded micrcontrollers and sensors, the subsumption architecture becomes an appealing choice for such system due to the following properties:

  • The architecture is inherently multiple process and processor friendly. This is useful as the number of control units increase.
  • In real world, messages are inherently unreliable and missed deliveries are possible (e.g. imagine a noisy wi-fi network). The subsumption architecture design are divided into levels of competence, providing a high level of robustness in unreliable message delivery environment.

Our first commercial product was REXIS (Real time Executive for Intelligent Systems), a C library implementation of the subsumption architecture. It is a multitasking RTOS with support for subsumption calls. I am now designing V2 of this system.

To make the system as user friendly as possible and to obtain the best performance, the system consists of:

  • a RTOS (real time OS) with subsumption API, plus traditional API such as semaphores.
  • a language preprocessor.

The source file is a C source file decorated with the REXIS language elements, which are prefixed by the @ sign. Some are commands and some are used in place of C expressions. The full power of C is available since the REXIS elements are just small part of the source program.


In the Beginning…

Our first compiler product was a low cost ($39!!!) C compiler for the HC11. The ’11 was great for its time: the documentation is a standard that most CURRENT microcontroller documents could take lessons from; the chip was easy to use, even in the era of burning your own EEPROM and erasing them using UV light, and the HC11 E2 was a charmer since it has its own builtin 2K of EEPROM, back in the late 80s!

But I digress, ImageCraft had an earlier beginning. Back in the days when I was in the graduate school, I got very interested in MIT’s Rodney Brook’s subsumption architecture (*) and I did my Master thesis on a subsumption based C kernel (demonstrated with a RC-converted robot named Ripley). Then I decided to see if I can commercialize the kernel. As with all product launches, the naming took longer than the development time (ok, I exaggerated), and the kernel ended up being called REXIS, short for REal time eXecutive for Intelligent Systems. I forgot exactly how it happened, but someone at the Canada Forestry paid us a lump sum of $1500 to port REXIS to the 68000. They were embarking on a decade long project to build autonomous forest tending robots and REXIS fitted the bill, and thus ImageCraft was born… They actually sent us a VHS tape of the robot in action. It’s a huge 4 legged walking robot, able to negotiate rough terrain. I wonder if the clip is on youtube :-)

To close the story, it didn’t make much sense to sell a HC11 C kernel suitable for robotic uses when most roboticists/students could not afford a $1500 compiler, so I decided to write and sell a low cost HC11 compiler…

REXIS morphed into the simpler uExec, which we published in a Circuit Cellar article and is available on our website for several targets. One person added messaging API and another person ported it to the M16C. Unfortunately, I have not gotten these enhancements. In any case, I still have a soft spot for REXIS and I may resurrect it in a more modern form one of these days.

(*) funny enough, Brook’s eventual company started by one of his students, iRobot, is one of our customers…