Lua-based Behavior Engine

The Lua-based Behavior Engine (BE) is a module to implement a reactive behavior layer that implements basic skills and provides them to a higher-level task coordination system (like the CLIPS-based agent). It acts as a gateway to lower-level actions (like locomotion) for this higher-level system and supports it by reducing the potential search space by allowing for the composition of more complex (but still reactive) skills. This layer separation allows for a certain amount of abstraction of the underlying platform.

The BE models skills as hybrid state machines, directed graphs where actions are executed in states and boolean jump conditions denote state changes. It has been implemented in the Lua programming language which has certain characteristics which allow the BE to emphasize a declarative style of behavior over programming, while still allowing for the power of a scripting language where necessary and useful. It employs several techniques, like a background variable table, to cope with the typical problem of state explosion of regular state machines. For the behavior developer, the Behavior Engine provides an environment to develop, execute, and monitor robot behavior. As a convenience for simple scenarios, an agent employing the same concepts is part of the BE.

The BE has been implemented for Fawkes (wiki), and ROS (wiki). On ROS, it uses roslua to interact with other nodes.

The BE was originally developed at the Knowledge-based Systems Group of the Computer Science Department of the RWTH Aachen University. The BE has been ported to ROS as part of Tim Niemueller's work during a visit to the Personal Robotics Lab at The Robotics Institute of the Carnegie Mellon University working on HERB with Prof. Siddhartha Srinivasa and was sponsored by an Intel Summer Fellowship.



There is a video of a talk about the port of the Fawkes behavior engine to ROS, given in September 2010 at Willow Garage. It is embedded below, a higher resolution version is available on Vimeo.


This work was partly supported by the Quality of Life Technology Center at The Robotics Institute of the Carnegie Mellon University. T. Niemueller was partly supported by the Intel Summer Fellowship 2010 and by the German National Science Foundation (DFG) with grant GL747/9-5.