AR: Augmented Robots

AR-Widgetframework für Interaktion mit Robotern und ihren internen Daten.

Idee und Konzept

Im Bereich der Mensch-Roboter-Interaktion gibt es noch viele Hürden zu meistern. Unser Projekt erleichtert diese Interaktion unter Verwendung neuester Technik. Beim Arbeiten mit dem Roboter kann sich der Anwender verschiedene Informationen direkt auf einer HoloLens anzeigen lassen. So können wichtige Sensordaten oder Fehlerzustände schnell und übersichtlich ausgelesen werden.

Auch für eine Produktivumgebung – beispielsweise in einer Industrieanlage – können mit der Brille sicherheitsrelevante Daten über den Arbeitsraum visualisiert oder Informationen zur Umwelt geliefert werden. Dabei kann jeder Benutzer aus verschiedenen Detaillierungsgraden auswählen, seine Darstellung individuell anpassen und diese abspeichern.

Der Fokus des Projekts liegt dabei auf der einfachen Erweiterbarkeit, weshalb das System in einzelne, eigenständig ausführbare Programmbestandteile, sog. Widgets aufgeteilt wurde. Neben den bereits entwickelten Widgets ist es durch das von uns implementierte Widget-Framework möglich, dem System weitere, auch komplexere Widgets hinzuzufügen. Die Grenzen hierbei sind nur die Daten und Interaktionsmöglichkeiten, die die Schnittstelle mit dem Roboter zur Verfügung stellt.

Bedienung

Bei einer HoloLens ist es üblich, die Anwendung mithilfe von Gesten zu steuern.

Eine Berührung des “Widgets”-Buttons öffnet eine Leiste, über die einzelne Widgets geöffnet, geschlossen oder neue Widgets hinzugefügt werden können. Letzteres wird mithilfe des “Add”-Buttons und einem Auswahlmenü realisiert.

Ein einzelnes Widget kann hierbei mehrmals ausgewählt werden, um beispielsweise im Generic Text Widget verschiedene Informationen parallel anzusehen.

Die ausgewählten Widgets können einzeln oder auch alle gemeinsam minimiert oder geschlossen werden. Die Leiste kann außerdem eingeklappt werden, wenn sie nicht benötigt wird.

Die aktiven Widgets lassen sich mit Hilfe von Gesten beliebig im Raum positionieren. Widgets, die sich auf eine bestimmte Stelle des Roboters beziehen – wie das Joint Range Widget – sind durch Linien mit diesen Stellen verbunden, so dass die angezeigten Informationen auch nach einer Umplatzierung weiterhin zugeordnet werden können.

Implementierte Widgets

Auf Basis des Widget-Frameworks wurden mehrere Widgets implementiert. Dabei werden aktuelle Informationen aus dem Robot Operating System (ROS), einem Framework für persönliche Roboter und Industrieroboter, ausgelesen und entweder direkt am Roboter oder auf einem Fenster auf der HoloLens virtuell dargestellt.

Das Service Widget kann dazu verwendet werden, alle implementierten ROS-Services aufzurufen. Falls ROS oder die Widgets Fehler aufwerfen, werden diese automatisch vom Error Widget aufgefangen und gespeichert. Bei einem Klick auf das entsprechende Icon werden die Meldungen dann dem Nutzer präsentiert. Ähnlich funktioniert auch das Meme Widget, welches Meldungen der anderen Widgets in Meme-Form präsentiert – für ein wenig mehr Spaß am Arbeitsplatz. 🙂

Um beliebige Informationen als reinen Text wiederzugeben, kann ein Generic Text Widget angezeigt werden. Nach der Auswahl der Topics werden diese dann stichpunktartig auf der Widget-Instanz aufgelistet. Um Zahlenwerte anzuzeigen, kann zudem auf das Data Plot Widget zurückgegriffen werden, bei dem ein zeitlicher Verlauf als Graph angezeigt wird.

Falls in der Szene ein Roboter vollständig konfiguriert wurde, können auch Widgets direkt auf den Roboter projiziert und Befehle aus ROS-Topics auf den virtuellen Roboter angewandt werden. Dazu sind zunächst das Joint Overview Widget und das Joint Range Widget zu nennen, welche die maximalen und aktuellen Winkel der Gelenke und die Nähe zu den Grenzwerten visuell aufzeigen. Ein vereinfachter Arbeitsraum kann mit dem Working Area Widget dargestellt werden, welches seine Farbe je nach Abstand zum Nutzer anpasst.

Mit dem Trajectory Widget besteht zudem die Möglichkeit, eine von ROS gesendete Trajektorie als Pfad, als halbtransparente Vorschau oder als Bewegung des virtuellen Roboters zu interpretieren. Die verschiedenen Bewegungen können mit dem Trajectory History Widget gespeichert und erneut als Vorschau wiedergegeben werden.

Architektur

Unser System haben wir mit einer
Drei-Schichten-Architektur strukturiert. Die einzelnen
Schichten werden konzeptionell den Funktionalitäten
(Darstellen, Verarbeiten und Verwalten/Speichern der
Daten) zugeordnet. Unser Ziel ist, die Komplexität
der Abhängigkeiten innerhalb unseres Systems zu
reduzieren und somit eine geringere Kopplung bei
gleichzeitig höherer Kohäsion der einzelnen Schichten
zu erreichen. Dies hat Vorteile sowohl für das Verständnis als auch für die Wartung unseres Systems.

Die Architektur besteht aus den folgenden drei Schichten:

Die Präsentationsschicht stellt die oberste Ebene des Systems dar, welche für die Präsentation der Daten und mögliche Benutzereingaben verantwortlich ist. Hier befinden sich sowohl das Widget-Menü mit den Widgets als auch das Registrierungs- und Anmeldemenü.

Darunter liegt die Logikschicht, die Daten verarbeitet und für die Präsentationsschicht zur Verfügung stellt. Zum einen befindet sich hier die Kommunikation mit ROS, um dessen Service- und Subscriber-Schnittstellen zu verwalten, zum anderen ist der Konfigurationsservice der Logikschicht zugeordnet. Dieser registriert die Benutzer, meldet sie an und ab, und lädt die Konfigurationen (Position, Ansichtsmodus, ausgewählte Daten/Topics, usw.) beim Öffnen eines Widgets. Außerdem speichert der Konfigurationsservice beim Schließen neue Konfigurationen, um ein reibungsloses Arbeiten mit den Widgets zu ermöglichen.

Die unterste Ebene unseres Systems ist die Datenhaltungsschicht. Sie enthält unsere ROS-Simulation, und den Konfigurationsserver, welcher für das Speichern und Verwalten der Konfigurationsdaten von Benutzern und Widgets verantwortlich ist. Für die ROS-Simulation haben wir uns entschieden, da wir aufgrund des digitalen Semesters keinen Zugriff auf einen echten Roboter hatten.

Ausblick

In einem nächsten Schritt kann das jetzige Projekt aus Unity, der von uns genutzten Laufzeit- und Entwicklungsumgebung, auf die HoloLens übertragen werden. Dafür muss der virtuelle Roboter auf die Position des realen Roboters im Raum gelegt und die Bewegungen synchronisiert werden.

Team

Nik Julin Nowoczyn

Jonas Elia

Maximilian Hammerl

Fabio Tempelmann

Katharina Utzschneider

Betreuung: Alexander Poeppel

Leiter des Innovationslabors: Prof. Dr. Wolfgang Reif