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.


Guitar Hero and the ImageCraft AVR C Compiler

One of the hottest console games currently is Guitar Hero. It’s hugely entertaining and you get to enjoy some good music. On the downside, it doesn’t have anything to do with playing real guitar per se as the primary task is to push the right buttons as shown on the screen. To address these shortcomings, Zivix has developed a guitar with an Atmel ATMega168. The designer, Dan Sullivan,  says

We have been using the Imagecraft C compiler for the Atmel AVR for many years, and it has been a great workhorse for code development. We use an Atmel MEGA168, so having efficient code is important to squeeze in the many functions into the small memory space available.

I am very glad that we can be a part of Dan’s ingenious solution. In Zivix’s guitar, since the game requires “chords” on one string, Zivix has patent-pending sensors integrated into the fretboard. This makes the guitar act as a bridge between game playing and learning a real musical instrument. Instead of pressing colored buttons on a simulated plastic guitar, the user places their fingers on the frets, and instead of using a plastic paddle switch, a string must be picked using a conventional pick or finger. In this way a game player can learn to fret and pick strings on a real guitar, and this provides a first step to learning to play it. The guitar can then be disconnected from the game, plugged into a normal guitar amplifier, and used to learn the real songs.

For more information, please visit their web site,