The Statechart Editor is a powerful and convenient tool to design complex behavior. It is deeply integrated into ArmarX and tailored onto it. It allows the user to design hierarchical, distributed statecharts inspired by Harel, 84 [1] in a graphical way and generate and connect it directly with C++ code. For a step-by-step tutorial refer to: Basic Statechart Editor Tutorial

A detailed explanation of ArmarX Statecharts can be found in the publication:
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. [DOI]

[1]: David Harel: Statecharts: A Visual Approach to Complex Systems, CS84-05, Department of Applied Mathematics, The Weizmann Institute of Science, 1984

See also
ArmarX Statecharts
Basic Statechart Editor Tutorial

Statechart Execution from the Statechart Editor

Statecharts are always executed as part of their statechart group. There are two different ways to execute a statechart group:

  • From the Statechart Editor directly: In the context menu of the statechart group it is possible to execute a statechart group directly. This option is meant for quick testing of statecharts. All statechart group dependencies are automatically also executed (they need to be loaded in the current session of the Statechart Editor for this). Before execution a public state that should immediately be entered can be selected. Note that this state must not need any input paramters.
  • Starting a statechart group with a scenario: The usual way to start a statechart group is as part of a scenario. For this option, it is possible to drag'n'drop a statechart group from the Statechart Editor to the /ScenarioManager.conf. The statechart group needs to be dropped on an open scenario. It is then fully parameterized and ready to be started. Note that for this option all statechart group dependencies need to be added to the scenario manually as well. In the properties of the statechart group it is possible to define a set of state that should be entered automatically. These states will run in parallel.

Statechart Editor Intro: Making Armar wave in 4 minutes

In this video, the Statechart Editor used to program a simple statechart that makes Armar3 wave. This demonstrates the basic features of the Statechart Editor. There was nothing prepared except starting the simulation and getting the needed joint values for the arm joints.

Editing the runtime configuration of a statechart group

Statecharts groups need like component often parameters to work with one specific robot. For statechart groups this can be done with the Statechart Editor. In this video, it is shown how to setup the configuration for one group. This configuration is then always applied when starting the statechart group.

Cloning a statechart group to another package

Direct mapping of parameters during transitions