FWBI

IGF - Projekt ProKon - (Service) Robotik Programmieren durch Konfigurieren

Förderkennzeichen:  18620N

Projektleitung: Prof. Dr. Alex Gräser (+49 177 79 79 036)

Ansprechpartner: Dr. Olena Kuzmicheva

Projektbegleitender Ausschuss

bvSys Bildverarbeitungssysteme GmbH (www.bvsys.de)

mevisco GmbH & Co. KG (www.mevisco.de)

AKON Robotics (www.akon-robotics.de)

NT Projektmanagement (www.nt-projektmanagement.com)  

ICR Ingenieurbüro Christoph Rüsch GmbH (www.icruesch.de)

Robotik Pack Line (www.robotik-pack-line.de)

ECOMA Maschinenbau GmbH (www.ecoma-maschinenbau.de)  

Vorwig GmbH (www.vorwig-gmbh.de)  

BCM - Bremer Centrum für Mechatronik (www.mechatronik-bcm.de)

Beschreibung des Projektes

Das Ziel des Vorhabens ProKon ist es, eine visuelle Programmierumgebung, sogenannte SkillNets, zu erforschen und zu entwickeln, die das Programmieren von komplexen Abläufen und Handlungen in einem sensorgestützten Robotersystem durch Konfigurieren ersetzt und die Kosten, die für die Erstellung neuer oder die Anpassung bestehender Lösungen an ähnliche Aufgabenstellungen entstehen, deutlich senkt. Im Gegensatz zu existierenden Werkzeugen, welche jeweils nur einen Teil der geforderten Funktionalitäten anbieten, wird das neue Werkzeug eine integrierte Lösung für die Entwicklung und Modellierung beliebiger Robotiksysteme darstellen und so deutliche wirtschaftliche Vorteile insbesondere für herstellerunabhängig arbeitende KMUs erbringen.

 

Das Tool SkillNets basiert auf dem Konzept der Funktionsblocknetzwerke und ermöglicht die Handlungsabläufe abstrakt zu modellieren. Dabei können folgende Anforderungen erfüllt werden:

  • Grafischer Designer zum Modellieren und Testen der Funktionsblocknetze mit einem integrierten Betrachter für Ausgaben der Blöcke, z.B. Werte, Bilder, 3D Umgebung
  • Ermöglichung hierarchischer Strukturen und Abläufe, Integration von Verzweigungen und Rückkopplungen im Ablauf
  • Regelkreise auf der Basis von bildgebenden Sensoren und Kraft-/Momenten-Sensoren und der integrierten Möglichkeit zwischen diesen Regelkreisen stoßfrei umzuschalten und hierarchische Regelkreise aufzubauen
  • Eine flexible Schnittstelle für den Datenaustausch zwischen Blöcken
  • Hohe Ausführungsgeschwindigkeit der Netze
  • Einfache Erweiterung durch ein Plug-In-System für neue Blöcke
  • Einfache Einbettung der generierten Netze in C++ Code
  • Einfache Schnittstelle zur schrittweisen Integration von HW („Hardware in the loop“) bei komplexen Systemen.

 

Der Nachweis, dass die neuen Methoden und Tools wesentliche Vorteile erbringen und damit wesentliche Ziele des Vorhabens erreicht werden, wird in verschiedenen Anwendungsszenarien mit entsprechenden Demonstratoren erbracht.

Förderung

Laufzeit: Februar 2015  bis März  2017

Gefördert durch: Bundesministerium für Wirtschaft und Technologie Das IGF-Vorhaben 18620N der Forschungsvereinigung DFMRS e.V. wird über die AiF im Rahmen des Programms zur Förderung der Industriellen Gemeinschaftsforschung (IGF) vom Bundesministerium für Wirtschaft und Technologie aufgrund eines Beschlusses des Deutschen Bundestages gefördert. Gefördert durch: AiF Arbeitsgemeinschaft industrieller Forschungsvereinigungen „Otto von Guericke“ e.V.

Projektergebnisse

SkillNets-Basisrahmenwerk und Designer

SkillNets ist ein grafisches Modellierungs- und Programmierwerkzeug. Das Rahmenwerk besteht aus zwei wesentlichen Komponenten, der SkillNets – Logik und dem SkillNets – Designer.

Die SkillNets-Logik ist für die Ausführung der Algorithmen zuständig und bleibt vor dem Endnutzer verborgen. Für die Endnutzer wird der SkillNets-Designer bereitgestellt, der das grafische Modellieren und Programmieren durch den Einsatz von vorprogrammierten Funktionsblöcken ermöglicht. Die Funktionsblöcke oder Funktionsbausteine stellen Basisfunktionalitäten bereit, aus denen Funktionsblocknetze gebildet werden. Die Funktionsblöcke können Eingangs- und Ausgangsports haben, über die der Datenaustausch mit anderen Blöcken erfolgt. Die Konfiguration der Funktionsbausteine erfolgt über ihre Eigenschaften, die bei der Erstellung der Funktionsblöcke von Programmierern, die diese Basisfunktionalitäten entwickeln, definiert werden müssen. Die Funktionsblöcke werden miteinander über ‚Links‘ verbunden, die einen kombinierten Daten- und Kontrollfluss definieren. Die Abbildung unten zeigt ein Beispielnetz, das im SkillNets-Designer zusammengestellt wurde. In dem Hauptfenster werden die SkillNets für die gewünschten Szenarien durch Zusammensetzen von Elementarfunktionen, die in grafisch darstellbaren Blöcken gekapselt sind, erstellt. Auf der rechten Seite werden die Informationen und die Eigenschaften des gerade ausgewählten Blocks eingeblendet. Unter dem Hauptfenster wird der Verlauf der Netzausführung bzw. der Simulation ausgegeben.

tl_files/Bilder/ProKon/Abbildung 1.png

Abbildung 1 SkillNets-Designer

Datencontainer

Datenstrukturen werden zwischen Funktionsblöcken in sog. Datencontainern ausgetauscht, die eine einheitliche Handhabung von Daten innerhalb des Netzwerks durch eine definierte Schnittstelle ermöglichen. Die Container enthalten Informationen zu der Art der darin enthaltenen Daten, sodass diese Daten typsicher in der Datenverarbeitung innerhalb des Blocks verwendet werden können. Damit eine neue Datenstruktur eingeführt werden kann, muss diese durch einen entsprechenden Datencontainer von einem Plugin zur Verfügung gestellt werden. Die Kennzeichnung eines Datencontainers besteht aus dem Typ der Datenstruktur und einem Namen. 

Verzweigungen

Die Verzweigungen werden in SkillNets durch das Aktivieren und Deaktivieren definierter ausgehender Ports eines Funktionsblocks umgesetzt. Deaktivierte Ports zählen als nicht erfüllte Vorbedingungen für die nachfolgenden Funktionsblöcke, sodass diese nicht mit der Datenbearbeitung beginnen können.

tl_files/Bilder/ProKon/Abbildung 2.png

Abbildung 2 Verzweigungen durch Portdeaktivierung

Rückkopplungssystem

Durch das integrierte Rückkopplungs-System des SkillNets kann eine Eigenschaft eines Funktionsbausteins über bestimmte Regeln angepasst werden. Die Rückkopplungs-Einstellungen werden im Designer konfiguriert. Dadurch werden Rückkopplungsschleifen umgesetzt, die z.B. den Aufbau von Regelkreisen ermöglichen.

tl_files/Bilder/ProKon/Abbildung 3.png

Abbildung 3 Rückkopplungsstruktur für die Positionsregelung

Ausführung des Netzes

Die Funktionsblocknetze ​​werden iterativ ausgeführt. Die Funktionsblöcke werden vor der ersten Iteration initialisiert. Die erste Iteration beginnt mit allen Funktionsblöcken, deren Vorbedingungen zur Ausführung erfüllt sind, d.h. alle Eingangsports des Blocks gültige Werte enthalten. Bei einer Rückkopplungsschleife würde diese Bedingung allerdings zu einer unendlichen Schleifenabhängigkeit führen. Um das aufzulösen, werden die Rückkopplungsports als „optional“ definiert. Wenn kein Funktionsbaustein gestartet werden kann und kein Funktionsbaustein aktuell verarbeitet wird, werden die Funktionsbausteine ​​mit der geringsten Menge an unerfüllten Rückkopplungsanschlüssen, einer sog. Vorverarbeitungsgrenze, gestartet. Solange SkillNets nicht so konfiguriert ist, dass der Algorithmus sequentiell verarbeitet wird, werden alle Blöcke gestartet, sobald ihre Vorbedingungen erfüllt sind. Jeder Funktionsblock wird in seinem eigenen Thread verarbeitet. Dabei hängt die eigentliche Parallelität von der Hardware ab, z.B. die Anzahl der CPU-Kerne.

Jeder Funktionsblock der ausgeführt wurde, steuert den operativen Ablauf der nachfolgenden Blöcke. Sollte während der aktuellen Iteration ein Baustein bereits verarbeitet worden sein, so wird dieser Block für die nächste Iteration „geplant“. Dadurch werden lokale Schleifen vermieden und es wird sichergestellt, dass jeder Funktionsblock ausgeführt wird, bevor die nächste Iteration des Netzes beginnt. Nach der letzten Iteration werden alle Funktionsbausteine vor dem Beenden des Netzes de-initialisiert.

Hierarchische Strukturen

Das Rückkopplungsbeispiel (siehe Abbildung 3) repräsentierte einen unendlichen Regelkreis, um einen Ziel-Arbeitspunkt eines Systems zu halten. Weitere Anwendungsmöglichkeiten für Schleifen sind, ein System in einen gewünschten Zustand zu bringen oder Daten mit verschiedenen Verfahren solange iterativ zu verarbeiten, bis das gewünschte Ergebnis erzielt wird. Ein Algorithmus zur Suche eines optimalen Schwellenwerts bei der Segmentierung eines Bildes ist in der Abbildung 4 (oben) dargestellt. Die Prüfung der Schwellwerte erfolgt in einer Rückkopplungsaktion, die für den Funktionsblock "Threshold Segmentation [3]" konfiguriert ist. Als „Indikator“ für das segmentierte Bild wird die Entropie des segmentierten Bildbereiches ausgewählt, die in dem Block "2D Entropy [4]" errechnet wird. Nachdem alle möglichen Schwellwerte getestet worden sind, wird der Wert mit dem besten „Indikator“ in der endgültigen Iteration des Netzes beibehalten und weiterverwendet.

tl_files/Bilder/ProKon/Abbilung 4.png

Abbildung 4 Beispiel einer hierarchischen Struktur in SkillNets

SkillNets-Interaktionsblöcke

Um mit dem Nutzer während der Ausführung eines Netzes zu interagieren, wurden im Rahmen des Projektes verschiedene Interaktionsblöcke implementiert. Dabei werden sowohl einfache Mitteilungen z.B. zum Status der aktuellen Ausführung, ausgegeben als auch eine Möglichkeit implementiert, Eingaben von dem Nutzer zu erfragen. Die Interaktionsblöcke starten dabei Spezialprogramme (UIs), die die Nachrichten Anzeigen, die die Eingaben des Nutzers entgegennehmen und an das aktuell ausgeführte SkillNets übertragen.

tl_files/Bilder/ProKon/Abbildung 5_1.png

UI-Nachricht

tl_files/Bilder/ProKon/Abbildung 5_2.png

UI yes/no

tl_files/Bilder/ProKon/Abbildung 5_3.png

UI Gleitpunktzahl

tl_files/Bilder/ProKon/Abbildung 5_4.png

UI Pose

Abbildung 5 Beispiele für SkillNets-Interaktionsblöcke

SkillNets-Plugins

Als plattformunabhängiges Tool, sollte das SkillNets maximal flexibel entwickelt sein und eine Möglichkeit zur Erweiterung um beliebige domänenspezifische Inhalte bieten. Für diesen Zweck ist in SkillNets das Plugin-System vorgesehen. Die Funktionalität wird ebenfalls in Funktionsblöcken implementiert, die Datencontainer verwenden, um die Daten zwischen den Funktionsblöcken abstrakt zu erfassen und auszutauschen. Die Rückkopplungsbedingungen, Aktionen und Formel-Operationen erweitern dabei die Optionen des Rückkopplungssystems für alle Funktionsblöcke. Diese Flexibilität ermöglicht eine einfache Wiederverwendung von Legacy-Code in SkillNets und erleichtert das Hinzufügen von Funktionalitäten.
Da die SkillNets-Logik stark erweiterbar ist, verfügt der SkillNets-Designer über ein eigenes Plugin-System, um alle logischen Elemente des Tools korrekt zu behandeln. Die Eigenschaften-Editoren, die zur Bearbeitung bestimmter Eigenschaften dienen, werden von Programmierern der Funktionsbausteine definiert. Diese Entkopplung ermöglicht eine einfache Wiederverwendung von Eigenschaftseditoren in verschiedenen Funktionsblöcken. Die Datenvisualisierung und Einstellungsmöglichkeiten für die Rückkopplungsstrukturen werden dabei wie bei allen anderen Funktionsblöcken umgesetzt.

tl_files/Bilder/ProKon/Abbildung 6.png

Abbildung 6 SkillNets-Plugin-System

Einbettung von SkillNets – Algorithmen in eine Applikation

Die im SkillNets implementierten Algorithmen können sowohl aus dem SkillNets-Designer aufgerufen und ausgeführt werden als auch in andere Applikationen integriert werden. Um SkillNets innerhalb einer anderen Applikation verwenden zu können, muss diese Applikation mit der logischen SkillNets-Bibliothek verknüpft werden. Diese Bibliothek lädt anschließend alle notwendigen Plugins zur Verwendung innerhalb der Applikation.
Innerhalb der Applikation muss zuerst ein Objekt der Klasse "Executor Block" erstellt und mit dem gewünschten SkillNet geladen werden. Daten für den Algorithmus können dann in die eingehenden Ports des Executor-Blocks durch eine Member-Methode der Klasse gesetzt werden. Das Aufrufen der Prozessmethode des Objekts führt das Subnetz aus. Generierte Daten können schließlich aus den ausgehenden Ports mit einer weiteren Member-Methode erfasst werden.

Einbindung von externen vorkompilierten Programmen in SkillNets

So wie die in SkillNets entwickelte Algorithmen innerhalb anderer Anwendungen auf dem Zielsystem eingebettet und ausgeführt werden können, können die SkillNets Funktionalitäten anderer Systeme in einem SkillNets geladen werden. Für diesen Zweck wurden sog. Prozessblöcke entwickelt und implementiert. 

SkillNets-Prozessblock

Der Prozessblock stellt eine der wichtigsten Merkmale des SkillNets dar. Dieser Block wurde entwickelt, um einen beliebigen Prozess aus einem SkillNets starten und parallel zu SkillNets Hauptapplikation ausführen zu können. Anders als andere Blöcke (wie z.B. GUI-Blöcke zur Interaktion mit dem Nutzer), ermöglicht der Prozessblock die Ausführung des Prozesses im Hintergrund ohne die Ausführung des SkillNets – Prozesses zu beeinflussen. Während der Ausführung kommuniziert der Prozessblock mit dem im Hintergrund laufenden Prozess über das standardisierte Input/Output Verfahren. Die Erzeugung, Terminierung und Handhabung der parallel laufenden Prozesse übernimmt der Prozessmanager. Der Prozessmanager erstellt eine Liste aller erzeugten (und noch aktiven) Prozesse und ermöglicht Prozessmanipulation über Prozessblöcke anhand eindeutiger Prozesskennzeichnungen. Sollte ein neuer Prozess gestartet oder beendet werden, so muss diese Operation über Prozessmanager erfolgen.

Prozessblock-Factory

Die Basisstruktur des SkillNets-Prozessblocks ermöglicht es, verschiede SkillNets-Blöcke zu erstellen, die sich nur über Prozessname, Erfolgs- und Abbruchbedingungen sowie Zeitüberschreitung-Parameter unterscheiden. Diese Parameter können von einem Programmierer in C++ gesetzt und in SkillNets-Plugin übertragen werden. Allerdings, wäre es wünschenswert, diesen Programmierschritt ebenfalls zu automatisieren und den Benutzer ohne Programmiererfahrung dazu zu befähigen, solche Blöcke auf einfache Weise zu erstellen und ohne Kompiliervorgang in das Plugin-System des SkillNets zu integrieren. Für diesen Zweck wurde im Rahmen des Projektes eine sog. Prozessblock-Factory entwickelt, getestet und in Beispielszenarien eingesetzt. Das Programm gilt als Ergänzung zum SkillNets-Tool und muss separat ausgeführt werden, um die entsprechenden Plugins zu erstellen. Die Plugins werden anschließend von SkillNets automatisch geladen und in Plugin-System aufgenommen.

Das Programm stellt dem Nutzer ein grafisches Benutzerinterface (GUI) zur Verfügung, welches es erlaubt, die Eigenschaften des Blocks zu editieren. Die Blockinformationen werden in einer XML-Datei gespeichert, die vom SkillNets gelesen und interpretiert wird, um den so erstellten Block im Plugin-Bereich beim Starten des SkillNets verfügbar zu machen. Die Abbildung 7 zeigt das GUI der Prozessblock-Factory. Die implementierten Funktionalitäten sind wie folgt gegliedert:

  • (A) Dateimanagement: Suchen, Laden und Exportieren der XML-Dateien
  • (B) Liste der existierenden Prozessblöcke
  • (C) Management der Prozessblöcke
  • (D) Management der Prozessblock-Eigenschaften
  • (E) Freigabe des Prozessblocks für SkillNets: mit dieser Einstellung kann entschieden werden, ob der Block in SkillNets zur Verfügung gestellt werden soll oder nicht
  • (F) Management der Prozessparameter, sowie der Erfolgs- und Abbruchsbedingungen des Prozessblocks 

tl_files/Bilder/ProKon/Abbildung 7.png

Abbildung 7 GUI der Prozessblock-Factory

Mit den oben aufgelisteten Funktionen wird den Nutzern ermöglicht, die Prozessblöcke anzulegen und die Parameter zu definieren und zu konfigurieren.

Versuchsanordnungen

Die Anwendung des SkillNets wird anhand von zwei Versuchsanordnungen im Rahmen verschiedener Anwendungsszenarien demonstriert und getestet.

Versuchsanordnung 1 / Demo 1: mobiler Roboter auf Lego-Basis

Die erste Demonstrationsanwendung wurde auf Basis von Lego Mindstorms aufgebaut (siehe Abbildung 8). Es wurde dazu ein mobiler Roboter bestehend aus einem intelligenten programmierbaren NXT-Baustein, montiert auf zwei Steuerungsrädern und einem Stützrad, aufgebaut. Der Roboter integriert zudem einen Ultraschallsensor und einen Taster. Die Kommunikation zwischen dem NXT-Baustein und dem Steuer-PC erfolgt über ein Bluetooth – Interface. 

tl_files/Bilder/ProKon/Abbildung 8.png

Abbildung 8 Versuchsanordnung auf Basis eines Lego Ministers NXT

Um die Versuchsanordnung anzusteuern, wurde ein Lego-Plugin entwickelt. Als Demonstrationsszenario wurde die Bewegungsregelung des mobilen Roboters umgesetzt.

Versuchsanordnung 2: 6DOF Manipulator mit 3D-Kamerasystem

Die zweite Versuchsanordnung besteht aus einem LWA4P 6DOF Roboterarm der Fa. Schunk, der auf einem Labortisch montiert ist, einem Zweifinger-Parallelgreifer ebenfalls dem Projekt von der Fa. Schunk zur Verfügung gestellt, und einer 3D Microsoft Kinect2 Kamera, die auf einem Stativ aufgebaut ist und den Arbeitsraum des Roboterarms erfasst (siehe Abbildung 9). 

tl_files/Bilder/ProKon/Abbildung 9.png

Abbildung 9 Versuchsanordnung 2: Schunk-Roboterarm mit Kinect2-Kamera

Die Ansteuerung der Basiskomponenten in dieser Versuchsanordnung baut auf ROS-Komponenten auf, die für verwendete Hardware von der Robotic-Community bereits verfügbar sind. Die Szenarien stellen somit eine ‚kombinierte‘ Nutzung des SkillNets-Tools dar, das zur einfachen Umsetzung der Demonstrationsszenarien eingesetzt wird und die ROS-Funktionalitäten über die SkillNets – Prozessblöcke einbindet. 

Fremdsoftware zum Einsatz mit dem System

Für die Entwicklung der beiden Testszenarien, wurden folgende ROS-Pakete von Drittanbietern verwendet:

  • schunk_robots and schunk_modular_robotics: Softwarepakete für die Ansteuerung des LWA4P Roboterarms und des PG70 Greifers [1], [2]. Diese werden für die Robotermodellierung, Hardwarekonfiguration und Inbetriebnahme von Komponenten verwendet. Um den Greifer in das Robotermodell aufzunehmen, wurden die Roboterbeschreibung des LWA4P und andere verwandte Dateien bearbeitet.
  • Moveit!: Softwarepakete für die Bewegungsplanung, Manipulation, 3D Darstellung und kinematische Berechnungen des Schunk LWA4P Roboters; Quelle [4].
  • ros_canopen: wird für die Kommunikation mit den Robotermodulen über Can-Bus und CANOpen Protokoll verwendet. Quelle [5].
  • iai_kinect2: Tools zur ROS - Einbindung der Microsoft Kinect; Quelle [6].
  • merosy_kinect2: der ROS-Knoten, der Methoden zur Bildverarbeitung und Objekterkennung auf dem Tisch umsetzt. Quelle [6].

Demonstrationsszenarien

Szenario 1: Bewegungsregelung für den Lego-Roboter

Zur Demonstration der Verwendung des SkillNets – Tools wurde zunächst eine einfache Beispielanwendung implementiert. Das Demonstrationsszenario setzt eine Bewegungssteuerung für den mobilen Lego-Roboter um. Diese Bewegungssteuerung sollte aus Modulen bestehen, die für sich genommen lauffähig sind, in dem finalen Szenario aber zusammengeführt werden sollten.

Eines der einfachsten denkbaren Szenarien für den Lego-Roboter ist die Kollisionsvermeidung. Hierbei soll der Lego-Roboter so lange geradeaus fahren, bis er auf ein Hindernis trifft. Dann soll der Lego-Roboter anhalten. Zur Hinderniserkennung wird ein Ultraschall-Abstandssensor verwendet, der durch den Funktionsblock „Get Sensor Value“ ausgelesen wird. Am Ausgangsport dieses Funktionsblocks liegt dann der Abstand zum nächsten Objekt in cm an. Das SkillNet „Kollisionsvermeidung“ ist in Abbildung 10 dargestellt.

tl_files/Bilder/ProKon/Abbildung 10.png

Abbildung 10 SkillNet „Kollisionsvermeidung“

Szenario2: Wegräumen von Objekten auf einem Tisch

Das Ziel des Szenarios ist den Aufräumvorgang zu automatisieren und Objekte verschiedener Größe, die auf einem Tisch in der Reichweite des Roboters platziert sind, in zwei an der Seite des Tisches angebrachten Behälter (Box1 und Box2) entsprechend der Objektgröße einzusortieren (siehe Abbildung 11).

tl_files/Bilder/ProKon/Abbildung 11.png

Abbildung 11 Beispielanordnung 

Für das Szenario wurden zwei Objekttypen verwendet: Spielwürfel mit Kantenlänge 6cm und Tee-Boxen mit Abmessungen L x B x H = 6 x 6 x 14 cm. Für die Erkennung von Objekten auf dem Tisch sowie deren Vermessung wurde eine ROS – Komponente verwendet, die von einem Partnerinstitut entwickelt wurde.

Um das Szenario zu konfigurieren, stehen dem Nutzer folgende Optionen zur Verfügung:

  • Objektabmessungen (je nach Objekttyp)
  • Position der beiden Aufnahmeboxen
  • Reihenfolge in der die Objekte abgeräumt werden müssen
  • Korrektur der geschätzten Objektposition

Die Implementierung des beschriebenen Szenarios ist in der Abbildung 12 dargestellt. Das Netz baut auf folgenden Basisblöcken: UI yes/no, Create pose, Add poses, Auswahl des Objektes auf dem Tisch (ergänzt durch Rückkopplung-Ports zur Implementierung der wiederholten Ausführung des Blocks), Joiner, UI message und Executor blocks (Subnetze).

tl_files/Bilder/ProKon/Abbildung 12.png

Abbildung 12 SkillNets zur Implementierung des Demonstrationsszenarios

Dabei wird folgender Prozessablauf realisiert:

  • (1) Prozessinitialisierung (ruft die ROS-Initialisierungsdateien auf und initialisiert Module des Roboterarms).
  • (2) Anfrage bei dem Nutzer, ob der Abräumvorgang ausgeführt werden kann.
  • (3) Abrufen der Liste von erkannten Objekten vom merosy_kinect2 – Modul und Auswahl eines Objektes aus der Liste entsprechend den Vorgaben im Block “Select object on the table”. Wenn keine Objekte erkannt wurden, wird eine Anfrage an den Nutzer eingeblendet, ob das Szenario beendet werden soll oder ein erneuter Suchversuch ausgeführt werden soll.
  • (4.1) Erfassung der Ausführungsparameter für den ‚pick and place‘ Prozess in Abhängigkeit vom ausgewählten Objekt: Objekthöhe, Pose des Objektes, Greifposition.
  • (4.2) Erfassung der korrigierten Pose des ausgewählten Objektes.
  • (5) Ausführung des ‘pick and place’ Vorgangs. Nach erfolgreichem Abschluss, zurück zum Schritt 3.
  • (E) Sollte die Ausführung Fehlerhaft sein, so wird eine Nachricht für den Nutzer eingeblendet.

Eine der wichtigen Funktionalitäten des SkillNets ist die Möglichkeit, die Netze in Teilfunktionalitäten zu zerlegen und diese in Subnetzen umzusetzen (unter Verwendung der sog. „Executor“-Blöcke). Dadurch wird die Komplexität des Netzes reduziert und die Übersichtlichkeit des Hauptnetzes gewährleistet. Die Subnetze können weitere Subnetze beinhalten, was zur besseren Strukturierung der Gesamtlösung führt.

In der hier vorgeschlagenen Umsetzung der Aufgaben „Aufräumen des Tisches“ wurden drei Subnetze für das Szenario definiert, die zum Teil weitere Subnetze integrieren. Somit weist das Szenario drei Zerlegungsebenen (siehe Abbildung 13). 

tl_files/Bilder/ProKon/Abbildung 13.png

Abbildung 13 Netzhierarchie im Szenario "Aufräumen des Tisches"

Szenario 3: Schreiben von Texten

Um die Konfigurierbarkeit einer SkillNets-basierten Implementierung noch mehr zu verdeutlichen, wurde das Szenario „Schreiben von Texten“ definiert und in SkillNets umgesetzt. Der Nutzer wird aufgefordert, eine beliebige Zeichenkette vorzugeben, die dann mit dem Roboterarm Schunk lwa4p mit dem PG70 Greifer und speziell angefertigten Greiferbacken (Greifertyp 1) auf einem Blatt Papier, das auf dem Tisch befestigt ist, geschrieben werden soll. Das Szenario in verschiedenen Phasen der Ausführung ist in Abbildung 14 und Abbildung 15 dargestellt. Es stehen alle 26 Zeichen des englischen Alphabets, zehn Digitalzeichen sowie verschiedene Symbole (‘.’, ‘,’, ‘+’, ‘-’, ‘×’, ‘/’, ‘=’, ‘(’, ‘)’, ‘ ‘) zur Verfügung. 

tl_files/Bilder/ProKon/Abbildung 14.png

Abbildung 14 Demonstrationsszenario "Schreiben von Texten": Ausführung läuft

tl_files/Bilder/ProKon/Abbildung 15.png

Abbildung 15 Demonstrationsszenario "Schreiben von Texten": Ausführung abgeschlossen

Mit der Implementierung des Szenarios sollte dem Nutzer folgende Konfiguration des Szenarios ermöglicht werden

  • Vorgabe der Zeichenkette, die vom Roboter geschrieben werden soll
  • Zeichengröße (Höhe und Breite)
  • Zeichenabstand
  • Anfangsposition für den Text in Bezug auf die Tischmitte
  • Markertyp, der für das Schreiben verwendet wird
    • Zusätzlich kann der Nutzer auch den Abstand von der Markerspitze bis zum Greiferspitze angeben.
  • „Auf“ und „Zu“ Position des Greifers abhängig vom Markertyp, um das Einsetzen des Stiftes zu optimieren
  • Stiftneigung beim Schreiben
  • Startabstand zwischen der Markerspitze und dem Tisch vor der Kalibrierung der vertikalen Schreibposition
  • Vertikaler Offset der Markerspitze über der Tischoberfläche zur Bewegung des Stiftes ohne Schreiben.

Das SkillNet zur Implementierung des beschriebenen Szenarios ist in der Abbildung 16 dargestellt und basiert auf folgenden SkillNets-Blöcken: Create number, Create string, Create pose, Number arithmetic operation, Add delta pose element, UI message, UI yes/no, Extract character from string, Move lwa4p to pose, Move pg70, Counter, Joiner, Bypass, Delay und Executor blocks (subnets).

tl_files/Bilder/ProKon/Abbildung 16.png

Abbildung 16 Hauptnetz zum Demonstrationsszenario "Schreiben von Texten"

Der implementierte Prozessfluss setzt folgende Bearbeitungsschritte um:

  • (1) Initialisierung des Systems (Initialisierung der ROS-Umgebung und der Roboterarm-Module).
  • (2) Gewinnen der Stiftparameter entsprechend der Auswahl des Nutzers
  • (3.1)   Öffnen und Schließen des Greifers zum Greifen des Stiftes. Der Nutzer steuert den Vorgang über Interaktionselemente.
  • (3.2)   Ermittlung der Startpose für das Schreiben auf Basis der Nutzervorgaben für Stift-Neigung und Anfangsposition für den Text.
  • (4) Kalibrierung der vertikalen Position des Stiftes für den Schreibprozess (siehe detailliertere Beschreibung des entsprechenden Subnetzes).
  • (5) Überführen des Roboters in die Vorbereitungspose (erfolgt nach der Bestätigung durch den Nutzer). Beim Abbrechen der Schreibaufgabe durch den Nutzer, Fortsetzung der Operation ab Schritt 11.
  • (6) Anfrage beim Nutzer, ob Schreibprozess gestartet werden darf.
  • (7) Erfassen des Zeichens, das geschrieben werden soll. Wenn kein Zeichen mehr vorhanden sind, fortsetzen mit Schritt 10.
  • (8) Berechnen der Schreibposition für das aktuelle Zeichen basierend auf Anzahl bereits geschriebener Zeichen und der vorgegebenen Startposition.
  • (9) Schreiben des Zeichens und fortsetzen mit dem Schritt 7.
  • (10) Überführen des Roboters in die Vorbereitungspose.
  • (11) Freigabe des Stiftes (erfolgt nach der Bestätigung durch den Nutzer)
  • (12) Einblenden der Nachricht über erfolgreichen Abschluss der Aufgabe.
  • (E)  Sollte ein Fehler bei der Ausführung festgestellt werden, der Nutzer wird mit einer Pop-Up Nachricht informiert und der Stift wird freigegeben.

Zur Konfiguration des vorliegenden Netzes folgende Parameter werden für die Bearbeitung durch den Nutzer freigegeben:

  • (a) Markertyp (0 oder 1)
  • (b) Startposition für das Schreiben für die X-Achse
  • (c) Startposition für das Schreiben für die Y-Achse
  • (d) Stiftneigung in Grad
  • (e) Startabstand von der Stiftspitze und dem Tisch vor der Kalibrierung der vertikalen Position des Stiftes.
  • (f) Zeichenkette, die geschrieben werden soll
  • (g) Zeichenbreite
  • (h) Zeichenhöhe
  • (i) Abstand zwischen benachbarten Zeichen
  • (j) Vorbereitungspose für den Roboter

Beim Betrachten des Hauptnetzes zur Umsetzung des Szenarios (siehe Abbildung 16), können fünf verschiedene Subnetze identifiziert werden, die das Szenario besser strukturieren lassen. Diese Subnetze weisen ebenfalls eine verschachtelte Struktur auf, sodass der Gesamtzerlegungsgrad des Szenarios gleich sechs ist. Die verschiedenen Strukturebenen und deren Zusammenhänge sind in der Abbildung 17 dargestellt. Um die Darstellung zu vereinfachen, ist die sechste Ebene aus der Zeichnung rausgenommen. Es handelt sich dabei um das Subnetz eines speziellen Artes, wenn ein Subnetz zum Schreiben eines Spezialsymbols ein anderes Subnetz für das Schreiben eines Zeichens integriert, wie z.B. das Subnetz zum Schreiben einer „9“ das Subnetz zum Schreiben eines „P“ aufruft.

Zur kompletten Implementierung des Schreibvorgangs von verschiedenen Zeichen wurden insgesamt 46 Subnetze implementiert. 

tl_files/Bilder/ProKon/Abbildung 17.png

Abbildung 17 Subnetz "Write string"

Verweise

[1] ROS wiki, "Schunk_robots Package summary," [Online]. Available:  http://wiki.ros.org/schunk_robots. [Accessed Dec. 2016].

[2] ROS wiki, "Schunk_modular_robotics Package summary," [Online]. Available: schunk_modular_robotics. [Accessed Dec. 2016]

[3] MoveIt!, "MoveIt!," [Online]. Available: http://moveit.ros.org/. [Accessed Feb. 2017].

[4] ROS wiki, "Moveit Package summary," [Online]. Available: http://wiki.ros.org/moveit. [Accessed Feb. 2017].

[5] ROS wiki, "Ros_canopen Package summary," [Online]. Available: http://wiki.ros.org/ros_canopen. [Accessed Feb. 2017].

[6] Institute for Artificial Intelligence - University of Bremen, "IAI Kinect2," [Online]. Available: https://github.com/code-iai/iai_kinect2. [Accessed Feb. 2017].

[7] The Qt Company, "QProcess Class," [Online]. Available: http://doc.qt.io/qt-5/qprocess.html. [Accessed Feb 2017].

Zurück