RAFCON uses hierarchical state machines, featuring concurrent state execution, to represent robot programs. It ships with a graphical user interface supporting the creation of state machines and contains IDE like debugging mechanisms.

What RAFCON can do for you

RAFCON: visual state machine programming

RAFCON (RMC advanced flow control) is a software tool that allows for visual programming of hierarchical state machines, using a feature-rich graphical user interface (GUI). It is programmed in Python, which is an interpreted language that relieves one from compiling and makes it possible to alter a state machine, even while it is running. Python eases the integration of heterogeneous components of a robotic system written in different languages. The novel visualization of hierarchical state machines together with sophisticated debugging mechanisms permit fast prototyping and intuitive task development with closed loop system tests, without the need of deep programming skills. The architecture enables the collaboration in a team on a single state machine. We proved all this during the SpaceBotCamp competition.

RAFCONs intuitive visual interfaceWith RAFCON, state machines can be created using an intuitive visual interface

Main features

Universal application
: RAFCON is written in Python, can be extended with plugins and is hard- and middleware independent.

Visual programming
: The sophisticated graphical editor can be used for the creation, execution and debugging of state machines.

Collaborative working
: Share and reuse your state machines in form of libraries, stored as JSON strings in text files.

RAFCON state machine creationWith RAFCON, state machines can be created using an intuitive visual interface


The core of RAFCON, its state machine concept, is separated from the GUI. Its API can be used for the programmatic creation of state machines. These state machines can be hierarchically organized and allow for concurrency. With libraries, state machines can be reused in other task flows. The data flow is explicitly defined using data ports and their interconnections. Also, the execution is flexible: (back-)stepping, pausing, jumping and more is possible.


RAFCON Graphical User InterfaceWith RAFCON, state machines can be created using an intuitive visual interface

The RAFCON GUI allows to fully create and modify state machines. This is a big advantage to SMACH, for example. The modification history enables you to go back in time if errors were made. Furthermore, the user interface can be used to debug a state machine e.g. by using the execution history and the logging view. The graphical editor shows nested states smaller than their parents. Thus, unimportant details are hidden but can be accessed anytime by intuitive navigation mechanisms like zooming and panning.

Logo of RAFCON
Programming languages
  • Python 96%
  • SCSS 4%
  • EPL-1.0
</>Source code

Participating organisations

German Aerospace Center (DLR)