Förderjahr 2019 / Project Call #14 / ProjektID: 4647 / Projekt: netRob
Unser derzeitiger Fokus im Projekt liegt auf der grafischen Roboterprogrammierung. Wie schon erwähnt, verwenden wir hierfür Blockly von Google (https://developers.google.com/blockly).
Diese grafische Programmiersprache inklusive visuellem Code-Editor ermöglicht es Programmierkonzepte von Schleifen, Variablen und logischen Ausdrücken etc. einfach mittels Drag-and-Drop von sogenannten Funktionsblöcken zu erstellen ohne sich um korrekte Syntax sorgen zu müssen. Deswegen lässt sich Blockly ideal als Werkzeug für erste Programmiererfahrung nutzen. Blockly läuft übrigens vollständig im Web-Browser und ist weiters als Open-Source Bibliothek ideal für unsere Zwecke.
Unter der Haube generiert Blockly Programmcode in jeglicher Programmiersprache – in unserem Falle natürlich wieder Javascript für den Browser. An dieser Stelle setzt unsere derzeitige Entwicklung an, indem wir uns für netRob viele Gedanken gemacht haben, welche visuellen Funktionsblöcke zur Roboterprogrammierung für unsere Nutzer zur Verfügung stehen sollen. Unsere eigenen Funktionsblöcke erweitern dabei die Standardblöcke von Blockly welche beispielsweise den Umgang mit Variablen, Schleifen, etc. ermöglichen. Diese von uns definierten Funktionsblöcke umfassen somit eine Beschreibung des jeweiligen Funktionsblocks als auch welchen Code der jeweilige Funktionsblöck generieren soll.
Im Wesentlichen haben wir 4 Hauptgruppen an Funktionsblöcken spezifiziert: Bewegungsblöcke, Toolblöcke und Blöcke für Vektor- und Rotationsfunktionen. Die Bewegungsblöcke sollen elementare Bewegungen über kürzeste Pfade oder entlang von Linien/Kreisen über absolute Koordinaten mit Tool-Ausrichtung ermöglichen beziehungsweise Tool-Verschiebungen relativ zur aktuellen Pose. Toolblöcke ermöglichen die Interaktion mit einem/mehreren verschiedenen Werkzeugen wie beispielsweise Parallelgreifern oder Sauggreifern. Nachdem die verschiedenen Bewegungen stark auf Vektoren und Vektoroperationen aufbauen, wird hierfür ein eigener Datentyp für Vektoren und Rotationen benötigt. Das spannendste dabei ist natürlich die intuitive Definition der Blöcke, sodass beispielsweise komplexe 4x4-Matrix-Multiplikationen, wie sie bei der Kombination zweier Roboterposen vorkommen, über simple Funktionsblöcke einfach verständlich verwendbar sind - ohne fortgeschrittenes algebraisches Verständnis.