artistic title image


Back to Software Spotlights Overview


German Aerospace Center (DLR)

Contributing organisations


visual programming robotics state machines collaboration

Research field

Aeronautics, Space and Transport

Scientific community



  • Helmholtz
  • EU

Programming Languages










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 interface With 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 creation With 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 Interface With 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.

Back to Software Spotlights Overview