RAFCON
RAFCON (RMC advanced flow control) ist ein Softwarewerkzeug, das es ermöglicht, hierarchische Zustandsmaschinen (engl. "state machines") mit Hilfe einer funktionsreichen grafischen Benutzeroberfläche (GUI) visuell zu programmieren. Es ist mit der Interpretersprache Python programmiert. Da diese nicht kompiliert werden muss, können Zustandsmaschinen sogar während ihrer Ausführung modifiziert werden. Darüber hinaus erleichtert Python die Integration verschiedener, heterogener Komponenten eines robotischen Systems, die in verschieden Sprachen geschrieben sein können. Die neuartige Visualisierung von hierarchischen Zustandsmaschinen im Zusammenspiel mit ausgereiften Debugwerkzeugen ermöglicht es, Ideen schnell umzusetzen und zu testen, ohne dass tiefgehende Programmierkenntnisse nötig sind. RAFCON unterstützt die kollaborative Entwicklung von einzelnen Zustandsmaschinen. Während des SpaceBotCamp-Wettbewerbs wurde die Funktionstüchtigkeit unseres Softwarewerkzeugs unter Beweis gestellt.
Kern
Der Kern von RAFCON, das Konzept der Zustandsmaschine, ist getrennt von der grafischen Darstellung. Die Programmierschnittstelle (API) kann somit zur programmatischen Erstellung von Zustandsmaschinen benutzt werden. Diese Zustandsmaschinen können hierarchisch organisiert sein und Nebenläufigkeiten enthalten. Mittels eines Bibliothekskonzepts für Zustände können einmal erstellte Zustandsmaschinen in anderen Abläufen wiederverwendet werden. Der Datenfluss innerhalb einer Zustandsmaschine ist dabei durch Datenports und Datenflüsse explizit definiert. Darüber hinaus ist die Ausführung sehr flexibel: (Rückwärts-)Schritte, Pausen, Sprünge und weitere Eingriffsmöglichkeiten werden unterstützt.
Grafische Benutzeroberfläche (GUI)
Die GUI von RAFCON erlaubt (neben der API) die komplette Erstellung und Modifikation von Zustandsmaschinen von Hand. Dies ist ein großer Vorteil gegenüber z. B. SMACH. Die Bearbeitungshistorie ermöglicht es, in der Zeit zurückzugehen, wenn Fehler gemacht wurden. Darüber hinaus kann die Oberfläche zum Debuggen einer Zustandsmaschine genutzt werden, etwa mit Hilfe der Ausführungshistorie und der Logbuchausgabe. Der grafische Editor zeigt verschachtelte Zustände kleiner als ihre übergeordneten Zustände. Damit werden unwichtige Details ausgeblendet, die jedoch jeder Zeit über intuitive Navigationsmechanismen, wie Zoomen und Verschieben wieder hervorgeholt werden können.
Open Source
RAFCON ist unter einer Open-Source-Lizenz auf GitHub veröffentlicht, siehe https://github.com/DLR-RM/RAFCON.