@Work Software

Sense, Model, Think, Act.

Der Zweck der Software für unseren Roboter besteht darin, die Intelligenz und Fähigkeiten bereitzustellen, die erforderlich sind, damit er seine Umgebung wahrnehmen, handeln und effektiv interagieren kann.

Das System

Unser Software-Stack basiert auf dem Robot Operating System (ROS), genauer gesagt auf der ROS1 Noetic-Version. ROS bietet eine Vielzahl leistungsstarker Werkzeuge zur Entwicklung und Fehlerbehebung von Robotiksoftware, einschließlich Visualisierungswerkzeugen wie rviz und rqt.

Unser System besteht aus einer hierarchischen Architektur, bei der verschiedene Knoten miteinander über ROS‘ Kommunikationsebene namens tcpros kommunizieren. Diese Kommunikation ermöglicht den Austausch von Informationen und die Koordination der Aktionen zwischen den Knoten.

Innerhalb dieser Architektur haben wir ein hierarchisches System implementiert, das von der Verbindung zum Refreebox bis zu grundlegenden Operationen (RO) reicht. Die ROs sind als einzelne Aktionen definiert, die unabhängig von externen Faktoren sind. Zur Umsetzung dieser Aktionen verwenden wir ROS Action-Server, die es dem Roboter ermöglichen, Updates zu aktuellen Aufgaben zu erhalten und sie bei Bedarf abzubrechen.

Die ROs umfassen verschiedene Navigations- und Manipulationsaktionen, die das System ausführen muss. Durch die Organisation des Systems in diese hierarchische Struktur und die Nutzung der Kommunikations- und Action-Server-Fähigkeiten von ROS haben wir einen modularen und flexiblen Software-Stack für Robotik erstellt.

Unsere Software folgt dem Modell „Sense-Model-Think-Act“ als grundlegendes Konzept. Sie kategorisiert die gesamte Software in eine der vier Teile, was dabei hilft, die möglichen Interaktionen mit anderen Systemkomponenten zu definieren.

Im „Sense“-Teil sammeln Sensoren und Knoten Informationen aus den Daten, um Details über die Umgebung und den aktuellen Zustand des Roboters an das WorldModel zu liefern.

Das WorldModel dient als „Model“, indem es die verarbeiteten Daten abbildet und speichert. Sowohl der „Think“-Teil als auch der „Act“-Teil greifen auf das WorldModel zu, um ihre Entscheidungen auf der aktuellen internen Darstellung der Umgebung zu basieren.

Der „Think“-Teil umfasst den Aufgabenplaner, der die im Modell gespeicherten Informationen und die von der RefBoxClient bereitgestellten Aufgaben in interne Aufgaben umwandelt, die der Roboter ausführen kann.

Die Ausführung dieser Aufgaben wird vom „Act“-System übernommen, das weiter in die Teile „Navigation“ und „Manipulation“ unterteilt ist. Die Navigation konzentriert sich auf das Fahren des Roboters in der Arena, während die Manipulation die Interaktion des Roboterarms mit Arbeitsstationen behandelt. Sowohl die Navigation als auch die Manipulation werden durch die StateMachine ausgelöst.

Software Module

Sense

In der Objekterkennung benutzen wir schon zur Unterscheidung zwischen den unterschiedlichen Werkstücken ein neuronales Netz. Wir wollen auch die Lokalisierung der Objekte aus Tiefenbildern über ein neuronales Netz durchführen. Dafür muss eine geeignete Netzarchitektur ausgewählt, Trainingsdaten aufgenommen und das Netz trainiert werden.

Model

Im World Model werden alle Daten des Laufs und der Umgebung gespeichert und anderen Programmteilen bei Bedarf zur Verfügung gestellt. Da ein Fehler des World Models zu einem Fehlverhalten des Roboters führt ist hier vor allem die Robustheit und Vollständigkeit entscheidend. Dafür müssen Testszenarien entwickelt werden, die alle möglichen Situationen überprüfen.

Think

Im Taskplanner wird die auszuführende Aufgabe in kleinere Komponenten zerlegt und ein zeitoptimaler Ablaufplan erstellt. Unser Taskplanning nutzt eine graphenbasierten Suche. In jedem Schritt werden alle bekannten Servicebereiche als mögliche Navigationsaufgaben betrachtet. Die Objekte auf der Rückseite des Roboters (es sind bis zu drei erlaubt) dienen als mögliche Platzierungsaufgaben, und die Objekte auf dem Servicebereich werden als Greifaufgaben betrachtet.

Act

Die State-Machine (Zustandsautomat) in unserem System wird mithilfe von C++ und der Behaviour Tree CPP-Bibliothek implementiert. Letztere ist eine C++-Bibliothek, die speziell für die Programmierung und Ausführung von Verhaltensbäumen entwickelt wurde. Diese bieten gegenüber herkömmlichen Zustandsautomaten Vorteile, da sie leichter zu lesen und zu debuggen sind.

Das Software-Team

Franck Fogaing Kamgaing

Franck Fogaing Kamgaing

Software-Leitung
Nesrine Bouraoui

Nesrine Bouraoui

Manipulation
Dorra Oueslati

Dorra Oueslati

Vision
Daniel Le

Daniel Le

State Machine
Felix Piepenbrink

Felix Piepenbrink

Base_OS
Sebastian Wilke

Sebastian Wilke

Manipualtion

Du möchtest den luhbots beitreten?