Robotics and Autonomous Systems 39 (2002) 115–127 Programming with behavior-processes Andreas Birk a, , Holger Kenn a , Luc Steels b a International University Bremen, Campus Ring 1, 28759 Bremen, Germany b Vrije Universiteit Brussel, AI-Lab, Pleinlaan 2, 1050 Brussels, Belgium Abstract The so-called CubeOS is a special software environment for behavior-oriented robotics. It ranges from a dedicated nano- kernel and hardware drivers for a broad set of sensors and actuators over operating system support for concurrent and real-time programming to a special high-level language suited for novices in the field. As most special feature, the CubeOS framework includes a novel scheduler, designed for the particular needs of behavior-oriented robotics. © 2002 Published by Elsevier Science B.V. Keywords: Real time; Scheduling; Control; Operating system; Behavior-oriented 1. Introduction The field of robotics has undergone tremendous changes since the mid-eighties on the commercial as well as on the scientific side. The robotics market until the mid-eighties was almost completely dominated by robot-arms used in industrial manufacturing. Mean- while, service robots [25], edutainment robots [1], and various smaller niches [8] broadened and extended the robotics market. On the scientific side, the novel branch of the so-called behavior-oriented robotics [4] emerged, following Brooks’ famous critique on “classic” AI and robotics [16,17,19]. These two si- multaneous shifts in focus, sometimes even dubbed revolutions, came along with a series of fundamental up to philosophical debates. Especially, the notion of “behavior”, which runs as a red thread through both shifts, is used within a wide range of interpre- tations and definitions as pointed out for example in [32]. Corresponding author. E-mail address: a.birk@iu-bremen.de (A. Birk). As behavior-oriented robotics and its applications become more and more mature, it is time to focus on efficient implementations of its principles instead of keeping on discussing what these principles are. Here, we deal with a “behavior” from a software engineer- ing viewpoint, namely as a software process with a particular set of properties. The most important one is that several behaviors can be “active” at the same time. From a practical viewpoint, this means that behav- iors must be executed in (pseudo-)parallel, i.e., there must be support for concurrent programming. In ad- dition, a software environment for behavior-oriented robotics obviously deals with control. Hence, there must be support for real-time processes, ensuring guaranteed time-related qualities of service. Existing behavior-oriented programming languages like the subsumption architecture [17,18] or motor schemas [2,3] came out of early scientific work in this field. Accordingly, they did not incorporate any consider- ations on efficiency or software engineering, forcing the user to do a lot of hand-tailoring for each partic- ular application. As a consequence, these languages are not widely distributed. Instead, the complete software environment for every behavior-oriented 0921-8890/02/$ – see front matter © 2002 Published by Elsevier Science B.V. PII:S0921-8890(02)00198-7