3. List of Features

In the following, all features of RAFCON are listed and categorized into either Core, GUI, Consistency Check or Misc. All listed features have their own, dedicated unit tests.

3.1. Core Features

Features

Notes

State Machines

Formal definition

Hierarchies

For easy behavior modularization

Concurrencies

Barrier and preemptive paradigm

Library States (Libraries)

For code reusability

Data Flows + Data Ports

For explicit data modeling

Default Values for Data Ports

Scoped Variable Concept

Private, scoped and global data

Every State Machine can be used as Library

Without any overhead

Execution Capabilities:

IDE like debugging mechanism

  • Start, Stop, Pause

  • Step Mode: Into, Over, Out

  • Backward Step

Optionally definable in each state

  • Execution History

  • Execution History Logging

  • Explicit Preemption Handling

  • Error Propagation

  • Execution Signals and Preemptive Waits

Remote Monitoring

Via Monitoring-Plugin

Dynamic Modifications Possible

API for Programmatic State Machine Generation

Customizable Logging Features

3.2. GUI Features

Features

Notes

State Machine Visualizer

Using Gaphas

State Machine Editor

  • Creation of State Machines Elements

  • Navigation inside State Machine incl. Zoom

MVC Concept

State Templates

For fast prototyping

Separate Visualization of Data Flows

Rearrangeable Ports

Waypoints for Connections

Focusable States

Executing States are Highlighted

Embedded Source Code Editor

Code Syntax Check

Library Tree

State Machine Tree

Enables easy state selection

Modification History

Online Execution History

State Description

Name, ID, type, link to library

Logging Console View

Design by Professional Interface Designers

In GTK3, css will be used

Resizeable, Detachable and Foldable Widgets

Restoring of User Specific GUI Layout

Library Relocation Support Mechanism

Dialog Boxes for User Communication

Menu for Recently Opened State Machines

Properties Window

Session Restore

Shortcut Manager

Library Content Introspection

i.e. show-content-flag per library state

Editor Utility Functions:

  • Copy + Paste

  • Grouping and Ungrouping of States

  • Drag and Drop of States

  • State Type Change

  • Intelligent Auto State Connector

e.g. connect income/outcome with closest sibling

3.3. Consistency Checks

Features

Notes

Data Type Check

Data Flow Validity

Hierarchical Consistency

E.g. no connection to grandparents

Data Integrity Check During Runtime

Errors in Python Scripts are Caught

And forwarded to the next states as datum

Library Interface Consistency

3.4. Misc Feat

Features

Notes

State Machine Versioning

Via git

Human Readable File Format

json and yaml

Programmable in Python

Python 3

Middleware Independent

Tested with: ros, links and nodes, sensornet, and DDS

Core and GUI Separated

Core can run on micro-controller with slim Python setup

Extensive Documentation

Via Restructured Text (rst) and Sphinx

Plugin Concept

Several plugins available

Backward Compatibility

Breaking changes are clearly outlined

No Memory Leaks

See test_destruct.py in tests folder

Continuous Integration

Buildbot / Jenkins

Usable in Different Robotic Domains

Used in: Space, Industry, Service

Scalability: Tested with >4000 states

Video Tutorials

Youtube (only one available, more to come)