ArmarX Documentation
The Statechart Editor
ArmarXSimulation Overview


The robot software development environment ArmarX aims at providing an infrastructure for developing a customized robot framework that enables the realization of distributed robot software components. To this end, ArmarX is organized in three layers: the middleware layer which provides core features such as communication methods and deployment concepts, the robot framework layer which consists of standardized components that can be tailored to customize the robot software framework, and the application layer where robot programs are implemented. This layered architecture eases the development of robot software architectures by making use of standard interfaces and ready-to-use components which can be customized, extended and/or parametrized according to the robot’s capabilities and application. To support the development process, ArmarX provides a set of tools such as plug-in-based graphical user interfaces, a statechart editor, and tools for online inspection and state disclosure. ArmarX is being developed at the H²T lab at the Karlsruhe Institute of Technology (KIT).

ArmarX is open source and available at:

Getting Started

ArmarX Design Principles

  • Disclosure of Internal State
  • Extensive Support for Introspection and Debugging
  • Graphical editing of Control- and Dataflow
  • Interface Definition Language (IDL) for unified interfaces
  • Distributed Communication
  • Shared, Distributed Resources
  • Heterogenous Environments (C++, Java, Python, ...)

Structure of ArmarX

From robotics point of view ArmarX can be seen as 3 layers:

Layers of ArmarX

Robot Memory consisting of prior knowledge, long-term and working memory

High level: Coordination of low and mid level via statecharts and symbolic planning

The structural overview of ArmarX from software point of view looks as follows:

As illustrated above ArmarX is organized in different layers:

  • Middleware Layer
    The Middleware Layer implements all facilities to realize distributed applications. It abstracts the communication mechanisms, provides basic building blocks of the distributed application, and provides entry points for visualization and debugging. With ArmarX RT a bridge to real time components can be established, as it is needed for accessing low level robot control modules.
    The following projects are related to the ArmarX Middleware:
  • Robot Framework Layer
    The Robot Framework Layer comprises several projects which provide access to sensori-motor capabilities on a higher level. These projects include memory (MemoryX), robot and world model, perception (VisionX), and execution modules. The basic building blocks of the Middleware Layer are specialized in the robot API for the different functionalities provided by the Robot Framework Layer. By means of extension and further specialization, a robot specific API can be implemented by the developer. Usually, such robot specific APIs include interface implementations for accessing the lower sensori-motor levels and models dedicated to the actual robot. Depending on the application, this layer can also include specialized memory structures, instances of perceptual functions, and control algorithms.
    The following projects are related to the ArmarX Robot Framework Layer:
  • Application Layer
    In the Application Layer, the final robot program is implemented as a distributed application, making use of the generic and specific robot APIs.
    The following projects are related to the ArmarX Application Layer:
  • ArmarX Toolset
    The ArmarX Toolset provides several tools to ease the development of robot applications. The toolset comprise graphical user interfaces, world and state chart editors and inspection tools.
    The following projects are related to the ArmarX Toolset:

Main publications

  • N. Vahrenkamp, M. Wächter, M. Kröhnert, K. Welke and T. Asfour, The Robot Software Framework ArmarX, it - Information Technology. Vol. 57, No. 2, pp. 99 – 111, March 2015 [PDF] [DOI]
  • M. Wächter, S. Ottenhaus, M. Kröhnert, N. Vahrenkamp and T. Asfour (2016), The ArmarX Statechart Concept: Graphical Programming of Robot Behaviour, Front. Robot. AI 3:33. [PDF] [DOI]