[Documentation] [TitleIndex] [WordIndex

Stack Summary

This stack provides the Behavior Engine, an environment to develop, execute, and monitor robot behavior. It uses Lua to create this environment, and in particular roslua to interact with ROS. It has been ported from the Fawkes robot software framework. We aim to provide an environment, which eradicates as many differences from the underlying base system as possible, to have a unified development environment for robotic behavior on both robot software systems.

The behavior engine and its underlying concepts has been described in the paper "A Lua-based Behavior Engine for Controlling the Humanoid Robot Nao", and to a greater detail in the master's thesis of Tim Niemueller (Knowledge-based Systems Group at the RWTH Aachen University).

The behavior engine has been ported to ROS as part of Tim Niemueller's work during a visit to the Carnegie Mellon University, working on HERB at the Personal Robotics Lab at Intel with Prof. Siddhartha Srinivasa.

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.


The following packages are included in this stack:

  • This package is used to make actionlib actions available in the Lua environment. Actionlib is the main interaction entity with the underlying base system on ROS. (actionlib_lua)

  • Lua code ported straight from Fawkes, provding general utilities and finite and hybrid state machines. (fawkes_lua)

  • C++ utility classes to interact with the Lua interpreter context, ported straight from Fawkes. (lua_utils)

  • The skill execution and runtime environment is the core of the behavior engine. It provides the Lua environment for developing, executing, and monitoring skills, reactive execution entities. (skiller)

  • The concept of reactive execution of the skiller has been applied to the high-level task description for easy prototyping and testing the skiller interaction with high-level agents. This package provides the run-time environment for such agent programs. (luaagent)

  • A GUI application to instruct and monitor skiller and luaagent. It can display the state machines and execution trace in real-time. (skillgui)

  • A package containing several skills for HERB, the Home Exploring Robot Butler at Intel Labs Pittsburgh. Although specific to the particular platform and domain, it can still serve as a documenting example. (herb_skills)



The Behavior Engine requires roslua to interact with ROS. Please download it separately and make sure that it is working properly.

There are several packages required on your local system by the packages that compose this stack. The easiest way to get everything needed is to use rosdep, as all dependencies have been properly documented. Execute: rosdep satisfy behavior_engine.


Download the behavior_engine stack and add it to your ROS package path with:

git clone git://github.com/timn/ros-behavior_engine.git behavior_engine
cd behavior_engine
git submodule update --init

Ensure that roslua is working on your system by executing the examples that come with it. Also call rosdep as described above to install the system dependencies. Then build the software with rosmake behavior_engine.


The source code of all modules is fully documented (API). Guides and more descriptive is currently work in progress.

Report a Bug

Reports bugs at https://github.com/timn/ros-behavior_engine/issues

2024-07-06 12:37