rafcon

RAFCON (RMC advanced flow control) 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. Alternatively, state machines can programmatically be generated using RAFCON's API.

https://github.com/dlr-rm/rafcon

Science Score: 62.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    15 of 26 committers (57.7%) from academic institutions
  • Institutional organization owner
    Organization dlr-rm has institutional domain (rm.dlr.de)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.2%) to scientific vocabulary

Keywords

graphical-programming robotics state-machine
Last synced: 6 months ago · JSON representation ·

Repository

RAFCON (RMC advanced flow control) 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. Alternatively, state machines can programmatically be generated using RAFCON's API.

Basic Info
Statistics
  • Stars: 195
  • Watchers: 18
  • Forks: 36
  • Open Issues: 20
  • Releases: 28
Topics
graphical-programming robotics state-machine
Created almost 9 years ago · Last pushed 7 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Authors Zenodo

README.rst

RAFCON
======

.. figure:: documents/assets/Screenshot_Drill_Skill_Scaled.png
   :figwidth: 100%
   :width: 800px
   :align: left
   :alt: Screenshot showing RAFCON with a big state machine
   :target: documents/assets/Screenshot_Drill_Skill_Scaled.png?raw=true

* Documentation: Hosted on `Read the Docs `_
* Homepage: `DLR-RM.github.io/RAFCON/ `_
* License: `EPL `_
* Cheatsheet: `Download Cheatsheet `_

Develop your robotic tasks using an intuitive graphical user interface
----------------------------------------------------------------------

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. Alternatively, state machines can programmatically be generated
using RAFCON's API.

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.

.. figure:: https://raw.githubusercontent.com/DLR-RM/RAFCON/master/documents/assets/RAFCON-sm-creation-preview.gif
   :figwidth: 100%
   :width: 570px
   :align: left
   :alt: Example on how to create a simple state machine


Installation preparations
-------------------------

Before installing RAFCON, Python >=3.7, pip and setuptools are required on your system. Most of the other dependencies
are automatically resolved by pip/setuptools, but not all of them. Those need be be installed manually, too:

Installation requirements
^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: bash

   sudo apt-get install python-dev python-pip build-essential glade python-gi-cairo
   sudo -H pip install --upgrade pip
   sudo -H pip install --upgrade setuptools

General requirements
^^^^^^^^^^^^^^^^^^^^

* Python >=3.7
* pip (recent version required: v23 known to be working)
* pdm (recent version required: v2.9.3 known to be working)


Installing RAFCON
-----------------

.. code-block:: bash

   pip install rafcon --user

The ``--user`` flag is optional. If not set, RAFCON is installed globally (in this case you normaly need to have root privileges).

If during the installation the error ``ImportError: No module named cairo`` occurs, please install pycairo directly
via:

.. code-block:: bash

   pip install --user "pycairo==1.19.1"

Of course you can also directly use the RAFCON sources from GitHub.

.. code-block:: bash

   cd /install/directory
   git clone https://github.com/DLR-RM/RAFCON rafcon


Start RAFCON
------------

No matter which installation option you choose, RAFCON can be started from any location using (make sure
``/usr/local/bin`` or ``~/.local/bin`` is in your ``PATH`` environment variable):

.. code-block:: bash

   rafcon

On a multi-python setup start rafcon using:

.. code-block:: bash

   python -m rafcon


Uninstallation
--------------

If you want to uninstall RAFCON, all you need to do is call

.. code-block:: bash

   pip uninstall rafcon

Owner

  • Name: DLR-RM
  • Login: DLR-RM
  • Kind: organization
  • Location: 48.08329, 11.27507

German Aerospace Center (DLR) - Institute of Robotics and Mechatronics (RM) - open source projects

Citation (CITATION.cff)

# YAML 1.2
---
cff-version: "1.2.0"
message: "If you use this software, please cite it using these metadata."
title: RAFCON
version: 2.2.1  # Handled by bump2version
date-released: 2025-01-27
license: EPL-1.0
doi: "10.5281/zenodo.1493058"
authors:
  -
    affiliation: "German Aerospace Center (DLR)"
    family-names: Belder
    given-names: Rico
    orcid: "https://orcid.org/0000-0002-9733-4108"
    email: rico.belder@dlr.de
  -
    affiliation: "German Aerospace Center (DLR)"
    family-names: Brunner
    given-names: "Sebastian Georg"
    orcid: "https://orcid.org/0000-0001-9359-3703"
    email: sebastian.brunner@dlr.de
  -
    affiliation: "German Aerospace Center (DLR)"
    family-names: Steinmetz
    given-names: Franz
    orcid: "https://orcid.org/0000-0002-1481-9215"
    email: franz.steinmetz@dlr.de
repository-code: "https://github.com/DLR-RM/RAFCON/"
url: "https://dlr-rm.github.io/RAFCON/"
abstract: "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. Alternatively, state machines can programmatically be generated using RAFCON's API."
keywords:
  - "robot framework"
  - "state machine"
  - "visual programming"
  - "graphical programming"
  - development
  - robotics
  - FSM
  - GUI
references:
  - type: proceedings
    scope: "Cite this paper if you want to reference the general concepts of RAFCON."
    authors:
      - family-names: Brunner
        given-names: "Sebastian Georg"
      - family-names: Steinmetz
        given-names: Franz
      - family-names: Belder
        given-names: Rico
      - family-names: Dömel
        given-names: Andreas
    title: "RAFCON: A graphical tool for engineering complex, robotic tasks"
    year: 2016
    conference:
        name: "IEEE Int. Conf. Intelligent Robots and Systems (IROS)"
        date-start: 2016-10-09
        date-end: 2016-10-14
    doi: 10.1109/IROS.2016.7759506
    start: 3283
    end: 3290
...

GitHub Events

Total
  • Fork event: 4
  • Create event: 7
  • Commit comment event: 3
  • Release event: 1
  • Issues event: 55
  • Watch event: 14
  • Delete event: 2
  • Member event: 2
  • Issue comment event: 50
  • Push event: 44
  • Pull request review event: 2
  • Gollum event: 3
  • Pull request event: 7
Last Year
  • Fork event: 4
  • Create event: 7
  • Commit comment event: 3
  • Release event: 1
  • Issues event: 55
  • Watch event: 14
  • Delete event: 2
  • Member event: 2
  • Issue comment event: 50
  • Push event: 44
  • Pull request review event: 2
  • Gollum event: 3
  • Pull request event: 7

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 7,853
  • Total Committers: 26
  • Avg Commits per committer: 302.038
  • Development Distribution Score (DDS): 0.577
Top Committers
Name Email Commits
Franz Steinmetz f****z@d****e 3,324
Rico Belder r****r@d****e 1,858
Sebastian Brunner s****r@d****e 1,080
Sebastian Brunner S****r@d****e 523
Matthias Buettner m****r@d****e 267
Vahid Mohammadi Gahrooei v****i@a****m 235
Sebastian s****r@g****m 108
Lukas Becker l****r@d****e 104
Mahmoud Akl m****l@d****e 72
Benno Voggenreiter b****r@d****e 48
e.nakhle e****e@a****m 47
Sebastian Riedel s****l@d****e 33
Michael Vilzmann m****n@d****e 31
Sebastian Brunner s****r@h****e 24
Annika Wollschlaeger a****r@d****e 23
Juan José Martínez Moritz j****z@a****m 18
suer_ch c****g@d****e 18
h.umari h****i@a****m 10
CSuerig C****g@g****m 7
e.nakhle e****e@a****m 7
Darío Hereñú m****a@g****m 6
Steinmetz, Franz F****z@d****e 3
tw t****r@r****e 2
Sebastian Brunner s****r@a****m 2
ried_sa S****l@d****e 2
Albern S a****i@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 173
  • Total pull requests: 46
  • Average time to close issues: almost 3 years
  • Average time to close pull requests: 4 months
  • Total issue authors: 20
  • Total pull request authors: 10
  • Average comments per issue: 2.02
  • Average comments per pull request: 2.43
  • Merged pull requests: 33
  • Bot issues: 0
  • Bot pull requests: 4
Past Year
  • Issues: 3
  • Pull requests: 8
  • Average time to close issues: 17 days
  • Average time to close pull requests: about 3 hours
  • Issue authors: 3
  • Pull request authors: 2
  • Average comments per issue: 2.67
  • Average comments per pull request: 0.13
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • franzlst (146)
  • sebastian-brunner (5)
  • sillkjc (4)
  • JohannesErnst (4)
  • jeffRowley321 (3)
  • brta-jc (3)
  • SebastianRiedel (1)
  • Hytac (1)
  • BMaxV (1)
  • vanem (1)
  • mfrigerio17 (1)
  • gilopez01 (1)
  • PabloDArandaR (1)
  • fwollatz (1)
  • ovari (1)
Pull Request Authors
  • JohannesErnst (33)
  • vahidm1993 (6)
  • sebastian-brunner (5)
  • dependabot[bot] (4)
  • kant (3)
  • MSherbinii (2)
  • nickswalker (2)
  • CSuerig (1)
  • Elio-Nakhle (1)
  • abnsy (1)
Top Labels
Issue Labels
enhancement (71) gui (70) bug (39) core (31) feature request (28) discussion (28) low priority (24) graphical editor Gaphas (19) tests (15) documentation (8) performance (5) question (4) graphical editor OpenGL (4) critical (4) cannot reproduce (3) duplicate (2) dependencies (1) help wanted (1) target:0.15 (1) windows (1)
Pull Request Labels
dependencies (4)

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 151 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 40
  • Total maintainers: 4
proxy.golang.org: github.com/DLR-RM/RAFCON
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.0%
Average: 8.2%
Dependent repos count: 9.3%
Last synced: 6 months ago
proxy.golang.org: github.com/dlr-rm/rafcon
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 7.0%
Average: 8.2%
Dependent repos count: 9.3%
Last synced: 6 months ago
pypi.org: rafcon

Develop your robotic tasks with hierarchical state machines using an intuitive graphical user interface

  • Versions: 30
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 151 Last month
Rankings
Stargazers count: 5.3%
Forks count: 7.1%
Dependent packages count: 9.8%
Average: 12.4%
Downloads: 18.1%
Dependent repos count: 21.9%
Maintainers (4)
Last synced: 6 months ago

Dependencies

source/pyproject.toml pypi
  • jsonconversion <1.0.0,>=0.2.13
  • numpy ==1.19.5; python_version < "3.7"
  • numpy ==1.21.6; python_version >= "3.7" and python_full_version < "3.7.1"
  • numpy <2.0.0,>=1.22.4; python_version >= "3.8" and python_version < "4.0"
  • pandas ==1.1.5; python_full_version < "3.7.1"
  • pandas <2.0.0,>=1.2.0; python_full_version >= "3.7.1"
  • psutil <6.0.0,>=5.0.0
  • simplegeneric <1.0.0,>=0.5.0
  • yaml-configuration <1.0.0,>=0.2.5
pyproject.toml pypi