Mobile Collaborating Robots for Direct Haptics in Mixed Reality DIPLOMARBEIT zur Erlangung des akademischen Grades Diplom-Ingenieur im Rahmen des Studiums Visual Computing eingereicht von Reinhard Sprung, BSc. Matrikelnummer 00725956 an der Fakultät für Informatik der Technischen Universität Wien Betreuung: Univ.Prof. Dr. Mag. Hannes Kaufmann Mitwirkung: Dipl.-Ing. Mag. Emanuel Vonach, Bakk. Wien, 12. April 2021 Reinhard Sprung Hannes Kaufmann Technische Universität Wien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.at Mobile Collaborating Robots for Direct Haptics in Mixed Reality DIPLOMA THESIS submitted in partial fulfillment of the requirements for the degree of Diplom-Ingenieur in Visual Computing by Reinhard Sprung, BSc. Registration Number 00725956 to the Faculty of Informatics at the TU Wien Advisor: Univ.Prof. Dr. Mag. Hannes Kaufmann Assistance: Dipl.-Ing. Mag. Emanuel Vonach, Bakk. Vienna, 12th April, 2021 Reinhard Sprung Hannes Kaufmann Technische Universität Wien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.at Erklärung zur Verfassung der Arbeit Reinhard Sprung, BSc. Hiermit erkläre ich, dass ich diese Arbeit selbständig verfasst habe, dass ich die verwen- deten Quellen und Hilfsmittel vollständig angegeben habe und dass ich die Stellen der Arbeit – einschließlich Tabellen, Karten und Abbildungen –, die anderen Werken oder dem Internet im Wortlaut oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe der Quelle als Entlehnung kenntlich gemacht habe. Wien, 12. April 2021 Reinhard Sprung v Danksagung Ich bedanke mich bei Univ.Prof. Dr. Mag. Hannes Kaufmann und Dipl.-Ing. Mag. Emanuel Vonach, Bakk. für die Betreuung meiner Diplomarbeit und bei Dipl.-Ing. Soroosh Mortezapoor für die technische Hilfe im Virtual-Reality-Labor der TU Wien. Weiterer Dank gilt Manuela, Yasmin, Friederike, Elvira und Matthias für das Korrek- turlesen der Arbeit, Christian und Michael für die Hilfe beim Bau von Requisiten, Ella für Ideen zum Design des Posters, Peter für Empfehlungen zur Datenauswertung der Testergebnisse und meiner Familie und meinen Freunden für die moralische Unterstützung beim Verfassen der Diplomarbeit. Wendelin und Silja Diplomarbeitsbabies Jakob, Jonathan und Maja Diplomarbeitskinder Mila, Levi und Lotti Diplomarbeitshunde vii Kurzfassung Nach Weiterentwicklungen im Bereich der Computergrafik und der Miniaturisierung von elektronischen Schaltkreisen findet die Technologie der virtuellen Realität (VR) erstmals Zugang zu einem breiten Publikum. Kommerzielle VR-Systeme, wie die Vive Pro von HTC, erlauben es ihren Trägern beziehungsweise Trägerinnen virtuelle Welten in Bild und Ton in einem Ausmaß zu erleben, der ihnen realistisch genug erscheint darin einzutauchen (Immersion). Bei der Interaktion mit ihrer virtuellen Umgebung wird jedoch schnell ein Defizit bemerkbar, und zwar, dass diese keine physischen Eigenschaften oder haptisches Feedback abseits der Eingabegeräte bietet. Zusätzliche, am Körper zu tragende Geräte, wie Ganzkörperanzüge oder Exoskelette, bieten nur eingeschränkte haptische Möglich- keiten oder minimalen Tragekomfort durch überhöhtes Gewicht. Haptische Konzepte, denen Benutzer und Benutzerinnen im Simulationsbereich begegnen können, sind oftmals an einen räumlichen Ort gebunden oder unterstützen, aufgrund der hohen Mobilität geschuldeten leichten Bauweise, nur leichte Berührungshaptik. Diese Diplomarbeit nimmt sich daher dieser Thematik an und beschreibt Konzeption und Implementation eines VR-Systems, das haptisches Feedback in Raumgröße ermöglicht. Es wird gezeigt, wie ein mobiler Manipulator des Typs RB-Kairos in Kombination mit dem Virtual-Reality- Headset Vive Pro verwendet werden kann, um Benutzern und Benutzerinnen physische Requisiten im Rahmen einer VR-Anwendung zur Verfügung zu stellen und haptische Sin- neseindrücke zu vermitteln. So wurde die Lighthouse-Trackinglösung der Vive Pro in den RB-Kairos integriert, um die Positionsbestimmung des Roboters im selben Kontext wie dem Headset zu ermöglichen. Als Softwaregrundgerüst wird das Robot Operating System (ROS) verwendet, das bereits für die Steuerung des Roboters und seiner Komponenten verantwortlich ist und zur Bereitstellung der Haptik um neue Module erweitert wird. Im Bereich der virtuellen Realität kommt das Spiele-Framework Unity zum Einsatz, das durch entsprechende Plugins die einfache Erstellung von VR-Anwendungen ermöglicht. Die Kommunikation zwischen VR-Anwendung, Roboter und Benutzer beziehungsweise Benutzerinnen erfolgt kabellos und ermöglicht diesen eine uneingeschränkte Mobilität innerhalb des Versuchsraums. Die anschließende technische Evaluierung beantwortet Fragen zu den Betriebsparametern des Systems und listet Verbesserungspotential und Erweiterungsmöglichkeiten auf. ix Abstract After technological advancements in computer graphics and miniaturization of electric circuits, virtual reality has finally found its way into the consumer market. Commercial VR systems like HTC ’s Vive allow their wearers to experience virtual worlds realistically enough to feel audio-visually immersed. However, when interacting with the simulated environment, the limitations of such a system become apparent quickly. They offer no haptic capabilities or feedback beyond what is integrated in their hand-held input devices. Additional body-worn equipment, like haptic suits or exoskeletons, deliver only rudimentary haptic experiences or encumber the user’s ease of movement with excessive weight. Haptic hardware of the ‘encounter’ type are often constrained to a specific location within the simulation area or deliver only soft touching sensations because of their highly mobile but fragile architecture. Therfore, this thesis covers the topic of creating a VR system with haptic feedback and describes its design and implementation in a room sized setup. The paper shows how a mobile manipulator, like the RB-Kairos, can be combined with a virtual reality headset, like the Vive, to deliver real world props into the hands of users to enhance their virtual experience. To track the manipulator’s position with the same accuracy of the VR headset, the Vive’s Lighthouse tracking solution is integrated into the robot. On the software side, the system takes advantage of the Robot Operating System (ROS), which is already configured to control the robot’s basic functionality and is extended to include new modules handling the deliverance of haptic sensations. The simulation of the visual part of this project is handled by the gaming engine Unity, which features a variety of plugins suitable to create basic VR applications with minimal effort. The communication between VR application, RB-Kairos and user is handled wirelessly via radio signals which allows unrestricted mobility for participants and robots within the simulation area. The subsequent technical evaluation offers insights to operating parameters and lists potential enhancement and upgrade possibilities. xi Inhaltsverzeichnis Kurzfassung ix Abstract xi Inhaltsverzeichnis xiii 1 Einleitung 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Gliederung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2 Related Work 9 2.1 Passive Haptik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Aktive Haptik & Force Feedback . . . . . . . . . . . . . . . . . . . . . 10 2.3 Begegnungshaptik in Raumgröße . . . . . . . . . . . . . . . . . . . . . 13 3 Grundlagen 19 3.1 Vive Pro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 RB-Kairos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.3 Robot Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4 UR-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.5 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6 Koordinatensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4 Design 33 4.1 Ausgangssituation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2 Entwurf des VR-Systems . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5 Umsetzung 41 5.1 Hardwareinstallationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Netzwerkkommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 Konfiguration von UR-10 und MoveIt . . . . . . . . . . . . . . . . . . 45 5.4 Lighthouse Tracking des RB-Kairos . . . . . . . . . . . . . . . . . . . . 47 5.5 Integration des UR-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 xiii 5.6 VR-Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.7 Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6 Evaluierung 61 6.1 Technische Evaluierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.2 Benutzererfahrung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7 Diskussion 73 7.1 Verbesserungspotential . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.2 Erweiterungsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . 77 7.3 Anwendungsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . 80 8 Zusammenfassung 83 A Anhang 85 A.1 Einrichtung von SteamVr auf dem Roboter . . . . . . . . . . . . . . . 85 A.2 Hochfahren des RB-Kairos . . . . . . . . . . . . . . . . . . . . . . . . . 87 A.3 Code-Auflistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Abbildungsverzeichnis 95 Tabellenverzeichnis 97 Glossar 99 Akronyme 105 Literaturverzeichnis 107 KAPITEL 1 Einleitung Virtual Reality ist eine Technologie, die eine künstlich erzeugte Realität simuliert, in einem Maße, dass ein Benutzer diese für überzeugend genug hält, um in ihr einzutauchen. Um diese Immersion zu bewerkstelligen, werden die Stimuli, die ein Benutzer von der echten Welt erhält, blockiert und durch jene einer virtuellen Umgebung (englisch: Virtual Environment) ersetzt. Durch Weiterentwicklungen im Bereich der Computergrafik und der Miniaturisierung elektronischer Bauteile steht diese Technologie nun erstmals einem weltweiten Publikum zur Verfügung und findet Einzug in den Verbrauchermarkt der Unterhaltungsindustrie. Vertreter solcher Produkte sind die Oculus Rift [rif], HTC Vive [viv] und Valve Index [ind]. Ein solches kommerzielles VR-System besteht typischerweise aus mehreren Komponenten: einem am Kopf getragenen und Augen umschließenden Headset oder Head Mounted Display (HMD), Kopfhörer, Eingabegeräten (Controller) und Trackinglösungen, um die Position des Kopfes und der Hände im Raum zu erfassen. Durch die Erfassung der Kopfposition wird dem Benutzer eine Visualisierung einer virtuellen Welt berechnet, die ihm am HMD angezeigt wird und sich seiner Kopfbewegungen ensprechend verändert. Ebenso kann dem Benutzer über Kopfhörer die Klangkulisse des virtuellen Raumes vorgespielt werden. Durch die Stimulation des Seh- und Hörsinnes wird einem Benutzer eine glaubhafte Präsenz in einer virtuellen Welt vorgegaukelt, jedoch nur bis zu dem Moment, an dem dieser versucht mit der Umgebung zu interagieren. Der Mensch verwendet zur Interaktion mit seiner Umwelt hauptsächlich seine Hände. Die Feinmotorik der dortigen Muskeln erlauben präzise Bewegungsvorgänge und die in der Haut vorhandenen spezialisierten Nervenzellen ermöglichen ihm, eine Vielzahl an Oberflächenmerkmalen zu ertasten. Zu den Sinneseindrücken der haptischen Wahr- nehmung (Tastsinn) zählen unter anderem Druck, Wärmeempfinden, Verschieben der Hautoberfläche, Fingerposition und Muskelspannung. Eine ganzheitliche Simulation aller Empfindungen scheint bereits durch die schiere Anzahl schwierig. Daher beschränken 1 1. Einleitung (a) Hand Controller der HTC Vive Pro [viv]. (b) Waffe im Spiel DOOM VFR [iS]. Abbildung 1.1: Vergleich zwischen Hand Controller und Spielwaffe. sich die haptischen Eindrücke in den vorhin genannten kommerziellen Produkten meist nur auf das Festhalten der Eingabegeräte. Die Form der Eingabegeräte für kommerzielle VR-Systeme erinnert an Griffe von Werk- zeugen, wie Bohrmaschinen oder Schusswaffen und damit bewusst an Gegenstände, die in typischen Videospielen vorkommen. Der Controller der Vive Pro besitzt ein Touchpad, mit dem Benutzer und Benutzerinnen mit dem Daumen einfache, analoge Kommandos abgeben kann sowie einen pistolenähnlichen Fingerabzug, den sogenannten Trigger , die der Simulation eben genannter Gegenstände zugutekommt (siehe Abbildung 1.1). Über die verbauten Buttons und Trigger kann mit dem VR-System interagiert werden, was zum Beispiel zum Abfeuern der virtuellen Waffe oder dem Ergreifen eines Objektes führt. Besonders bei letzterem fällt diese Form der Haptik negativ auf, da die Visualisierung das Halten eines neuen Gegenstands suggeriert, der Benutzer oder die Benutzerin aber weiterhin den selben Controller in der Hand hält. Weiters besitzen virtuelle Gegenstände keine reale Masse und werden daher von echten physikalischen Prinzipien nicht beeinflusst. Ohne ensprechender Simulationshardware kann man durch sie durch greifen oder sie ohne Kraftaufwand oder Trägheit aufheben. Die genannten, kommerziellen VR-Systeme besitzen keinerlei solcher Spezial-Hardware und verzichten daher weitgehend auf die Simuation von Haptik abseits des Festhaltens der Eingabegeräte. Diese ist jedoch Thema aktiver Forschung und auch diese Diplomarbeit beschäftigt sich damit. 1.1 Motivation Um eine virtuelle Welt um eine haptische Komponente, ohne der Verwendung von Eingabegeräten zu erweitern, kann die virtuelle Realität in der echten Welt nachgebaut werden, beziehungsweise eine virtuelle Umgebung der echten nachempfunden werden. Hierbei werden dem Benutzer beziehungsweise der Benutzerin die audiovisuellen Eindrücke per Headset vermittelt, der Tastsinn hingegen über das Berühren von realen Objekten. 2 1.1. Motivation (a) Eine Küche in der virtuellen Realität. (b) Durch Attrappen nachgebaute Küche die die virtuelle widerspiegelt. Abbildung 1.2: Ausschnitt aus Insko et al. Passive Haptics [Ins01]. Insko et al. kombinieren in Passive Haptics[Ins01] einen virtuellen Rundgang durch eine Küche mit echten Objekten aus Styropor und Sperrholz, die in etwa der Form der Küchenmöbel der virtuellen Welt ähneln und diese überzeugend simulieren (siehe Abbildung 1.2). Der Versuch beschränkt sich auf statische Möbel und das Ertasten der Oberfläche. Eine Interaktion mit Möbeln, etwa das Öffnen von Kästen oder das Hochheben von Geschirr ist nicht vorgesehen und wird vom System auch nicht erkannt. Ebenso ist die VR-Installation an den Versuchsraum gebunden, da die haptischen Replika für jede virtuelle Welt eigens gebaut werden müssen. Eine einfache Form der interaktiven Haptik stellen Force-Feedback-Systeme dar. Zu ihnen zählen die in vielen Videospiel-Controllern bereits seit Jahren verbauten Vibrationsmo- toren, die etwa Erschütterungen im Spielgeschehen abbilden oder zur Unterstützung des Spielers bei kniffligen Passagen dienen. Zum Beispiel kann einem Spieler durch Variation der Vibrationsintensität bei der Bewältigung seiner Spielaufgaben geholfen werden, etwa indem der Controller bei Annäherung an ein Ziel stärker vibriert als bei größerer Entfernung. Abbildung 1.3 zeigt das Innenleben eines Videospiel-Controllers mit zwei Vibrationsmotoren und eine Spielszene, wo dieses Konzept Anwendung findet. Diese in den Controllern verbaute Hardware kann leicht auf weitere Körperbereiche ausgedehnt werden, um Feedback abseits der Hände zu bieten. Es existieren bereits kommerzielle Produkte, wie zum Beispiel der Tesla Suit [Ltda] (siehe Abbildung 2.1a), ein hautanliegender Ganzkörperanzug, der dem Träger elektrische Impulse an verschiedenen Körperregionen übermitteln kann. Dieser wird in Kapitel 2 näher beschrieben. Der Nachteil von Force-Feedback Ausrüstung besteht darin, dass diese von den Benutzern (herum) getragen werden müssen und deren Vibrations- oder Impulshaptik im Vergleich zur Berührung echter Objekte wenig realistisch wirkt. Die Verwendung von realen Ge- genständen zur Erzeugung von interaktiver Haptik stellt ebenso Herausforderungen dar, 3 1. Einleitung (a) Ansicht eines geöffneten XBox 360 Wire- less Gamepads. In den Handgriffen im unteren Bildbereich sind zwei Vibrationsmotoren mit un- terschiedlichen Gewichten angebracht, die für Vibrationshaptik sorgen. (b) Im Yoga-Minispiel von GTA V [gta] wird dem Spieler mittels Vibration des Gamepads geholfen die richtige Position der Analog Sticks einzunehmen. Abbildung 1.3: Haptisches Feedback in Videospielen. hauptsächlich die Frage, wie ein solches Objekt in die Hände der Benutzer gelangen soll, beziehungsweise wie es nach erfolgter Benutzung wieder aus dem Interaktionsraum entfernt wird, ohne die Benutzer merklich zu stören. Diese Diplomarbeit nimmt sich daher der Thematik an, eine haptische VR-Erfahrung zu erschaffen in der ein mobiler Roboter die Arbeit des Bereitstellens von Gegenständen übernimmt. In einem raumgroßen Setup soll es Benutzern möglich sein, sich mit minima- lem am Körper zu tragendem Equipment frei zu bewegen und an entsprechenden Stellen haptische Sinneswahrnemung zu erleben. Dem Benutzer soll eine virtuelle Szene gezeigt werden, mit der dieser interagieren kann. Auf Knopfdruck kann er oder sie ein Hindernis, im konkreten Fall eine Wand, markieren, die ihm oder ihr als haptisches Objekt zur Verfügung gestellt wird. Dazu wird die Position der Wand im virtuellen Raum ermittelt und in Koordinaten der realen Welt transformiert, wo ein Roboter die Platzierung des Hindernisses übernimmt. Der Roboter soll eine möglichst große Palette an zulässigen Positionen im gesamten Raum abdecken und dabei präzise agieren. Das Empfinden des Hindernisses erfolgt mit bloßen Händen, also ohne zusätzlich zu tragende Haptikhardware. Da das virtuelle Objekt real repliziert wird, ist auch eine Interaktion mit dem ganzen Körper möglich, nicht nur an vorgesehenen Körperteilen. Die Präsenz des Roboters mitsamt seiner Eigenmasse erlaubt zudem eine gewisse Kraftausübung. Anstatt eine Wand nur anzudeuten, wird dem Benutzer tatsächlich der Weg versperrt. Dieser könnte sich im Gegenzug aber auch gegen das Hindernis lehnen oder Gegenstände darauf platzieren. Weiters soll es dem System möglich sein, durch Integration zusätzlicher Hardware, sowohl mehrere Benutzer als auch mehrere Roboter im gleichen Setup zu unterstützen. 4 1.2. Ziele Abbildung 1.4: Pressefoto der HTC Vive Pro [viv] ©https://www.vive.com/. 1.2 Ziele Ziel dieser Arbeit ist die Erstellung einer raumgroßen VR-Anwendung, deren Realismus- grad durch den Einsatz von haptischen Komponenten, verbessert wird. Um dieses Setup umzusetzen, bedarf es spezieller Hard- und Software. Kern der Anwendung ist die Verwendung eines kommerziellen VR-Systems. Bei dessen Auswahl überzeugt die HTC Vive Pro [viv] (siehe Abbildung 1.4) in mehreren Punkten. Ihr Lighthouse-Trackingsystem erlaubt laut Hersteller, bei Verwendung von vier Basissta- tionen das Erfassen der VR-Hardware in einem Bereich von 10 × 10 m. Um den gesamten Bereich auch physisch erreichen zu können, kann das normalerweise kabelgebundene Headset mit einem Wireless-Kit aufgerüstet werden. Die Video- und Audiodaten werden damit zum HMD gefunkt, während es durch einen am Gürtel getragenen Akku mit Strom versorgt wird. Weiters existieren zu diesem VR-System zusätzliche Tracking-Module die an systemfremde Komponenten angebracht werden können, damit diese von der Lighthouse-Technologie ebenfalls erkannt werden können. Ein Roboter soll für die Bereitstellung der Haptik verantwortlich sein. Dieser hat fol- gende Kriterien: Er muss mobil sein, schnell und präzise agieren, dabei den gesamten Trackingbereich erreichen können und eine lange Betriebsdauer aufweisen. Die Wahl fiel auf den mobilen Manipulator RB-Kairos der Firma Robotnik [roba], der mit einem Roboterarm des Modells UR-10 des Herstellers Universal Robots [ur] ausgestattet ist. Der Roboter verfügt über Mecanum-Räder , die es ihm ermöglichen, sich in alle Rich- tungen fortzubewegen und rasch drohenden Kollisionen mit Menschen auszuweichen, ohne sich erst in die entsprechende Richtung drehen zu müssen. Dabei erreicht er eine Maximalgeschwindigkeit von 3 m/s. Der verbaute Manipulator hat einen Arbeitsradius von 1,3 m und eine Nutzlast von 5 1. Einleitung 10 kg. Aufgrund der Höhe der Roboterbasis kann der Endeffektor des Arms Höhen von etwa 1,95 m erreichen. Der verbaute Akku erlaubt eine durchgängige Manipulationszeit von 10 Stunden. Außerdem ist der UR-10 als kollaborierender Roboterarm ausgelegt und dadurch auf eine Interaktion mit Menschen, beziehungsweise einen Betrieb in deren unmittelbarer Nähe konzipiert. Er besitzt Sensoren, die äußere Krafteinwirkungen oder Kollisionen erkennen können und bei Bedarf die Bewegungsausführung stoppen. Diese Sensorik kann auch dazu verwendet werden, um seine Gelenke per Hand zu bewegen. Die Kommunikation mit dem RB-Kairos findet über Wi-Fi statt. Abbildung 1.5 zeigt ein Foto des RB-Kairos. Auf dem Roboter sollen zusätzliche Komponenten angebracht werden. Am Endeffektor des Roboterarms wird eine Requisite montiert, die als haptisches Interaktionsobjekt dienen soll. Weiters wird Tracking-Hardware der HTC Vive Pro am Roboter angebracht, um seine Position innerhalb des selben Koordinatensystems zu bestimmen, in dem sich auch die Benutzer beim Tragen des Headsets befinden. Als Softwarelösung zur Erstellung einer VR-Szene fiel die Wahl auf das 3D-Framework Unity [unia]. Es erlaubt die Erstellung einer funktionsfähigen VR-Anwendung durch sein vielfältiges Angebot an Plugins und wird bereits in einigen VR-Setups der TU Wien verwendet. Diese Soft- und Hardwarekomponenten sollen in einem ganzheitlichen Setup zusammen- arbeiten. Die Berechnung der VR-Szene übernimmt ein Windows-PC, der die Aufgabe hat, diese auf das drahtlose HMD zu übertragen. Die VR-Anwendung kommuniziert über Wi-Fi mit dem mobilen Manipulator und dem dort installierten Robot Operating System (ROS). Diese Softwarelösung kümmert sich bereits um die Basisfunktionalität des Roboters und soll um weitere Module erweitert werden. Ein Modul behandelt dabei das Erfassen seiner Position im Bezug zum Virtual Environment (VE) des Benutzers. Ein weiteres Modul empfängt Positionskommandos von der Unity-Anwendung die durch Navigations-Algorithmen in Bewegungskommandos des Roboter umgewandelt und aus- geführt werden. Die Endpositionierung des Interaktionsobjekts geschieht durch den Roboterarm. Das Augenmerk der verteilten Anwendung liegt auf Kontrolle, Präzision und Zuver- lässigkeit. Dazu ist es hilfreich entsprechende Verantwortungsgebiete auf die richtigen Plattformen aufzuteilen. Das Erzeugen der audiovisuellen Daten des VR-Erlebnisses übernimmt zur Gänze der Windows-Rechner, während die Verantwortung zur Positions- bestimmung und Wegfindung des Roboters ihm selbst obliegt. Somit kann bei einem möglichen Kommunikationsausfall jede Plattform für sich selbst weiter agieren und im Falle einer Veränderung des Setups leichter durch eine neue ersetzt oder ergänzt werden. Um die Kontrolle zu bewerkstelligen, werden vorgefertigte Softwarebibliotheken von ROS verwendet, unter anderem auch fertige Tools, um die Bewegung des Roboters zu steuern oder die empfangenen Sensordaten anschaulich zu visualisieren. 6 1.2. Ziele Abbildung 1.5: Ein fertig aufgebauter RB-Kairos von Robotnik [roba]. 7 1. Einleitung 1.3 Gliederung Diese Diplomarbeit besteht aus acht Kapiteln. Die Einleitung in Kapitel 1 (Einleitung) gibt einen Überblick über die Ziele und Gliederung dieser Arbeit, die Anforderungen an die verwendete Hardware und die Auswahl der Komponenten. Kapitel 2 (Related Work) beschreibt den aktuellen Stand von Forschung und Technik im Bereich der Simulation von Haptik. Dabei werden unterschiedliche Verfahren von einfacher bis komplexer Haptik in Raumgröße vorgestellt sowie auf deren Vor- und Nachteile eingegangen. Diese Diplomarbeit vereint Konzepte aus den Bereichen von Virtual Reality und Robotik mit jeweils eigenen Hard- und Softwarelösungen. Daher werden in Kapitel 3 (Grundlagen) die Grundlagen der verwendeten Systeme erklärt sowie deren Zusammenspiel beschrieben. Der Fokus liegt hierbei auf dem Robot Operating System (ROS), das sämtliche Funktionen des Roboters steuert und auch die Grundlage dieser Arbeit bildet. Kapitel 4 (Design) beschreibt den Ist-Zustand der bereits am Roboter vorhandenen Funktionalitäten und ihre Interaktionen untereinander. Weiters beschreibt es Designüber- legungen, wie diese Features mit VR-Hardware kombiniert werden können, um eine roboterunterstützte VR-Simulation in Raumgröße zu erschaffen. Kapitel 5 (Umsetzung) zählt zum Herzstück dieser Arbeit und listet die konkreten Schritte, die zur Umsetzung des VR-Systems führen. Zu ihnen zählen die Anbringung von zusätzlicher Hardware am Roboter, die Konfiguration von Netzwerk und Roboterarm sowie die Implementierung der Steuerungssoftware und der VR-Anwendung. Zusätzlich werden die Schritte zur Inbetriebnahme des Systems gelistet. Kapitel 6 (Evaluierung) enthält die technische Evaluierung, die Fragen zur Leistungsfä- higkeit des Systems beantwortet und dessen Betriebsparameter auflistet. Weiters wird ein Pilottest beschrieben, der die zu erwartende Benutzererfahrung des Systems zeigt. Kapitel 7 (Diskussion) beschäftigt sich mit den in den vorhergehenden Kapiteln ge- wonnenen Erkenntnissen und bietet konkrete Vorschläge für eine Verbesserung oder Vereinfachung des Systems und deren Komponenten. Dieses Kapitel listet außerdem Möglichkeiten auf, wie das System um zusätzliche haptische Konzepte erweitert wer- den kann, unter anderem auch ein weiterer Testaufbau mit dem Roboter dieser Arbeit. Der Abschluss bietet einen Überblick über mögliche Anwendungsgebiete eines solchen Systems. Kapitel 8 (Zusammenfassung) enthält schließlich eine Zusammenfassung und gibt einen weiteren Ausblick auf das Potential des im Rahmen dieser Diplomarbeit erstellten VR- Systems. 8 KAPITEL 2 Related Work Es existieren bereits viele Ansätze, um haptisches Feedback für VR-Anwendungen zu realisieren. Dieses Kapitel gibt einen Überblick über einige dieser Verfahren und teilt sie in zusammengehörende Kategorien ein. Abschnitt 2.1 (Passive Haptik) beschreibt Anwen- dungen, die VR-Szenen Haptik in Form von unveränderlichen, greifbaren Objekten oder Gegenständen verleihen. Abschnitt 2.2 (Aktive Haptik & Force Feedback) listet Systeme, die von Benutzern am Körper getragen werden und ihnen durch computergesteuertes Einwirken haptische Sinneswahrnehmungen vermitteln. Abschnitt 2.3 (Begegnungshaptik in Raumgröße) behandelt haptische Konzepte, die nicht an den Körper der Benutzer gebunden sind, sondern denen man in raumgroßen VR-Setups „begegnet“. 2.1 Passive Haptik Zu der Gruppe der virtuellen passiven Haptik zählen Konzepte, die virtuelle Inhalte durch die Haptik echter Objekte ergänzen, um ihnen auf diesem Weg eine Repräsentation in der realen Welt zu verleihen. Zu ihnen gehört das, in der Einleitung erwähnte, Passive Haptics von Insko et al. [Ins01] (siehe Abbildung 1.2), bei dem eine virtuelle Küche in echt nachgebaut wurde und so die Haptik liefert. Wie erwähnt besitzt das Setup keinerlei Interaktionsmöglichkeiten und beschränkt sich auf das Berühren der Möbelattrappen. Diese sind außerdem fest verbaut und können daher nur Haptik für diese eine VR- Simulation liefern. Der Vorteil dieses Systems liegt in der Simplizität, die sich sowohl in den Anschaffungskosten als auch in den Anforderungen des technischen Know-hows niederschlägt. Das VR-System dieser Diplomarbeit versucht jedoch durch Einsatz eines Roboters die fehlende Interaktionsmöglichkeit, beziehungsweise den dynamischen Aufbau einer Szene zu ermöglichen. Hettiarachchi et al. gehen hingegen mit Annexing Reality [HW16] den umgekehrten Weg. Sie beschreiben eine Augmented Reality Anwendung bei der Alltagsgegenstände mit einem computergenerierten 3D-Modell überlagert werden und so den Benutzern den Eindruck 9 2. Related Work vermitteln, als hielten sie stattdessen die virtuellen Objekte in ihren Händen. Anders als in Passive Haptics, wo der Zweck darin besteht, einer virtuellen Küche eine reelle Haptik zu verleihen, wird in Annexing Reality ein bestehender haptischer Gegenstand um zusätzliche, virtuelle Repräsentationen erweitert. Das gleiche Konzept verfolgen die bereits erwähnten Controller der handelsüblichen VR-Systeme, wie etwa der Vive Pro. Ihre sehr einfache Form, die an Werkzeuggriffe erinnert, erlaubt ihnen, die Haptik für eine Vielzahl an virtuellen Gegenständen zu liefern. Abbildung 1.1 zeigt ein typisches Beispiel von Controller und virtueller Waffe im VR-Spiel DOOM VFR [iS]. Die Haptik ist jedoch bei allen Gegenständen die gleiche, egal ob es sich um eine virtuelle Schusswaffe oder einen virtuellen Holzstock handelt. Sowohl die Masse als auch die Oberflächenbeschaffenheit ist in beiden Fällen die gleiche. Am meisten fällt diese Ungereimtheit aber bei Gegenständen auf, die aufgrund ihrer Form nicht gut durch Controller wiedergegeben werden können, aber mangels Alternativen ebenso durch sie repräsentiert werden. Zum Beispiel ein Ball, der im Spiel virtuell weggeworfen werden kann. Der Controller wird aber weiterhin in den Händen gehalten, während lediglich die „Wurftaste“ betätigt wird. Ein weiterer Nachteil von Annexing Reality und den Controllern besteht darin, dass die Gegenstände ausschließlich durch Benutzerinteraktion bewegt werden können. Ein Umwerfen einer virtuellen Flasche durch Umwerfen ihrer realen Repräsentation ist möglich. Ein Umkippen der Flasche in der virtuellen Welt hat jedoch aufgrund fehlender Manipulationshardware keinen Einfluss auf die echte. Das System ist daher stehts auf die Kooperation ihrer Benutzer und Benutzerinnen angewiesen. Durch Einsatz eines Roboterarms könnte die virtuelle Welt auch in der Realität abgebildet werden. Die einzige Möglichkeit, mit der kommerzielle VR-Systeme die Haptik ihrer Controller beeinflussen können, ist das Erzeugen von Rütteleffekten durch eingebaute Vibrationsmo- toren. Dadurch zählen die Controller ebenso zu den Beispielen der aktiven Haptik. 2.2 Aktive Haptik & Force Feedback Zur aktiven Haptik gehören alle Konzepte, die den Benutzern haptische Sinneseindrücke vermitteln, die über das bloße Berühren und Anfassen hinausgehen. Wie im vorigen Abschnitt erwähnt, zählen dazu etwa Vibrationsmotoren in Eingabegeräten, die den Be- nutzern und Benutzerinnen an geeigneter Stelle zusätzliche Informationen oder Immersion auf haptischem Weg vermitteln können. Man spricht hierbei auch von Force-Feedback. Gängige Beispiele in Videospielen sind etwa das Rütteln des Controllers bei einer Au- tofahrt über unebenes Gelände oder die Simulation des Herzschlages des spielbaren Charakters in Gefahrensituationen. Abbildung 1.3 zeigt die Vibrationsmotoren eines Gamepads sowie ihre Anwendung in einem Videospiel. Das Force-Feedback der VR-Controller erstreckt sich nur auf die Hände beziehungsweise Handflächen der Benutzer und Benutzerinnen, weswegen es bereits umfassende Forschung gibt, wie dieses auf den restlichen Körper ausgeweitet werden kann. Synesthesia Suit von 10 2.2. Aktive Haptik & Force Feedback Konishi et al. [KHM+16] und Towards Full-Body Haptic Feedback von Lindeman et al. [LPYS04] präsentieren Ansätze zur Umsetzung von Ganzkörperhaptik durch vibro-taktile Stimulation einzelner Körperstellen. Zu den kommerziell erhältlichen Produkten zählt der TESLASUIT [Ltda] (siehe Abbildung 2.1a), ein an der Haut anliegender Ganzkörperanzug, der den Trägern an 80 Stellen ihrer Körper elektrische Impulse vermitteln kann. Laut Hersteller findet der TESLASUIT breite Anwendung in Industrie, Training und im Gesundheitsbereich. Da diese Geräte am Körper, ähnlich einer Kleidung, getragen werden, nennt man sie auch Wearables. Der Vorteil im Vergleich zum Robotiksystem dieser Arbeit liegt in den geringeren An- schaffungskosten und der Möglichkeit einer punktgenauen Auslieferung von haptischen Impulsen an vielen Stellen des Körpers gleichzeitig. Diese Impulse decken jedoch nur einen Bruchteil der möglichen haptischen Empfindungen ab und beinhalten keinerlei Krafteinwirkung auf den Träger. Die Ganzkörperanzüge werden direkt am Körper getra- gen, weshalb ihr Platzbedarf sehr gering ist. Damit wäre eine gleichzeitige Verwendung mit dem VR-System dieser Diplomarbeit denkbar und könnte damit sowohl eine Um- gebungshaptik durch den Roboter als auch eine Per-User-Haptik durch die Anzüge abdecken. Eine weitere Möglichkeit, eine am Körper zu tragende Haptik zu realisieren, stellen Al-Sada et al. mit Haptic Snakes [ASJR+19] vor. Es handelt sich dabei um Roboterarme, die am Bauch getragen werden und mittels ihrer Endeffektoren mit ihren Trägern und Trägerinnen interagieren. Ihr Repertoire inkludiert das Antippen der Benutzer am Oberkörper und das Zeichnen von Gesten, also das oberflächige Verschieben von Hautbereichen. In der erweiterten Version, der Haptic Hydra (siehe Abbildung 7.2), besitzt der Roboterarm am Endeffektor eine Drehscheibe, die zusätzliche Werkzeugspitzen bereit hält. Diese sind ein Greifarm, eine Bürste und ein Gebläse. Das Beispiel zeigt den Vorsprung an Interaktionsmöglichkeiten, die ein einzelner Manipulator gegenüber einem vibro-taktilen System haben kann. Die Montage am Bauch, und das sich dadurch ergebende Mitführen des Roboters, wirkt sich jedoch im Vergleich zu einem haptischen Anzug oder dem System dieser Diplomarbeit negativ auf den Tragekomfort aus. Das Konzept ist außerdem nicht in der Lage greifbare Haptiken zu erzeugen, da sich die Manipulation des Roboterarms nur auf die Hautoberfläche beschränkt. Der wechselbare Endeffektor der Haptic Hydra dient aber als Vorbild dafür, wie die statische Requisite des Roboters dieser Arbeit dynamisch ausgetauscht werden könnte. Die bisher vorgestellten aktiven Haptiken erlauben nur die Simulation von Sinnesein- drücken auf der Hautoberfläche. Bei der Simulation von Kollisionen mit einem virtuellen Objekt könnte zum Beispiel ein VR-Controller vibrieren, um den Benutzer über die Existenz dieses Hindernisses aufzuklären. Der VR-Controller ist jedoch nicht in der Lage die Bewegung zu stoppen. Ein Spieler oder eine Spielerin kann problemlos seine oder ihre Hand, beziehungsweise den Controller durch dieses Objekt hindurchbewegen. Im in dieser Diplomarbeit vorgestellten VR-System ist dies jedoch möglich. Es wird ein Roboter verwendet, um eine Requisite an der entsprechende Stelle des virtuellen Objekts zu platzieren und so für ein physisches Hindernis zu sorgen. Eine andere Möglichkeit, die 11 2. Related Work Bewegung in ein virtuelles Objekt zu stoppen, besteht in der Verwendung von speziali- sierter Force-Feedback-Hardware, zum Beispiel Force-Feedback-Handschuhen, die auch Haptic Gloves genannt werden. Diese Handschuhe sind mit Sensoren ausgestattet, die die Stellungen der Fingergelenke überwachen. Sollte sich in der Nähe der Finger ein virtuelles Hindernis befinden, so können die Haptic Gloves angewiesen werden, durch eingebaute Aktuatoren Kräfte auf die Finger auszuüben und deren Bewegung in die entsprechende Richtung zu unterbinden. Perret el al. [PVP18] vergleichen mehrere solcher Systeme. Der Hersteller des TESLASUITs hat ebenfalls einen Handschuh, den TESLASUIT GLOVE [Ltdb] angekündigt, der diesen Anwendungsfall abdeckt (siehe Abbildung 2.1b). Damit könnte das Ergreifen eines faustgroßen Gegenstands simuliert werden sowie deren grobe Oberflächenbeschaffenheit. Darüber hinaus besitzen die Handschuhe Robotic Shape Displays in jedem Finger, um rudimentäre Oberflächentexturen darzustellen. Der Realismusgrad liegt jedoch weit unter dem, den echte Objekte und auch die Requisite dieser Diplomarbeit liefern. Zudem ist die Beinflussung der Gelenke auf die Hände beschränkt. Ein Benutzer oder eine Benutzerin könnte mit diesem Equipment weiterhin durch eine virtuelle Wand hindurch greifen. Um auch die Gelenksstellungen jenseits der Finger zu beeinflussen, existieren Force- Feedback-Systeme, die auch auf weitere Muskelpartien wirken. Diese mechanischen Exoske- lette werden unter anderem dafür verwendet, die muskuläre Kraft des Trägers oder der Trägerin zu unterstützen. Sie können aber auch benutzt werden, um der Kraft entge- genzuwirken und so eine Haptik zu erzeugen. Ein eigens für die Simulation von Haptik entworfenes Exoskelett für die Handgelenke ist das SPIDAR-W [NTAS15] von Nagai et al. Dabei handelt es sich um ein Gerüst, das auf den Schultern und dem Bauch getragen wird. Die Handgelenke befinden sich in speziellen Endeffektoren, die mit jeweils vier Seilwinden mit dem Gerüst verbunden sind. Die zwei Winden in Bauchhöhe sind in einem Winkel von 90° zu den Seilwinden in Schulterhöhe angebracht, womit eine kontrollierte Bewegung in sechs Freiheitsgraden möglich wird. Mit der gleichen Technik können auch Bewegungen in bestimmte Richtungen unterbunden und so die Präsenz eines physischen Hindernisses simuliert werden. Die Nachteile eines solchen Systems liegen in der Größe und Masse des zu tragenden Gerüsts, wodurch der Tragekomfort eingeschränkt und die Handhabung in engen Passagen, wie zum Beispiel beim Durchschreiten von Türen, erschwert wird. Ein solches System könnte das Hindurchgreifen durch eine virtuelle Wand unterbinden. Solange jedoch nicht jede menschliche Muskelpartie in einem Force-Feedback-Exoskelett bedacht wird, wird es immer Wege geben, wie die Beschränkungen der virtuellen Phy- sik umgangen werden können. Ein System, das zumindest auch die Beinbewegungen einschränkt, scheint bereits anhand von Größe, Masse und der nötigen Motorik schwie- rig umzusetzen. Das Konzept dieser Diplomarbeit geht daher einen anderen Weg und verwendet zur haptischen Simulation von virtuellen Objekten reale Gegenstücke. Der Vorteil liegt unter anderem in der realistischen Oberflächensimulation durch Berüh- rung mit den bloßen Fingern sowie der physischen Präsenz und damit einer natürlichen Bewegungseinschränkung beim Versuch, diese Objekte zu penetrieren. 12 2.3. Begegnungshaptik in Raumgröße (a) TESLASUIT [Ltda]: Der hautanliegende Ganzkörperanzug kann seinem Träger an 80 Stel- len des Körpers elektrische Impulse vermitteln. (b) TESLASUIT GLOVE [Ltdb]: Ein zum TES- LASUIT kompatibler, vom Hersteller angekün- digter Force-Feedback Handschuh, der Fingerbe- wegungen messen und entgegenwirken kann. Abbildung 2.1: Kommerzielle Produkte der TESLASUIT -Reihe. 2.3 Begegnungshaptik in Raumgröße Die vorgestellten Konzepte der aktiven Haptik bieten eine Haptiksimulation durch Tragen des benötigten Simulationsequipments. Die dadurch ermöglichte Mitnahme erlaubt die Ausführung der Simulation an willkürlich ausgewählten Orten, ist andererseits jedoch auch an die Nachteile gebunden, die das Herumführen von zusätzlicher Ausrüstung mit sich bringen. In diesem Abschnitt werden daher Konzepte präsentiert, wie das am Körper des Benutzers oder der Benutzerin getragene Equipment minimiert werden kann und die Person der haptischen Simulation zum entsprechenden Zeitpunkt „begegnet“. Man spricht hier auch von Encounter Type Displays (engl.: encounter: begegnen). Hierbei kann es sich um fixe Installationen handeln, zu denen sich ein Benutzer oder eine Benutzerin hinbewegt, oder um den umgekehrten Ansatz, bei dem haptische Erlebnisse zum User gebracht werden. 13 2. Related Work Abbildung 2.2: TilePop [TLC+19]: In der Bodeninstallation befinden sich leere Luftkam- mern, die in drei verschieden große Blöcke aufgeblasen werden können, um so Treppen oder Sitzgelegenheiten zu simulieren. Einen Vertreter der ersten Kategorie präsentieren Teng et al. mit TilePoP [TLC+19]. Es handelt sich dabei um ein Robotic Shape Display in Menschengröße. In einer Bodeninstal- lation sind Luftkammern in einem quadratischen Raster angeordnet, die mit Luftdruck zu Würfeln aufgeblasen werden können. Jede Bodenfliese besitzt drei dieser Würfel und kann somit vier verschiedene Höhenstufen einnehmen, je nachdem ob keiner der Würfel oder alle drei mit Luft gefüllt werden. Die Autoren beschreiben ein spezielles Faltver- fahren, das während des Auspumpens der Luft für ein reibungsloses Verschwinden der Luftkörper in der Bodenplatte sorgt sowie mögliche Anwendungsgebiete. Dazu gehören die Erzeugung von Treppen und Sitzgelegenheiten sowie auch die Simulation von Ober- flächeneigenschaften, wie die Weichheit eines Luftpolsters oder das Atmen eines Tieres. Abbildung 2.2 zeigt die Fliesen in ihren möglichen Zuständen. Die Vorteile dieser Technik sind, dass auf kleinstem Raum eine Vielzahl an haptischen Erlebnissen untergebracht werden kann und diese auch den Krafteinwirkungen der Benutzer und Benutzerinnen, die sich auf die Würfeln setzen können, standhalten. Der Nachteil gegenüber dem in dieser Diplomarbeit vorgestellten Konzept ist jedoch die Ortsgebundenheit der Installation auf einen bestimmten Bereich innerhalb des Versuchsraums und die Beschränkung auf orthogonale Strukturen. Die Simulation von schrägen Oberflächen ist durch die würfeligen Luftkörper nicht möglich. Eine andere Art der Begegnungshaptik beschreiben Vonach et al. mit VRRobot [VGK17]. Anstatt Simulationsequipment am Körper zu tragen, oder sich zu einer fixen Instal- lation im Raum hin zu bewegen, verharrt der Benutzer oder die Benutzerin in einer omnidirektionalen Bewegungsplattform. Von dort aus bekommt er oder sie haptische Sinneseindrücke durch einen in der Nähe befindlichen Roboterarm vermittelt. Der User wird mit seiner Hüfte an der Plattform fixiert und bleibt so an seiner Position. Die rutschige Bodenplatte ermöglicht aber seine Füße in alle Richtungen gleiten zu lassen 14 2.3. Begegnungshaptik in Raumgröße (a) Die visuelle Welt wie sie der VR-Benutzer oder die VR-Benutzerin vorfindet. (b) Von menschlichen Akteuren aus Universalre- quisiten nachgebaute Umgebung. Abbildung 2.3: Ausschnitt aus TurkDeck [CRR+15] von Cheng et al. Der Versuch verwen- det menschliche Helfer, um mittels tragbarer Requisiten eine virtuelle Welt dynamisch in der Realität nachzubilden. um so Gehbewegungen am Stand durchzuführen. Durch die in der Platte verbauten Sensoren können die virtuelle Bewegungsrichtung und -geschwindigkeit des Benutzers oder der Benutzerin erfasst werden. Der Roboterarm verbleibt in Ruheposition und wird erst bei einer bevorstehenden Interaktion aktiv. Das System beherrscht die Simulation einer Wand, die den Benutzern in Form einer Holzplatte entgegengestreckt wird sowie eine Kollision mit einem virtuellen Computercharakter, die über einen am Endeffektor angebrachten Boxhandschuh realisiert wird. Das System ist ähnlich zu jenem, das im Zuge dieser Diplomarbeit realisiert werden soll. Der größte Unterschied besteht jedoch darin, dass sich sowohl Benutzer als auch Roboter frei im Raum bewegen können. Zu den Konzepten der freien Bewegungsausübung zählt das TurkDeck [CRR+15] von Cheng et al (siehe Abbildung 2.3). Dabei handelt es sich um eine raumgroße VR- Installation, die zur Manipulation der Umgebung eine Gruppe menschlicher Helfer verwendet. Diese sind mit tragbaren Klappwänden ausgestattet, die sie je nach Situation an bestimmten Stellen des Versuchsraums aufstellen oder niederlegen können. Ein Compu- terprogramm erteilt durch Sprachausgabe Befehle an die menschlichen „Roboter“, die auf Kommando den Simulationsbereich umgestalten, während sich eine einzelne Person in der VR-Simulation befindet. Eine Fußbodenprojektion hilft bei der Ausrichtung der Objekte. Die Vorteile einer solchen menschenbasierten Anwendung liegt in der schnellen Umsetzung von Test-Prototypen und der hohen Flexibilität der Akteure. Eine Umsetzung auf Dauer ist jedoch an die Verfügbarkeit einer großen Personengruppe und deren Kosten gebunden. Hier setzt diese Diplomarbeit an und widmet sich der Problematik, die Aufgaben der menschlichen Akteure durch echte Roboter zu erfüllen. Eine VR-Erfahrung ohne menschliche Akteure präsentieren Suzuki et al. mit RoomShift [SHZ+20] (siehe Abbildung 2.4a). Sie verwenden einen Schwarm von Miniaturrobotern, um Möbel zu verschieben und so den Simulationsraum umzugestalten. Bei den Robotern handelt es sich um Entwicklungsplattformen von Staubsaugerrobotern, die mit einem 15 2. Related Work Hebemechanismus und vernetzter Steuerung ausgestattet sind. Sie können Objekte mit einer maximalen Masse von 22 kg beförden und sie bis zu einer Höhe von einem Meter hochheben. Zu den Möbeln zählen Tische, Stühle und Wände. Diese werden je nach Anwendungsfall in eine an den Benutzer oder Benutzerin angepassten Stellung bewegt oder durch ihn oder sie interaktiv verschoben. Aufgrund ihrer fragilen Bauweise werden die Roboter dieser Simulation lediglich als Transportgeräte der Möbel verwendet. Möchten die User eines der gebrachten Objekte benutzten, zum Beispiel um sich auf einen Stuhl zu setzen, so muss dieser vorher vom Roboter wieder abgestellt und damit die Manipulation abgeschlossen werden; das Eigengewicht der Benutzer und Benutzerinnen würde sonst den Roboter zerstören. Durch Abstellen des Objektes ist es jedoch nicht mehr möglich die Haptiken wieder zu verändernd. Dieses Experiment, nämlich wie ein Schwarm an Robotern zur Manipulation der Umgebung eingesetzt werden kann, dient dieser Diplomarbeit als Vorlage. Der verwendete Roboter ist jedoch von einer anderen Bauart: sein Roboterarm erlaubt nur die Manipulation von Objekten mit einer maximalen Masse von 10 kg, die Objekte können allerdings in allen erdenklichen Positionen in Stellung gebracht, anstatt nur im Raum verschoben zu werden. Die Möglichkeit, Objekte frei im Raum zu platzieren, bieten ebenfalls Abtahi et al. mit Beyond The Force [ALY+19]. Die Autoren verwenden eine Drone, auf der ein Stück Stoff angebracht ist, das Kleidung simulieren soll. Ein Benutzer oder eine Benutzerin kann sich einem virtuellen Kleidungsstück nähern und bekommt vom System einen berührbaren Be- reich angezeigt. Der Quadcopter navigiert zur gewünschten Position und präsentiert dem Benutzer oder der Benutzerin an der erwarteten Stelle die Simulationsoberfläche. Etwaige Fehlgriffe mit den Händen können sowohl von der Drone als auch von der VR-Anwendung korrigiert werden, indem der zu tastende Bereich visuell entsprechend verschoben und so die Armbewegung unterbewusst angepasst wird. In einem anderen Versuch kann ein virtuelles Kleidungsstück am Kleiderhaken genommen und an eine Kleiderstange gehängt werden. Dazu wurde an der Drone ein echter Kleiderhaken angebracht, der während des Fluges der Drone in der Luft „hängt“. Die Eigenmasse der Drone sorgt für ein realistisches Gewichtsgefühl während des Transports durch den Benutzer oder die Benutzerin und erlaubt durch ihre Flugfertigkeit ein „Aufhängen“ des Kleiderhakens an einer willkürlichen Stelle im Raum (siehe Abbildung 2.4b). Im Vergleich zum Roboter dieser Diplomarbeit kann die Drone um einiges schneller manövrieren, aufgrund ihrer geringen Masse bietet sie jedoch nur eine eingeschränkte Möglichkeit der Userinterkation standzuhalten. Die Simulation eines fixen Objekts, wie einer Wand, ist damit nicht möglich. Eine weiteres Konzept, das Haptik zum Benutzer oder der Benutzerin bringen kann, bietet shapeShift [SGY+17] von Siu et al (siehe Abbildung 7.1). Es handelt sich um ein Robotic Shape Display, das auf einer mobilen Roboterplattform angebracht wurde. Das Robotic Shape Display besitzt 288, in einem quadratischen Raster angeordnete Metallstifte, die von Motoren um bis zu 0,05 m nach oben bewegt werden können. So können verschiedene Oberflächenstrukturen oder Vertiefungen erzeugt werden. Im aktiven Modus wird die Hand der Benutzer getrackt und das Robotic Shape Display durch Bewegung der Räder zu ihr hinbewegt. Mit diesem fahrbaren Ansatz lassen sich 16 2.3. Begegnungshaptik in Raumgröße (a) Die Roboter in RoomShift [SHZ+20] von Suzuki et al. besitzen einen Hebemechanismus mit dem Möbel im Raum verschoben werden können. (b) Beyond The Force [ALY+19] von Abtahi et al. erlaubt das „Aufhän- gen“ eines Kleidungsstücks in der Luft, durch Verwendung einer Dro- ne. Abbildung 2.4: Beispiele von Haptiksimulationen durch mobile Roboter in raumgroßen Setups. Oberflächenstrukturen darstellen, die weit größer sind als das Display selbst. Seine geringe Größe von etwa 0,25 m Seitenlänge legt eine Verwendung auf einer Tischplatte nahe. Der Roboter besitzt eine gewisse Ähnlichkeit zum Roboter dieser Diplomarbeit. Er bewegt sich ebenso über omnidirektionale Räder fort, um haptische Erfahrungen an beliebigen Stellen im Raum zu liefern. Sein Aufbau erlaubt jedoch nur eine Oberflächensimulation auf einer geraden, horizontalen Ebene über dem Boden. Der Roboter dieser Arbeit erlaubt hingegen nur die Bereitstellung einer Requisite mit statischer Oberflächenstruktur, weswegen eine Kombination beider Techniken einen insgesamt höheren Realismusgrad bei der Simulation von Haptik erreichen könnte. Die hier vorgestellten Arbeiten bieten alle ihre eigenen Vor- und Nachteile. Im Zuge dieser Diplomarbeit soll daher ein haptisches VR-System geschaffen werden, das entscheidende Vorteile der anderen Arbeiten kombiniert. Das System soll ein Hindernis präsentieren, das den Benutzern nach freier Bewegung im Raum begegnet. Es soll von einem nicht- menschlichen Akteur dort platziert werden und eine reale Präsenz bieten, also eine Eigenmasse besitzen und mit jedem Körperteil gefühlt werden können. Die weiteren Kapitel geben einen Überblick, wie so ein System entworfen werden kann. 17 KAPITEL 3 Grundlagen Die Implementation dieser Arbeit setzt ein Grundwissen über die verwendeten Soft- und Hardwarekomponten voraus, die in diesem Kapitel näher gebracht werden sollen. Abschnitt 3.1 (Vive Pro) stellt das VR-System dieser Arbeit, die Vive Pro von HTC, vor. Abschnitt 3.2 (RB-Kairos) enthält eine Einleitung über den verwendeten mobilen Manipulator RB-Kairos. Abschnitt 3.3 (Robot Operating System) geht auf die Grundlagen des Robot Operating System ein, das für den Betrieb des RB-Kairos zuständig ist. Abschnitt 3.4 (UR-10) enthält Basiswissen zum Manipulator UR-10 , der im RB-Kairos integriert ist. Abschnitt 3.5 (Unity) zeigt die Vorteile des Spieleframeworks Unity bei der Entwicklung von VR-Applikationen. Abschnitt 3.6 (Koordinatensysteme) führt schließlich die Koordinatensysteme auf, die die unterschiedlichen Systeme verwenden. 3.1 Vive Pro Die Wahl eines passenden VR-Systems für diese Arbeit fiel auf die Vive Pro [viv] von HTC (siehe Abbildungen 1.1a, 1.4, und 3.1). Im Gegensatz zu anderen kommerziel- len VR-Systemen, in denen die Benutzer und Benutzerinnen eine sitzende Position vor dem Computer einnehmen, wurde die Vive für eine stehende Haltung in einem frei begehbaren Raum konzipiert. Im diesem werden mindestens zwei Basisstationen, soge- nannte Lighthouses angebracht (siehe Abbildung 3.1b), die in einem definierten Muster Infrarot-Laserstrahlen aussenden. Alle trackbaren Geräte des Systems, das sind Headset, Controller und Tracker , enthalten an deren Oberfläche Photosensoren, die die entsandten Laserstrahlen messen können. Anhand des Musters der ausgesendeten Strahlen und des Timings der empfangenen Signale können die Position und die Orientation der Komponenten relativ zu den Lighthouses ermittelt werden. Das Tracking findet also in den Trackern selbst statt, während die Basisstationen lediglich passive Lichtsignale abgeben. Im Gegensatz dazu steht zum Beispiel das Tracking der Oculus Rift [rif], bei dem die Lichtsignale vom Headset ausgestrahlt und von einer 19 3. Grundlagen (a) Eine HTC Vive Pro mit Wireless-Kit. Der Funkempfänger wurde am Kopfband befestigt. (b) Eine an einer Wand angebrachte Lighthouse- Basisstation. Abbildung 3.1: Komponenten der Vive Pro [viv]. stationären Kamera aufgezeichnet werden. Der Vorteil des Lighthouse-Systems liegt darin, dass zusätzliche Tracker und Headsets die bestehenden Lighthouse-Stationen mitverwenden können. Die Berechnung der Positionsdaten muss auch nicht auf denselben Geräten erfolgen, wie Abbildung 4.1 zeigt. Der Hersteller gibt für die Vive Pro eine trackbare Fläche von circa 5 × 5 m an, die durch zusätzliche Lighthouses auf 10×10 m erweitert werden kann. Die mögliche Bewegungsfläche ist jedoch durch die Tatsache, dass die Berechnung der audiovisuellen Daten nicht am Headset selbst, sondern an einem PC erfolgt und typischerweise per (langem) Kabel an das HMD gesendet wird, eingeschränkt. Zu diesem Zweck wird das VR-System mit dem Wireless-Kit ausgestattet. Die Berechnung der Daten erfolgt weiterhin am Computer, die Datenkommunikation findet nun aber per Funkübertragung statt. Der Umstieg auf Funk verhindert ein möglicherweise zu kurzes oder sich verhedderndes Kabel und damit ein Stolpern der Benutzer und Benutzerinnen oder eine Kollision mit dem Roboter. Die Stromversorgung des Headsets erfolgt nun mit einem am Gürtel getragenen Akku. Im VR-Setup dieser Arbeit sind folgende Vive-Komponenten in Verwendung: drei Lighthouses, ein HMD inklusive Wireless-Kit und Funkstation, zwei Controller und zwei Tracker . Durch zusätzliche HMDs und Controller kann das System für mehrere User erweitert werden. Der Trackingbereich des VR-Labors der TU Wien hat ein Ausmaß von 8 × 6, 3 m. Die drei Lighthouses sind an Wänden und Stativen in einer Höhe von circa 2,4 m angebracht. 3.2 RB-Kairos Wie in Abschnitt 1.2 (Ziele) beschrieben, wird in dieser Arbeit der mobile Manipulator RB-Kairos verwendet. Dabei handelt es sich um eine Kombination aus der mobilen 20 3.3. Robot Operating System Roboterbasis Summit XL Steel der Firma Robotnik [roba] und dem Manipulator UR-10 des Unternehmens Universal Robots [ur]. Der Roboterarm wird in Abschnitt 3.4 (UR-10) näher beschrieben. Die definierenden Eigenschaften des RB-Kairos für dieses Projekt sind, neben der Nutzung eines mobilen Roboterarmes, seine hohe Geschwindigkeit von 3 m/s, seine lange Akkulauf- zeit von 10 Stunden durchgängiger Manipulationszeit und die verbauten Mecanum-Räder , die es ihm ermöglichen, seitlich zu fahren. Diese Manövrierfähigkeit ist deshalb wichtig, da sich der Roboter in einem Bereich aufhält, in dem auch Menschen Zutritt haben. Die Möglichkeit, in alle Richtungen rasch ausweichen zu können, kann Kollisionen mit und damit Verletzungen an Menschen minimieren. Zur Erfassung der Umgebung sind zwei 270° Lidars der Marke SICK S300 [sic] integriert, die es dem Roboter erlauben, eine Karte seiner Umgebung anzufertigen und sich später darin wiederzufinden. Eine Inertial Measurement Unit (IMU) vom Typ Pixhawk 4 [pix] sorgt zusätzlich für eine Lagebestimmung anhand von Trägheits- und Erdmagnetsen- soren. Die Erfassung seiner Umgebung durch Laserscans ermöglicht es dem Roboter, um Hindernisse herum zu navigieren und so Kollisionen zu vermeiden. Falls es den- noch zu Kollisionen kommen sollte, kann das integrierte Notstoppsystem, das sämtliche motorischen Aktivitäten des Roboters stoppt, per Funk ausgelöst werden. Um eine simple Steuerung des Gefährts zu ermöglichen, liegt dem Roboter ein Play- Station 4 Controller [pla] bei. Mit diesem kann die mobile Bewegungsplattform per Hand gesteuert werden. Diese manuelle Steuerung wird, gegenüber der automatischen Steuerung der Navigationssoftware, bevorzugt behandelt und kann dabei helfen, etwaige Navigationsfehler zu korrigieren und Kollisionen zu vermeiden. 3.3 Robot Operating System Die Funktionen des mobilen Manipulators RB-Kairos werden über das Robot Operating System (ROS) gesteuert. Dabei handelt es sich nicht um ein Betriebssystem im eigentlichen Sinn, sondern um eine Sammlung von Softwarelösungen (Frameworks), die ein breites Spektrum an Roboterfunktionen abdecken. Als echtes Betriebssystem fungiert Ubuntu 16.04, auf dem ROS in der Version Kinetic Kame läuft. Aktuelle Robotersysteme bestehen oftmals nicht mehr nur aus einem einzigen Roboter, sondern aus einer Kombination von mehreren. Diese setzen sich wiederum aus mehreren Komponenten und Computern zusammen. ROS bietet mit seinem auf Topics, Publishern und Subscribern basierenden Netzwerkprotokoll eine einfache Kommunikationmöglichkeit über einen solchen Verbund von Robotiksystem. Ein Publisher ist ein Softwarekonstrukt, das unter einem bestimmten Topic Nachrichten in das Robot Operating System einspeist. Analog dazu ist ein Subscriber ein Objekt, das Daten aus dem System empfängt und weiterverarbeitet. Dabei können beliebig viele Publisher und Subscriber auf dasselbe Topic zugreifen. Ein einzelnes Programm im Kontext von ROS wird Node genannt und enthält typischerweise mehrere Publisher und Subscriber . 21 3. Grundlagen Name RB-Kairos Bauweise Mobiler Manipulator Maße (Arm eingezogen) 0, 892 × 0, 56 × 0, 825 m Maße (Arm ausgestreckt) 0, 812 × 0, 56 × 1, 875 m Masse 100 kg Rover + 29 kg Arm Maximalgeschwindigkeit 3 m/s Autonomie 10 h Roboterarm UR-10 Nutzlast Arm 10 kg Reichweite Arm 1, 3 m Fortbewegung 4 Mecanum-Räder Lidar 2× SICK S300 IMU Pixhawk 4 Manuelle Steuerung PlayStation 4 Controller Mainboard Jetway NF9QU-Q87 Prozessor Intel ® Core ™ i7-4790S @ 3,20 GHz (8 CPUs) Arbeitsspeicher 8 GByte Integrierte Grafik Intel ® Haswell Desktop Betriebssystem Ubuntu 16.04 LTS 64-bit Robot Operating System Kinetic Kame Tabelle 3.1: Technische Spezifikationen und integrierte Hardware des RB-Kairos. Bei einem Topic handelt es sich um einen Datenpfad, ähnlich einer Uniform Resource Locator (URL), unter dem die Nachrichten abgelegt und abgerufen werden können. Die Nachrichten, im ROS-Kontext Messages genannt, werden durch einen bestimmten Typ angegeben, der beschreibt, welche Art von Daten in der Nachricht übertragen werden. Messages, die in dieser Arbeit verwendet werden, sind in Abschnitt A.3 (Code-Auflistung) aufgelistet. Die Kommunikation der Nodes untereinander wird vom roscore bereitgestellt. Es handelt sich dabei um den Kernknoten von ROS , der die Verwaltung aller ROS-Komponenten übernimmt und in einem Robotersystem genau einmal vorkommen muss. Da ROS als netzwerkbasiertes System ausgelegt ist, ist es aus Entwicklersicht auch irrelevant, auf welchem Computer welche Node ausgeführt wird, da dies ebenso vom roscore geregelt wird. Als Beispiel für die Funktionsweise von ROS kann folgendes System herangezogen werden: Ein mobiler Roboter soll über ein Notebook, an das ein Joystick angeschlossen ist, ferngesteuert werden. Roboter und Notebook sind über Wi-Fi verbunden und haben Zugriff auf denselben roscore. Am Notebook läuft eine ROS-Node, die die Stellung der Analogsticks und Buttons des Joysticks ausliest und die Daten unter dem Topic joy als Joy Message (Auflistung A.9) veröffentlicht. Neben dieser Node wird am Notebook 22 3.3. Robot Operating System auch noch eine Node zur Fernsteuerung des Roboters ausgeführt. Diese Teleop-Node implementiert einen Subscriber , der dieses Topic abonniert. Sie wandelt die empfangenen Achsenstellungen in konkrete Richtungsangaben um und publiziert diese unter dem neuen Topic cmd_vel als Twist Nachricht (Auflistung A.6). Am Roboter wird eine Node ausgeführt, die das Topic cmd_vel abonniert und die veröffentlichten Messages empfangen kann, ohne eine explizite Netzwerkübertragung zu implementieren. Der Roboter wandelt die erhaltenen Richtungsangaben schließlich in Steuersignale für die vier Motoren seiner Räder um und fährt in die vorgegebene Richtung. Ein weiterer Vorteil dieser modularen Struktur ist die Möglichkeit, einzelne Komponenten auszutauschen oder wiederzuverwenden. So könnte zum Beispiel ein zweites Gamepad angeschlossen werden, dessen Daten unter dem Topic joy2 in ROS veröffentlicht werden. Die Teleop-Node könnte dann so konfiguriert werden, dass sie ihren Input nun vom Topic joy2 bezieht, während das erste Gamepad die Kontrolle über einen anderen Roboter übernimmt. Ebenso wäre es denkbar, eine weitere Teleop-Node zu erstellen, die Roboter statt durch User Input anhand von Sensordaten und künstlicher Intelligenz steuert. Einzelne Nodes und Services werden typischerweise in Module mit thematisch ähnlichen Funktionen gegliedert, die sogenannten Packages, und bilden damit die oberste Hierarchie, anhand derer Nodes im System verwaltet werden. Ein Start einer bestimmten Node erfolgt durch Angabe des Package-Namens und des Node-Namens und kann mit dem Terminal- Befehl rosrun erfolgen. rosrun joy joy_node erzeugt beispielsweise eine von ROS zur Verfügung gestellte Node im Package joy, um die Daten eines generischen Linux Joysticks (oder Gamepads) in ROS zu publizieren. Da die Ausführung von einzelnen Nodes in großen Robotiksystemen per Hand sehr aufwändig werden kann, können diese in sogenannten Launch-Dateien gebündelt wer- den. Es ist dadurch auch möglich, benutzerdefinierte Startparameter an die Nodes zu übergeben sowie weitere Launch-Dateien zu starten. Der Terminal-Befehl roslaunch teleop_twist_joy teleop.launch startet zum Beispiel die joy_node und die Teleop-Node des ersten Beispiels. Der Inhalt der Datei teleop.launch wird in Ab- bildung 3.2 angezeigt. Der Start von ROS am RB-Kairos erfolgt über eine zentrale Launch-Datei, die wiederum andere Launch-Dateien der einzelnen Roboterfunktionen ausführt. Eine weitere wichtige Funktionalität, die durch ROS zur Verfügung gestellt wird, ist der sogenannte Transform Tree. In ihm können die Positionsdaten aller im System befindlichen Komponenten erfasst werden. Dazu zählen die fixen Positionen der vier Mecanum-Räder und der Montagepunkt des UR-10 innerhalb des Roboters, aber auch bewegliche Koordinaten wie die Gelenksneigungen des Roboterarms. Wichtig ist dies auch bei der Erfassung von Sensordaten der Lidars, um diese in den korrekten Bezug zum restlichen Roboter zu setzen. Wie der Name Transform Tree besagt, werden die Koordinaten in einer Baumstruktur verwaltet. Die Knoten des Baums, die auch Frames genannt werden, besitzen genau einen Elternknoten und beliebig viele Kinderknoten. Einzige Ausnahme ist der Root- 23 3. Grundlagen 1 2 3 4 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Abbildung 3.2: Die von ROS zur Verfügung gestellte Launch-Datei teleop.launch [tel] zum Start einer Teleop-Node. Die Konfiguration kann durch Argumente und Parameter angepasst werden. Frame des Weltkoordinatensystems, von dem aus alle anderen Frames ausgehen und der daher keinen Elternknoten hat. Jede Transformation eines Elternknotens wirkt sich gleichzeitig auch auf alle Kinderknoten aus. Diese hierarchische Verwaltung hat praktische Vorteile, da zusammengehörende Objekte innerhalb eines lokalen Frames definiert werden können, ohne deren absolute Position im Raum wissen zu müssen. Eine Umrechnung von Koordinaten zwischen verschiedenen Frames wird von ROS zur Verfügung gestellt. Somit lassen sich zum Beispiel die Koordinaten des Endeffektors des Roboterarms in absoluten Raumkoordinaten ermitteln. Abbildung 3.3 zeigt einen Ausschnitt des Transform Trees des Roboterarms UR-10 , bei dem die hierarchische Struktur zu erkennen ist. Zu sehen sind die obersten vier Glieder oder Frames des Roboterarms. Das sind forearm_link, wrist_1_link, wrist_2_link und wrist_3_link, zwischen denen sich jeweils die Gelenke des Roboterarms befinden beziehungsweise die Transformationen zwischen den Frames stattfinden. Die Stellung der Gelenke wird vom sogenannten robot_state_publisher mit einer Frequenz von circa 42,1 Hz veröffentlicht. Bei ee_link und tool handelt es sich um weitere Frames, die vom Treiber des UR-10 angelegt werden, um dort eigene Endeffektoren zu definieren. Bei rbkairos_panel handelt es sich um die im Zuge dieser Arbeit angebrachte Requisite. Die Transformationen der letzten drei Links sind statisch definiert und werden durch eine Publikationsfrequenz von 10.000 Hz angezeigt. Der Ursprungs-Frame des Roboters ist der sogenannte Base-Footprint. Er wird in der horizontalen Mitte des Roboters auf Höhe des Fußboden definiert. Hierarchisch gesehen 24 3.3. Robot Operating System Abbildung 3.3: Ausschnitt aus dem Visualisierungstool view_frames [vie]. Zu sehen ist ein Teil des Transform Trees des UR-10 . befindet er sich unterhalb des Odometrie-Frames, der sich wiederum unterhalb des Welt-Frames befindet (siehe Abbildung 3.5). Bei der Odometrie handelt es sich um die Schätzung der Positionsveränderung des Roboters anhand seiner ausgeführten Bewegung, also den Weg, den der Roboter seit seiner Inbetriebnahme zurückgelegt hat. Die Odometrie wird anhand mehrerer Faktoren ermittelt. In den Motoren der Mecanum- Räder sind Rotationssensoren integriert, die die Umdrehung der Räder messen. Die Räder selbst bestehen aus einer Aneinanderreihung von zwölf kleineren Rollen, die zusammen ein Laufrad bilden, siehe Abbildung 1.5 in Kapitel 1 (Einleitung). Die Rollen können sich frei drehen und ihre Rotation wird nicht überwacht. So kann es bei schlechter Bodenbeschaffenheit und langer Navigation passieren, dass der Roboter nicht die exakte Position einnimmt, die von den Sensoren berechnet wird. Daraus resultiert eine gewisse 25 3. Grundlagen Ungenauigkeit bei der Positionsbestimmung die zum Beispiel durch die Einbeziehung von IMU - und Lidar-Daten ausgeglichen werden kann. Die Ermittlung seiner Position und die Steuerung der Bewegung des RB-Kairos übernimmt der ROS Navigation Stack. Es handelt sich dabei um Softwarebibliotheken zur Erfüllung von allgemeinen Bewegungsaufgaben in Robotiksystemen. Diese können grob in drei Bereiche geteilt werden: Lokalisation, Pfadplanung und Bewegungsausführung. Wenn Roboter autonom von einem Ort zum anderen navigieren, ist es essenziell ihren aktuellen Aufenthaltsort zu kennen. Zu diesem Zweck gibt es unterschiedliche Methoden, mit denen elektronische Geräte ihre Position lokalisieren können. Zu ihnen gehören die eben erwähnte Odometrie, die sich unter anderem einer Sensorik in den Rädern bedient. Zusätzliche Geräte, wie zum Beispiel GPS-Empfänger, ermöglichen eine Positionsbestim- mung auf globaler Ebene. Für den Zweck dieser Arbeit ist dieses System aber zu ungenau, da eine Präzision auf Millimeterbasis gefordert ist und GPS-Tracking in Häusern aufgrund ihrer Wände nur unzureichenden Funkempfang bietet. Der RB-Kairos verwendet stattdessen zusätzlich eine Positionsbestimmung per Lidar . Bei Lidar handelt es sich um ein dem Radar ähnliches Verfahren der Abstandsmessung, das, statt mit elektromagnetischen Wellen, mit Laserimpulsen arbeitet. Laserstrahlen werden von einem Emitter ausgesendet, von einem Hindernis reflektiert und von einem Empfänger wieder empfangen. Anhand der Umlaufzeit beziehungsweise der Phasenver- schiebung des Lichtstrahls, lässt sich die Distanz zum Hindernis ermitteln. Im RB-Kairos sind zwei 270° Laserscanner des Modells SICK S300 [sic] verbaut, die es dem Roboter erlauben, die gesammten 360° seiner Umgebung abzutasten (siehe Abbildung 3.5). Mit der Kombination der Daten von Odometrie, Lidar und IMU ist es dem RB-Kairos per Adaptive Monte Carlo Localization (AMCL) möglich, sich auf einer zuvor aufgezeichneten Karte des Raumes wiederzufinden. Dieses Verfahren vergleicht die gebotenen Sensorda- ten mit nach Monte-Carlo-Schema zufällig ausgewählten Daten der Karte, um so eine Positionswahrscheinlichkeit zu berechnen. Mit den ermittelten Standortdaten kann in weiterer Folge ein Navigationspfad berechnet werden. Der Pfad ist abhängig von der Ausrichtung und der Manövrierfähigkeit des Roboters. Im Fall des RB-Kairos könnte dieser den gesamten Weg rückwärts oder seitlich zurücklegen, da er sich in alle Richtungen gleich effizient bewegen kann und auch Sensordaten aus allen Richtungen erhält. Im Laufe der Bewegung werden mit dem Lidar kontinuierlich Umgebungsdaten erfasst und ermöglicht der Lokalisation auch eine Neuberechnung des Odometrie-Frames, falls aktuellere Messungen genauere Werte liefern. Die Ausführung der Bewegung des RB-Kairos erfolgt über Geschwindigkeitskommandos an seine Räder. Bei diesen handelt es sich um Mecanum-Räder , deren Anordnung in Abbildung 3.4 gezeigt wird. Grundsätzlich ähnelt das Fahrverhalten des Roboters jenem anderer Fahrzeugen, die mit Differentialantrieb ausgestattet sind, beispielsweise Kettenfahrzeugen. Drehen sich die Räder auf einer Seite des Gefährts schneller als auf der anderen, so lenkt der Roboter in die Richtung der letzteren. In Abbildung 3.4 bewirkt demnach eine höhere Geschwindigkeit von V2W und V4W im Vergleich zu V1W und V3W 26 3.3. Robot Operating System Abbildung 3.4: Auszug aus Han et al. [HCL+08]: Die Anordnung der Mecanum-Räder in einem omnidirektionalen mobilen Roboter. eine Rotation des Roboters um die Vertikalachse im Winkel von ω. Da es sich bei den Rädern des RB-Kairos um Mecanum-Räder handelt, verleihen diese dem Roboter zusätzliche Bewegungsmöglichkeiten. Die auf den Rädern angebrachten elliptischen Walzen existieren in zwei unterschiedlichen Konfigurationen und unterschei- den sich in der Winkelausrichtung von + oder - 45° gegenüber der Laufrichtung. In Abbildung 3.4 werden diese mit V1r, V2r, V3r und V4r angegeben, wobei sich jeweils die diagonal angeordneten Paare gleichen. Drehen sich beide Räder einer Seite mit der selben Geschwindigkeit in die selbe Richtung, so verharren die Rollen weitgehend bewegungslos und der Roboter navigiert mit dem vorhin erwähnten Differentialantrieb. Drehen sich Vorder- und Hinterräder jedoch in un- terschiedliche Richtungen, zum Beispiel V2W und V4W nach vorne und V1W und V3W nach hinten, so kommen die Rollen ins Spiel. Das Gefährt kann sich nicht in zwei Richtungen 27 3. Grundlagen Abbildung 3.5: Ausschnitt aus dem Visualisierungstool RVIZ . Zu sehen sind die Daten der Lidars anhand roter und blauer Punkte, die im Vorfeld aufgezeichnete Karte des Versuchsraums und drei Frames, die zur Positionsbestimmung des Roboters verwendet werden. gleichzeitig bewegen, daher wird diese unmögliche Bewegung auf die Walzen der Räder abgerollt. Deren 45°-Anordnung sorgt so für eine Ausgleichsbewegung im Winkel von 90° zur Seite. Im Fall des Beispiels würde sich der Roboter nach links, entlang der positiven Y -Achse, bewegen. Durch die Kombination von unterschiedlichen Drehgeschwindigkeiten und -richtungen aller Räder lassen sich eine Vielzahl an Bewegungen ausführen. Han et al. [HCL+08] liefern eine detaillierte Beschreibung von Mecanum-Rädern sowie ein Modell zur Berechnung ihrer Drehrichtung. Zur Darstellung der vom Robotersystem erfassten Sensordaten stellt ROS das Visualisie- rungstool RVIZ zur Verfügung. Mit ihm lassen sich eine Vielzahl an Daten anschaulich visualisieren und überwachen, darunter 3D-Modelle der Roboter, Kamerabilder, Punkt- wolken der Laserscanner sowie Positions- und Bewegungsdaten. Abbildung 3.5 zeigt eine typische 3D-Ansicht des Programms mit verfügbaren Sensordaten. Zusätzlich zur Über- wachungsfunktion können auch rudimentäre Kommandos abgesetzt werden. Es existieren Plugins, mit denen sich die Navigation des Roboters starten und Bewegungsabläufe des Roboterarms planen und ausführen lassen. 3.4 UR-10 Der UR-10 des RB-Kairos bietet sechs Freiheitsgrade, einen Arbeitsradius von 1,3 m und eine maximale Nutzlast von 10 kg. Weiters ist er mit gängigen Roboter-Softwaresystemen kompatibel und kollaborationsfähig. Das bedeutet, dass er für einen Einsatz in der Nähe 28 3.4. UR-10 Abbildung 3.6: Pressefoto eines UR-10e. © Universal Robots [ur]. von Menschen oder für Arbeiten in Kollaboration mit ihnen konzipiert ist. Er besitzt Sensoren, die eine äußere Krafteinwirkung oder Hindernisse erkennen und bei Bedarf den Betrieb der Motoren einstellen können. Ein Zusatzfeature dieser Kollaborationsfähigkeit ist die Möglichkeit, die Gelenke des Roboterarms mit den Händen zu bewegen. So kann dem UR-10 etwa beigebracht werden, manuell eingestellte Gelenkspositionen einzunehmen. Die Daten des mobilen Manipulators sind in den technischen Spezifikationen des RB-Kairos in Tabelle 3.1 gelistet. Abbildung 3.6 zeigt ein Pressefoto des UR-10 . Die Steuerung des Roboterarms UR-10 erfolgt grundsätzlich über das vom Hersteller Universal Robots entwickelte URScript [ur]. Damit können dem Roboterarm statische Positionen des Endeffektors oder Bewegungsabläufe gesendet werden, die dieser im weiteren Verlauf ausführt. Für das Zusammenspiel mit ROS existiert aber auch ein 29 3. Grundlagen Abbildung 3.7: Screenshot aus dem Setup Assistant von MoveIt. Treiber, um die bestehende Infrastruktur von ROS wiederverwenden zu können. Der Treiber kommuniziert mit der ROS-Komponente MoveIt. Bei diesem Modul handelt es sich um ein sogenanntes Motion Planning Framework, das sich um die Ermittlung und Ausführung von Bewegungsabläufen in Robotersystemen kümmert. Dazu wird der Software eine dreidimensionale Beschreibung des Roboterarms inklusive der Gelenks- definitionen übergeben. Aus diesen Daten erstellt MoveIt dann ein ROS-Modul mit dem Kinematik-Modell des Manipulators. Dabei handelt es sich um ein mathematisches Modell, das die Bewegung des Endeffektors anhand der Stellung der zugehörigen Gelenke beschreibt. Abbildung 3.7 zeigt einen Screenshot aus dem Setup Assistant von MoveIt. 3.5 Unity Zur Erstellung der Virtual-Reality-Anwendung dieser Diplomarbeit fiel die Wahl auf Unity. Dieses Softwareentwicklungs-Framework erlaubt das einfache Erstellen unterschiedlicher 3D-Anwendungen oder Videospielarten, umfasst einen Marktplatz für Erweiterungen (Unity Asset Store [unib]), vergibt gratis Lizenzen für den privaten Gebrauch und richtet sich damit an unabhängige Spieleentwickler und Beginner. Unity wird außerdem bereits in einigen Projekten der TU Wien, unter anderem Immersive Deck [PVS+16], verwendet. Dieser Umstand erleichtert eine mögliche Integration in bestehende Anwendungen der Universität. Im erwähnten Unity Asset Store finden sich zudem zwei Erweiterungen, die für diese Arbeit von großem Nutzen sind: das SteamVr Plugin [steb] zur Erstellung von VR-Anwendungen und das ROS-Sharp Plugin [rosb] zur Kommunikation zwischen Unity und ROS . SteamVr ist die Laufzeitumgebung für die Tracking Software OpenVr der Valve Cor- 30 3.6. Koordinatensysteme poration für ihre online Spielevertriebsplattform Steam. Das Softwareunternehmen hat es sich zur Aufgabe gemacht, mit OpenVr alle gängigen VR-Systeme in ihrem Online Marktplatz zu unterstützen. Spieleentwickler können daher VR-Anwendungen auf Basis von OpenVr/SteamVr erstellen, ohne genaue Kenntnis über die zugrunde liegende Hard- ware haben zu müssen. Zum selben Zweck gibt es auch SteamVr Plugins und Software Development Kits (SDKs) für alle gängigen Spieleframeworks, um auch an dieser Stelle Plattformunabhängigkeit zu bieten. Das ROS-Sharp Plugin [rosb] dient zur Kommunikation zwischen Unity und ROS . Da Unity plattformunabhängig konzipiert ist, ROS aber fast ausschließlich unter Linux betrie- ben werden kann, existieren Softwarelösungen, wie die rosbridge, die eine Kommunikation zwischen ROS und andernfalls inkompatiblen Systemen ermöglicht. Es handelt sich dabei um eine auf JavaScript Object Notation (JSON) basierende Webschnittstelle, die das ROS-Protokoll imitiert. Die rosbridge deckt zwar nicht alle Funktionen einer vollen ROS-Kommunikation ab, ist aber für einen einfachen Datenverkehr ausreichend. Eine weitere Aufgabe, die das Plugin erfüllt, ist die Umrechnung der Koordinaten zwischen beiden Systemen. Zur Umsetzung der virtuellen Szene steht ein performanter Windows-Computer zur Verfügung. Seine technischen Daten finden sich in Tabelle 3.2 Prozessor Intel ® Core ™ i9-9900K @ 3,60 GHz (16 CPUs) Arbeitsspeicher 32 GByte Grafikkarte NVIDIA GeForce RTX 2080 Ti Grafikspeicher 11049 MByte Betriebssystem Windows 10 Pro 64-bit Tabelle 3.2: Das verwendete Windows-System zur Ausführung der VR-Anwendung. 3.6 Koordinatensysteme Die verschiedenen Technologien verwenden bei der Darstellung von 3D-Grafik beziehungs- weise zur Steuerung des Roboters unterschiedliche dreidimensionale Koordinatensysteme, zwischen denen an geeigneter Stelle konvertiert werden muss. ROS verwendet, wie in der Robotik üblich, ein rechtshändiges Koordinatensystem, in dem die X-Achse nach vorne und die Z-Achse nach oben zeigt, während Unity ein linkshändiges Hauptachsensystem der Computergrafik verwendet, bei dem die Z-Achse nach vorne und die Y-Achse nach oben zeigt. OpenVr wiederum verwendet ein rechtshändiges Koordinatensystem, das, bis auf eine gespiegelte Z-Achse, jenem von Unity entspricht. Die Koordinatensysteme sind in Tabelle 3.3 aufgelistet. Die Umrechnung der Koordinaten für die Verwendung in ROS ist im erwähnten ROS-Sharp Plugin bereits integriert, muss jedoch für die anderen Fälle manuell implementiert werden. 31 3. Grundlagen System Ausrichtung X-Achse Y-Achse Z-Achse Unity linkshändig rechts oben vorne OpenVr rechtshändig rechts oben hinten ROS rechtshändig vorne links oben Tabelle 3.3: Vergleich der Koordinatensysteme von Unity, OpenVr und ROS . Von Vorteil ist der Umstand, dass alle drei Systeme mit dem metrischen System arbeiten und alle Distanzeinheiten in Metern erfolgen. So ist keine Umrechnung zwischen den Größen unterschiedlicher Skalen notwendig. Auflistung A.19 zeigt die Umrechnung von OpenVr- in ROS-Koordinaten. OpenVr liefert diese in Matrixnotation, während ROS hauptsächlich eine Kombination aus Punkt- und Quaternion-Datentypen verwendet (siehe Auflistung A.4 und Auflistung A.5). 32 KAPITEL 4 Design Dieses Kapitel beschreibt die Designüberlegungen, die zur Umsetzung der in Abschnitt 1.2 (Ziele) definierten Ziele führen. Hauptaugenmerk liegt dabei auf dem mobilen Manipulator RB-Kairos, dessen bestehende Infrastruktur in Abschnitt 4.1 (Ausgangssituation) erklärt wird. Abschnitt 4.2 (Entwurf des VR-Systems) beinhaltet die Überlegungen, die zur weiteren Implementierung des VR-Systems dieser Arbeit führen. Abbildung 4.1 gibt einen groben Überblick über die vorhandenen Hard- und Software- komponenten und jene, die im Zuge dieser Diplomarbeit erstellt werden. Zur besseren Veranschaulichung werden thematisch zusammengehörende Komponenten zu Modulen zusammengefasst, wobei Hardware mit rechteckigem Rahmen und Software mit abgerun- detem Rahmen dargestellt werden. Die Hardwarekomponenten in grau und die Softwaremodule in weiß sind bereits vorab am Roboter vorhanden und werden ohne große Änderungen übernommen. Diese Module und deren Interaktionen werden in Abschnitt 4.1 (Ausgangssituation) erklärt. Bei den Komponenten in violett und blau handelt es sich um Hard- und Software, die im Rahmen dieser Diplomarbeit erstellt oder hinzugefügt und in Abschnitt 4.2 (Entwurf des VR- Systems) erläutert werden. Die grünen Elemente sind Teil des VR-Systems Vive Pro und werden in Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos) und Abbildung 5.9 zur Erfassung von Roboter- und Benutzerkoordinaten ins System integriert. 4.1 Ausgangssituation Zu den bereits am RB-Kairos vorhandenen Softwarekomponenten gehört der in Ab- schnitt 3.3 (Robot Operating System) erwähnte roscore, der den Kern des Systems bildet und auf dem integrierten Computer des RB-Kairos ausgeführt wird. Er verwaltet die Ausführung und Kommunikation der übrigen Nodes über ein Netzwerkprotokoll und ermöglicht dadurch eine einfach zu nutzende Datenübertragung zwischen mehreren 33 4. Design Abbildung 4.1: Das Kommunikationsdiagramm der wichtigen Hard- und Softwarekompo- nenten des VR-Systems dieser Diplomarbeit. 34 4.1. Ausgangssituation ROS-kompatiblen Geräten im selben Netzwerk. Diese Konnektivität wird jedoch in der Anfangskonfiguration nicht benötigt, da der integrierte Computer alle ihm gestellten Auf- gaben alleine erledigen kann. Sie hilft jedoch bei der Fernüberwachung des Systems durch einen zweiten Rechner, der mit der gleichen ROS-Version wie der roscore ausgestattet sein muss. Die Konnektivität ist in der Grafik mit einem roten Rahmen markiert. Geräte, die die Anforderungen an die ROS-Version nicht erfüllen, da sie zum Beispiel ein inkompatibles Betriebssystem verwenden, können stattdessen ihre Kommunikation mit dem System über die rosbridge abwickeln. Es handelt sich dabei um eine auf JSON basierte Webschnittstelle, die das ROS-Protokoll imitiert. Obwohl sie nicht alle Funktionen einer vollen ROS-Kommunikation zur Verfügung stellt, ist sie ausreichend für einen einfachen Datenverkehr und am Roboter bereits vorinstalliert. Der RB-Kairos kommuniziert mit seinen Hardwarekomponenten über unterschiedliche Schnittstellen. Zu ihnen gehören unter anderem Ethernet und USB. In Abbildung 4.1 werden diese mit breiten und schmalen Pfeilen simplifiziert dargestellt, da zum Beispiel der Anschluss eines Hardwaregeräts über USB auch immer einen Treiber als Softwarekom- ponente enthält. Um genügend Netzwerkverbindungen zur Verfügung zu stellen, ist der Roboter mit einem Wi-Fi-Router und einem Switch ausgestattet. Zusammen ermöglichen sie den Anschluss von sechs Geräten via Ethernet (zwei×vier RJ-45 Anschlüsse abzüglich zwei belegter Buchsen für deren Verkabelung). Per Ethernet verbunden sind zum Beispiel der Rechner und der UR-10 Roboterarm. Für die Kommunikation nach außen sorgt hingegen der Router mit Wireless-Access-Point. Dies ist auch der eleganteste Weg, den vorhin erwähnten Zweitrechner zur Fernüberwachung ins ROS-Netzwerk zu bringen. An der Hinterseite des Roboters befinden sich außerdem zwei RJ-45 Buchsen, die von jeweils einem LAN- und WAN-Anschluss des Routers nach außen geleitet werden. Ebenso nach außen geführt sind ein HDMI- und zwei USB-Anschlüsse des Rechners. An sie können Tastatur, Maus und Monitor zur direkten Arbeit am Roboter angeschlossen werden. Per USB mit dem integrierten Rechner verbunden sind die zwei Lidars. Sie tasten ihre Umgebung in einem jeweils 270° breiten Bereich ab und decken durch ihre diagonale Montage den gesamten Bereich um den Roboter herum ab. Die erzeugten Entfernungs- daten werden per LaserScan Message (Auflistung A.15) an ROS übergeben und zur Lokalisation des Roboters im Raum genutzt. Eine weitere Hardwarekomponente, die der RB-Kairos zur Ortung seiner Position verwen- det, ist eine IMU . Es liefert Lage- und Beschleunigungsdaten anhand der Messung des Erdmagnetfeldes und der Trägheitssensoren und wird als Imu Message (Auflistung A.12) an ROS übermittelt. Zusammen mit der Odometrie, also der Berechnung der Positionsveränderung des Robo- ters anhand der Rotationssensoren seiner Räder, und einer zuvor aufgezeichneten Karte der Umgebung kann sich der RB-Kairos im Raum lokalisieren. Er verwendet dazu das ROS-Package robot_localization [robb] und ein Verfahren namens Adaptive Monte Carlo Localization (AMCL). Es vergleicht die Sensordaten der Laserscanner mit jenen, die durch zufällige Auswahl von Roboterpositionen innerhalb der Karte entstehen müssten. 35 4. Design Die Auswahl geschieht nach Monte-Carlo-Schema, wobei das Auswahlsample je nach Positionswahrscheinlichkeit adaptiert wird. Eine genaue Erklärung dieses Verfahrens ist in Dellaert et al [DFBT99] zu finden. Die aktuelle Position und die Karte der Umgebung dienen dem RB-Kairos zur Navigation. Die Koordinaten des Base-Footprint und der Odometrie werden als TransformStamped (Auflistung A.10) im Transform Tree verwaltet. Die Karte liegt als OccupancyGrid (Auflistung A.13) vor und entspricht in etwa einem Graustufen-Bitmap mit acht Bit Bittiefe. Zusätzlich greift das Verfahren auf aktuelle Lidar-Daten zu, um plötzlich auftretende Hindernisse zu erkennen und ihnen auszuweichen. Der Roboter verwendet das Navigationsverfahren Simultaneous Localization And Mapping (SLAM) des ROS-Packages gmapping [gma] zur Erstellung eines Navigationspfads. Das Verfahren ermöglicht es dem Roboter, sich gleichzeitig in einer unbekannten Umgebung zurechtzufinden, eine Karte zu erstellen und anhand dieser zu navigieren. Es sei jedoch angemerkt, dass die voraufgezeichnete Karte der Lokalisierung vom SLAM -Algorithmus unberührt bleibt, da es sich dabei nur um eine ideale Übersichtskarte handelt. Die SLAM -Karte spiegelt jedoch den aktuellen Umgebungsplan wider, inklusive aller etwaigen Umgebungsveränderungen und Hindernisse. Den Anstoß, eine Navigationsplanung durchzuführen, erhält das System durch die Be- wegungssteuerung des Roboters, die im ROS-Package move_base [movb] bereitgestellt wird. Es handelt sich dabei um die Implementierung eines ActionServers des Pakets actionlib [act]. Die Grundüberlegung dieses Moduls ist es, Robotern bestimmte Auf- gaben (Actions) aufzutragen, die durch Erreichen eines bestimmten Zielzustands (Goal) erfüllt werden. Im Falle der Bewegungsausführung ist das die Ankunft des Roboters am Zielort. Es kann jedoch nicht immer davon ausgegangen werden, dass die vorgegebe- nen Ziele auch erreicht werden. Zum Beispiel könnte der Weg zum Ziel blockiert sein oder es trotz Vorsichtsmaßnahmen zu Zusammenstößen kommen. In diesen Fällen ist eine weitere Ausführung der Aufgabe kontraproduktiv und sollte abgebrochen werden. Das System muss darüber ebenso informiert werden, wofür ActionServer neben Goal- auch Feedback-Topics bereitstellen und die Möglichkeit bieten, die Action auch wieder abzubrechen. Die Action der move_base wird in Auflistung A.16 angeführt. Sie definiert das Goal- Topic target_pose und das Feedback-Topic base_position, beide vom Typ PoseStamped (Auflistung A.11). Es handelt sich dabei um Positionsangaben, die mit Frame- und Zeitangaben versehen sind. Eine Definition des Result-Topics ist in dieser Action nicht notwendig. Aus dem Bewegungspfad, den das Navigationsystem aus den gegebenen Informationen erstellt, werden nun konkrete Richtungsangaben in der Form von Twist Messages (Auflistung A.6) extrahiert. Diese wiederum werden vom Bewegungsmodell des RB- Kairos in Steuersignale für seine vier Mecanum-Räder umgewandelt. Der Roboter setzt sich also in Bewegung und erhält laufend aktualisierte Lidar-Daten seiner Umgebung, die sowhol zur erneuten Positionsbestimmung im Raum, als auch zur Erkennung und Umfahrung von Hindernissen verwendet werden. Die Bewegung wird solange ausgeführt, 36 4.1. Ausgangssituation bis das Feedback-Topic base_position (in etwa) mit dem Goal-Topic target_pose übereinstimmt oder vorher abgebrochen wird. Zu einem Abbruch kommt es auch, wenn einer der beiden Notstopp-Buttons des RB-Kairos betätigt wird. Der eine befindet sich auf der Rückseite des Chassis, der andere auf einer Fernbedienung, die am Gürtel des Operators getragen werden kann. Das Notstoppsystem beendet nicht nur die Ausführung der Bewegungs-Action, sondern unterbricht auch die Stromversorgung der Radmotoren, sodass der Roboter zu einem unverzüglichen Halt kommt. Eine Wiederaufnahme des Fahrbetriebs ist durch Reaktivierung des Notstopp- Buttons und drücken der Restart-Taste auf der Rückseite des Roboters möglich. Neben der autonomen Navigation des RB-Kairos kann dieser auch manuell über den, vom Roboterhersteller beigelegten, PlayStation 4 Controller gesteuert werden. Die Verarbeitung der Controllereingabe erfolgt durch eine in Abschnitt 3.3 Robot Operating System vorgestellte Teleop-Node. Zur validen Steuerung des Roboters setzt diese das Drücken und Halten des sogenannten Deadman-Buttons voraus. Sollte dieser nicht betätigt worden sein, so werden alle weiteren Eingaben am Controller ignoriert und der Roboter kommt bei Mangel an anderen Steuerkommandos zum Stillstand. Ein Notstopp wird dabei nicht ausgelöst. Die Mecanum-Räder erlauben die Steuerung des RB-Kairos über drei Freiheitsgrade. Bei diesen handelt es sich um die linearen Achsen entlang x und y sowie die Rotationsachse um z im Koordinatensystem von ROS (Tabelle 3.3). Die Achsengeschwindigkeiten werden, genauso wie die Richtungsangaben der Bewegungssteuerung, als Twist Messages in ROS publiziert. Bevor beide Signale jedoch an das Bewegungsmodell des Roboters übergeben werden, gelangen sie in die Multiplexer-Node des twist_mux Packages [twi]. Obwohl ROS die Möglichkeit bietet mehrere Publisher gleichzeitig auf einem Topic veröffentlichen zu lassen, ist dies nicht immer wünschenswert. So auch bei der Steue- rung der Bewegungsgeschwindigkeit des Roboters. Zum Beispiel ist ein Lenkmanöver der autonomen Navigation nach rechts und eine unmittelbare Steuerung nach links durch Benutzereingabe für beide Arten nicht zielführend. Aus diesem Grund werden im twist_mux die verschiedenen Inputs mit Prioritäten versehen und niedriger gereihte Signale zugunsten der höheren ignoriert. In typischen Robotersetups, und auch im Fall des RB-Kairos, haben Benutzereingaben Priorität gegenüber der autonomen Navigation. Die wichtigste Komponente am Roboter ist der Manipulator UR-10 . Seine Steuerung wurde bereits kurz in Abschnitt 3.4 UR-10 beschrieben. Der Roboterarm ist an der Oberseite des Roboters angebracht und besitzt seinen eigenen Computer im Inneren des Chassis. Er hat zudem seinen eigenen Einschaltknopf, siehe Abschnitt A.2 (Hochfahren des RB-Kairos), und ebenso, wie der Hauptrechner des RB-Kairos, USB- und HDMI- Anschlüsse an der Außenseite. Der Hauptrechner kommuniziert mit dem UR-10 per Ethernet, jedoch ist der Roboterarm auch direkt mit dem Notstoppsystem verbunden. Die mit dem UR-10 kommunizierende ROS-Komponente ist das bereits erwähnte Motion- Planning-Framework MoveIt. MoveIt implementiert intern einen ActionServer und führt Actions vom Typ MoveGroup (Auflistung A.17) aus. Die Aufgaben eines Manipulators 37 4. Design sind umfangreich und werden in der MoveGroup-Konfiguration als Sub-Actions definiert. Zu ihnen zählen beispielsweise das Abfahren eines Bewegungspfads (FollowJointTrajec- tory) und das Öffnen und Schließen eines Greifers (GripperCommand). Der RB-Kairos wurde für die TU Wien als Forschungsroboter ohne Gripper und ohne bestimmte Anfor- derung geliefert. Aus diesem Grund ist das Motion Planning Framework am Roboter nur rudimentär vorkonfiguriert und der Roboterarm beherrscht in seiner Werkseinstellung nur eine Demonstration seiner Bewegungsfähigkeiten. Die Implementierung der Manipu- lationsroutine dieser Diplomarbeit wird in Abschnitt 5.3 (Konfiguration von UR-10 und MoveIt) beschrieben. 4.2 Entwurf des VR-Systems Dieser Abschnitt beschäftigt sich mit den Designüberlegungen, die zur Umsetzung des in dieser Arbeit vorgestellten VR-Systems führen. Grundaufgabe ist es, einen Konzeptbeweis zu liefern, wie haptisches Feedback in einer raumgroßen VR-Simulation durch einen mobilen Roboter zur Verfügung gestellt werden kann. Dazu soll ein physisches Objekt auf Kommando an einer Stelle im Raum platziert werden, an der Benutzer und Benutzerinnen der Simulation es in der virtuellen Realität erwarten würden. Eine der einfachsten physischen Requisiten für diesen Zweck ist eine quadratische Holz- platte. Sie weist eine simple und flache Geometrie auf, ist stabil und ihre reativ glatte Oberfläche sorgt für ein wiedererkennbares haptisches Gefühl bei der Berührung. Sie lässt sich außerdem sehr leicht mit vier Schrauben am Tool Center Point (TCP) des UR-10 anbringen. Die Holzplatte wird im Verlauf dieser Arbeit Haptikwand genannt. Der RB-Kairos soll die Haptikwand in weiterer Folge an beliebigen Positionen um sich herum platzieren. Um diese Platzierung selbstständig durchführen zu können, muss ROS über die Präsenz der Platte aufgeklärt werden, damit es bei einer Bewegung zu keiner Eigenkollision kommt. Das 3D-Modell des Roboterarms wird daher erweitert und aus diesem in MoveIt eine neue Gelenks-Kinematik erstellt. Das Modul ist in Abbildung 4.1 blau markiert. Die autonome Navigation des RB-Kairos im Raum wird bereits durch die Werkskon- figuration zur Verfügung gestellt und kann deshalb weiterverwendet werden. Sie wird in weiterer Folge mit der Bewegungsausführung des Roboterarms kombiniert, um eine Platzierung der Haptikwand im gesamten Raum zu ermöglichen. Im Kommunikations- diagramm wird dieser Schritt als HapticVr dargestellt. Das Modul wird Befehle von der noch zu erstellenden VR-Szene erhalten und kommuniziert diese an MoveIt und die Bewegungsausführung weiter. Die Position des Benutzers oder der Benutzerin im virtuellen Raum wird durch die Lighthouse-Technologie ermittelt. Das Headset und die Controller , in Abbildung 4.1 grün markiert, empfangen die Lasersignale, die von den Basisstationen ausgesandt werden. Der Windows-PC, der diese Daten auswertet, berechnet daraus die Koordinaten der Vive-Komponenten. Diese Koordinaten haben jedoch keinerlei Bezug zu den Raumko- 38 4.2. Entwurf des VR-Systems ordinaten des Roboters, die bei Lokalisation und Navigation verwendet werden. Es handelt sich bei beiden um voneinander unabhängige Systeme. Um die bereits bestehende Navigationsroutine des RB-Kairos weiterverwenden, ihr aber Zielkoordinaten anhand einer VR-Simulation der Vive auftragen zu können, muss ein gemeinsamer Bezugspunkt geschaffen werden. Am einfachsten zu realisieren ist das durch zusätzliches Tracking des Roboters mittels Lighthouse-Technologie. Um den RB-Kairos im selben Koordinatensystem, wie dem der Vive zu erfassen, kann spezielle Erweiterungshardware des VR-Systems, die sogenannten Tracker , am Roboter angebracht werden. Damit lassen sich die Koordinaten des Roboters im Kontext der VR- Anwendung ermitteln. Eine Umwandlung ins Koordinatensystem von ROS erfolgt durch Kalibration. Die Auswertung der Tracker am Roboter sollte nicht durch den Windows-PC, sondern durch den Computer des RB-Kairos erfolgen. So kann sichergestellt werden, dass der Roboter zur Erfassung seiner Position nicht auf externe Geräte angewiesen ist. Ein Betrieb der benötigten Trackingsoftware SteamVr unter Linux ist dafür Voraussetzung. Der verbleibende Baustein dieses Systems ist die VR-Anwendung und damit die grafische Darstellung der Benutzererfahrung. Aufgrund der besonderen Hardwarevoraussetzungen wird diese nicht am RB-Kairos, sondern auf einem zusätzlichen Windows-Computer ausgeführt. Er sorgt für die Erfassung der Userkoordinaten und die Berechnung der virtuellen Szene. Aus den bereits erwähnten Vorteilen kommt dabei das Framework Unity zum Einsatz. Für die Kommunikation zwischen den beiden Systemen bietet sich die rosbridge an, die in Unity durch das ROS-Sharp Plugin [rosb] unterstützt wird. Die VR-Anwendung soll als Ausgangspunkt für die Steuerung des Roboters dienen. Einem Benutzer oder einer Benutzerin wird eine virtuelle Umgebung präsentiert in der er oder sie sich aufhalten kann. Die zu sehenden Objekte existieren alle nur virtuell und können passiert werden. Auf Befehl des Users soll eines dieser Objekte mit einer Haptik versehen werden, indem der Roboter die Haptikwand an die entsprechende Stelle platziert, an der sie ein User in der virtuellen Welt erwarten würde. Idealerweise stimmen die Oberflächeneigenschaften der quadratischen Haptikwand mit jenen des virtuellen Objektes überein, daher bieten sich Objekte mit gerader Oberfläche zur Simulation, zum Beispiel Tische, Wände oder Würfel, an. Die Selektion eines Objekts könnte mittels eines virtuellen Laserpointers stattfinden. Unity bietet als Spiele-Framework bereits vorgefertigte Algorithmen zur Berechnung von dreidimensionaler Geometrie, unter anderem auch eine Raycasting-Funktion, mit der eine Linie auf Intersektion mit Kollisionsgeometrie getestet werden kann. Der so ermittelte Schnittpunkt könnte als Platzierungspunkt der Haptikwand herangezogen werden, die mittig am TCP des Roboterarms angebracht wird. Die Raycasting-Funktion liefert neben dem Schnittpunkt der Geraden mit der Geometrie auch das getroffene Objekt zurück. Dieses könnte auch einen anders definierten Platzierungspunkt der Haptikwand bestimmen. Der vom User und der Geometrie bestimmte Platzierungspunkt wird in weiterer Folge als PoseStamped-Message durch das ROS-Sharp Plugin in ROS veröffentlicht. Der 39 4. Design Empfang dieser Nachricht ist zugleich der Befehl, den RB-Kairos und die Haptikwand in Stellung zu bringen. Zur Anbindung des Windows-PC an das Netzwerk des RB-Kairos und zur Übertragung des Platzierungspunkts an ROS wird ein zusätzlicher Router mit Wi-Fi-Access-Point angeschafft. Die Netzwerkverbindung muss so eingerichtet werden, dass sich alle Kompo- nenten des VR-Systems im selben Netzwerk befinden. Dies kann erfolgen, indem einer der Router in den Repeat-Modus gesetzt wird, also die Netzwerkparameter des anderen widerspiegelt. Zusätzlich soll das Netzwerk einen Zugang zum Internet erhalten, um benötigte Software und Updates herunterladen zu können. 40 KAPITEL 5 Umsetzung Dieses Kapitel enthält die Umsetzung der in Abschnitt 4.2 (Entwurf des VR-Systems) beschriebenen Designüberlegungen und die Konfiguration und Implementierung der Hard- und Softwaremodule. Abschnitt 5.1 (Hardwareinstallationen) gibt einen Überblick über die zusätzliche Hardware, die zum Betrieb des VR-Systems am Roboter angebracht wird. Abschnitt 5.2 (Netzwerkkommunikation) beschreibt die Herstellung eines gemein- samen Wi-Fi-Netzwerks, über das die Computer dieser Arbeit kommunizieren können. Abschnitt 5.3 (Konfiguration von UR-10 und MoveIt) beschäftigt sich mit der Inbe- triebnahme des in dieser Arbeit vorgestellten Manipulators und seiner Integration in ROS . Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos) zeigt, wie der Roboter seine Position anhand der Lighthouse-Technologie der Vive ermitteln und anhand dieser Ko- ordinaten im Raum navigieren kann. Abschnitt 5.5 (Integration des UR-10) beschreibt, wie die Bewegungsausführung des Roboterarms mit der Navigationslösung des Roboters kombiniert wird, um die Platzierung der Haptikwand im gesamten Raum zu ermögli- chen. Abschnitt 5.6 (VR-Anwendung) beschäftigt sich schließlich mit der Erstellung einer VR-Anwendung und ihre Anbindung an das Robotiksystem in ROS . Abschnitt 5.7 (Inbetriebnahme) listet die Schritte auf, die ausgeführt werden müssen, um die gesamte Robotikanwendung in Betrieb zu nehmen und für ein reibungsloses Zusammenspiel der Komponenten zu sorgen. 5.1 Hardwareinstallationen Im Zuge dieser Arbeit fanden einige Harwareerweiterungen am RB-Kairos statt. Um den Roboter mit der Lighthouse-Technologie der Vive zu orten werden zwei Tracker an seiner Gehäuseoberfläche angebracht. Die Tracker sind auf ihrer Unterseite mit 1/4- Zoll-Stativgewinden ausgestattet, die es ermöglichen, sie auf eine eigens hergestellte Acrylglasschiene zu schrauben. Die Schienen werden mit Hilfe der Befestigungslöcher auf der Oberseite des RB-Kairos angebracht. Die Tracker haben Akkus integriert und werden 41 5. Umsetzung Abbildung 5.1: Detailansicht der Hinterseite des RB-Kairos. Zu sehen sind unter anderem der hintere Vive-Tracker , das Display und der USB-Hub. per USB geladen. Ihre Kommunikation mit Computern erfolgt trotz der vorhandenen USB-Buchse ausschließlich durch die beigelegten USB-Empfänger. Die Tracker empfangen die Lichtsignale von Lighthouse-Basisstationen. Von ihnen sind bereits drei Stück an den Wänden beziehungsweise an Stativen in Deckennähe angebracht. Sie decken dabei einen Trackingbereich von circa 8×6, 3 m ab. Im Zuge dieser Diplomarbeit bedarf es keiner weiteren Anpassungen der Lighthouses. Um die USB-Empfänger zu betreiben und gleichzeitig die Tracker mit Strom zu versor- gen, reichen die zwei USB-Anschlüsse auf der Rückseite des Roboters nicht aus. Aus diesem Grund wird dort zusätzlich ein USB-Hub angebracht. Um seine Stromversorgung sicherzustellen, wurde eine 5-Volt-Stromleitung aus dem Inneren des Chassis nach außen gelegt und der Hub an diese angeschlossen. Der RB-Kairos wird weiters mit einem 7-Zoll-Touchscreen ausgestattet, um Funktionen des Roboters am Gerät selbst starten zu können. Außerdem kann damit der Status der Tracker leicht überwacht werden. Für den Betrieb des Lighthouse-Trackings ist das Display sogar essenziell, da SteamVr sonst nicht gestartet werden kann. Mehr dazu in Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos). Der Touchscreen wird per externem HDMI-Anschluss und USB-Hub mit dem internen Computer verbunden. Die Positionierung des Displays erlaubt außerdem einen Anschluss an die externen Ports des UR-10 , die sich ebenfalls auf der Rückseite des Roboters befinden. Abbildung 5.1 zeigt die Hardwarekomponenten, die am Roboterchassis angebracht wurden. Der letzte Zubau zum Roboter ist die Montage der Haptikwand. Bei ihr handelt es 42 5.2. Netzwerkkommunikation sich um eine quadratische Holzplatte mit den Maßen 0, 01 × 0, 6 × 0, 6 m. Mit vier Gewindeschrauben wird diese an den Montagelöchern des TCP des UR-10 angebracht. Abbildung 5.2 zeigt den gesamten RB-Kairos inklusive Haptikwand und zusätzlicher Komponenten. 5.2 Netzwerkkommunikation Wie in Abschnitt 4.2 (Entwurf des VR-Systems) erwähnt, soll die Kommunikation des RB-Kairos mit dem Windows-Rechner per Wi-Fi erfolgen. Die einfachste Art, dies zu bewerkstelligen und das System zusätzlich mit einer Internetverbindung zu versorgen, ist die Integration eines weiteren Wi-Fi-Routers. Der zusätzliche Router wird an seinem WAN-Port mit einer der Netzwerksteckdosen im Labor der TU Wien verbunden. An einer seiner LAN-Buchsen wird der Windows-PC angeschlossen. Das Wi-Fi Netzwerk HapticVr sorgt für einen kabellosen Zugang zu diesem Netzwerk. Der RB-Kairos betreibt auf seinem internen Router ein Wi-Fi-Netzwerk names rbkairos. Das Ziel ist, die beiden Netzwerke zu koppeln und ihre Kommunikation herzustellen. Da der Router im Labor über einen Zugang zum Internet verfügt, wird dieser auch die Bereitstellung der Netzwerkfunktionen übernehmen. Der interne Router wird hingegen umkonfiguriert und in den Repeat-Modus versetzt. Dieser spiegelt nun das HapticVr- Netzwerk und leitet die Kommunikation des externen Netzwerks an die internen Kompo- nenten im Roboter weiter. Auf diese Art erhalten die internen Geräte auch Zugang nach außen und zum Internet. Die internen Netzwerkgeräte des RB-Kairos werden über statische IP-Adressen ange- sprochen. Die Adressen und der IP-Adressbereich müssen daher im HapticVr-Netzwerk genau wie im rbkairos-Netzwerk eingestellt werden, um eine unnötige Neukonfigu- ration von ROS zu vermeiden. Mit dieser Methode haben nun auch Computer des Labor-Netzwerks einen einfachen Zugang zum roscore des RB-Kairos. Wie erwähnt, ist der Betrieb derselben Betriebssystem- und ROS-Versionen auf den Geräten Vorausset- zung. Diese erfüllt der ans Netzwerk angeschlossene Windows-Rechner nicht, weshalb in Abschnitt 5.6 (VR-Anwendung) näher auf die geschmälerte Kommunikation über die rosbridge eingegangen wird. Andere Computer, die die Anforderungen an ROS erfüllen, haben aber durch Netz- werkkontakt zum roscore ungeschränkten Zugang zu allen Features. Zu diesem Zweck wwerden auf einem Notebook Ubuntu 16.04 und ROS Kinetic Kame installiert und die IP-Adresse des Robotercomputers als Netzwerkstandort des roscore konfiguriert. Die Hauptaufgabe des Notebooks ist die Fernwartung des Systems und das Debugging der ROS-Topics durch Konsolenausgabe und RVIZ . Zusätzlich können per SSH -Zugang zum Roboterrechner Prozesse und Nodes beendet und neu gestartet werden, während sich der RB-Kairos an einer beliebigen Stelle im Raum aufhalten kann. 43 5. Umsetzung Abbildung 5.2: Gesamtansicht des Roboters mit am Endeffektor angebrachter Wandat- trappe (Haptikwand). 44 5.3. Konfiguration von UR-10 und MoveIt (a) Einrichtung des TCP an der Spitze des Ro- boterarms. (b) Das Move Interface zur manuellen Bewegung des Endeffektors. Abbildung 5.3: Polyscope, das User Interface des UR-10 . 5.3 Konfiguration von UR-10 und MoveIt Eine der Komponenten des RB-Kairos, die über das Netzwerk angesprochen werden können, ist der Roboterarm UR-10 . Um eine Initialkonfiguration des Manipulators vor- nehmen zu können, müssen zunächst Monitor und Eingabegeräten angeschlossen werden. Es kann auch das Touchdisplay verwendet werden, das bereits am Roboter angebracht wurde und normalerweise an den Robotercomputer angeschlossen ist. Abbildung 5.3 zeigt das User-Interface Polyscope des UR-10 . Es dient zur Einrichtung des Arms, zum Laden von Roboterprogrammen und bietet Möglichkeiten zur rudimetären Steuerung der Gelenke. In einem Setupschritt wird zunächst die Nutzlast angepasst, da sich nun die circa 2,9 kg schwere Haptikwand am TCP befindet. Weiters wird das Netzwerkinterface des Manipulators aktiviert. Es wird zur Kommunikation mit ROS benötigt und ist standardmäßig deaktiviert. Alle weiteren Einstellungen des Arms erfolgen über ROS . Der Hersteller liefert den RB-Kairos mit einer vorkonfigurierten, dreidimensionalen Beschreibung des Roboters aus. Sie liegt im Xacro-Format vor und beinhaltet ein 3D-Modell des Roboters sowie eine hierarchische Beschreibung seiner Gelenksdefinitionen. Bei diesen handelt es sich um die Angabe der Gelenksart, zum Beispiel Rotations- oder Translationsgelenk und das Bewegungsausmaß des Gelenks. Die Gelenke des UR-10 bieten zum Beispiel einen Rotationsbereich von fast 720°. Die Roboterbeschreibung wird um die in Abschnitt 5.1 (Hardwareinstallationen) zusätzlich angebrachte Hardware erweitert. Dies ist notwendig, um den Roboterarm über die bislang unbekannten Komponenten aufzuklären und so Eigenkollisionen während der Bewegungsausführung zu vermeiden. Die Haptikwand wird als Quader mit den Maßen 0, 01 × 0, 6 × 0, 6 m definiert und inklusive gleich großer Kollisionsgeometrie an den Endeffektor-Link des Roboterarms angehängt. Bei den übrigen Aufbauten genügt die alleinige Bekanntgabe einer neuen Kollisonsgeometrie, die als rechtwinkeliges Volumen mit einer Höhe von 0,04 m auf der Oberseite des Roboterchassis platziert wird. Der Fußboden wird ebenfalls mit einem Kollisionsobjekt versehen, um dem Roboterarm eine Bewegung des Arms gen Boden zu 45 5. Umsetzung (a) Das aktualisierte 3D-Modell des RB-Kairos inklusive Haptikwand. (b) Die neue Kollisionsgeometrie in rot und die vordefinierte des UR-10 in silber. Abbildung 5.4: Die dreidimensionale Beschreibung des Roboters. Ausschnitt aus RVIZ . untersagen. Abbildung 5.4 zeigt das erweiterte 3D-Modell und die Kollisionsgeometrie des RB-Kairos. Die zusätzliche Definition des statischen Gelenks der Haptikwand ist in Abbildung 3.3 ersichtlich. Die erstellte Roboterdefinition ersetzt in weiterer Folge jene, die bislang beim Start von ROS ausgelesen wurde. Sie wird im Transform Tree verwaltet. Mit der neuen Roboterdefinition kann nun ein Kinematik-Modell des Roboterarms im Setup Assistant von MoveIt erzeugt werden. Die Software berechnet zuerst durch die zufällige Annahme von Gelenkswinkeln die möglichen Kollisionen mit sich selbst. So erkennt das Programm Frames, die niemals miteinander kollidieren, zum Beispiel die vier Räder untereinander, und daher bei zukünftigen Berechnungen ignoriert werden können. Ignoriert werden können auch jene Frame-Paare, die immer kollidieren. Das ist zum Beispiel die in Abbildung 5.4 rot markierte Kollisionsgeometrie mit allen Komponenten, die im Inneren liegen. Das Ziel dieses Vorgangs ist, die Kollisionsmöglichkeiten zu ermitteln, die nur dynamisch auftreten können. Im nächsten Schritt werden MoveGroups definiert. Bei ihnen handelt es sich um Gruppen von Robotergelenken, die zusammen eine Bewegungsausführung definieren. Zum Beispiel können die Gelenke des Arms eine Gruppe bilden und die Fingergelenke eines Greifers eine andere. Die beiden Gruppen lassen sich auf diese Weise unabhängig voneinander ansteuern. Im Roboteraufbau dieser Arbeit gibt es nur eine MoveGroup, die alle sechs echten Gelenke des UR-10 und einige virtuelle Joints enthält. Diese bilden eine hierarchische Kette von der Montageplatte des UR-10 bis zur Haptikwand. Ein Ausschnitt der Kette ist in Abbildung 3.3 zu sehen. Nach der MoveGroup-Definition können in MoveIt statische Posen angelegt werden. Bei diesen handelt es sich um vordefinierte Gelenksstellungen, die der Roboter auf Kommando 46 5.4. Lighthouse Tracking des RB-Kairos Abbildung 5.5: Einrichtung der Transportstellung des UR-10 im Setup Assistant von MoveIt. einnehmen kann. Es wird eine Transportstellung definiert, bei der sich der Roboterarm so weit wie möglich zusammenfaltet, um ein möglichst geringes Volumen während der Navigation der Roboterbasis zu bieten. Der Roboterarm hat eine Reichweite von 1,3 m und eine Eigenmasse von 29 kg, die sich im ausgestreckten Zustand sehr schnell auf das Fahrverhalten des Roboters auswirken. Mit diesen Einstellungen erzeugt MoveIt schließlich ein kinematisches Modell, das nun per MoveGroup-Action (Auflistung A.17) angesteuert werden kann. Abbildung 5.5 zeigt einen Screenshots aus dem Setup Assistant von MoveIt, auf dem die Transportstellung des UR-10 zu sehen ist. 5.4 Lighthouse Tracking des RB-Kairos Wie in Abschnitt 5.1 (Hardwareinstallationen) beschrieben, wurden zwei Vive Tracker am Chassis des RB-Kairos angebracht, um die Koordinaten des Roboters im Kontext der Lighthouse-Technologie zu ermitteln. Die Berechnung der Trackingdaten erfolgt durch das in Abschnitt 3.5 (Unity) erwähnte OpenVr SDK , das jedoch einige Probleme mit sich bringt. Die Software wurde für Computer entwickelt, die die Hardwarevorraussetzungen zum Betrieb eines VR-Systems besitzen. Zu ihnen zählt eine performante Grafikeinheit, die der interne Computer des RB-Kairos nicht besitzt. Es kann auch keine zusätzliche Grafikkarte nachgerüstet werden, da im Gehäuse des Roboters nicht genug Platz vor- handen ist. Erschwerend kommt hinzu, dass die benötigte Laufzeitumgebung SteamVr vorrangig für Windows entwickelt wird und der Computer als Betriebssystem Linux verwendet. Es liegt daher nahe, das Tracking des RB-Kairos auf einem kompatiblen Computer durchzuführen und die Koordinaten per Netzwerk zurück zum Roboter zu senden. 47 5. Umsetzung Abbildung 5.6: Ausschnitt aus dem UI von SteamVr mit erfassten Trackern, Lighthouses, Controller und Fehlermeldung. Nachteil dieser Methode ist, dass der Roboter für das Lighthouse-Tracking auf einen externen Computer angewiesen ist. Diese Tatsache ist im Kontext des VR-Systems dieser Diplomarbeit nicht wichtig, da ohnehin ein Windows-PC zur Darstellung der virtuellen Realität vorhanden ist. Sollte das Konzept jedoch zu einem späteren Zeitpunkt geändert werden und der Rechner nicht mehr zur Verfügung stehen, so können auch die Koordinaten des Roboters nicht mehr ermittelt werden. Es wird daher versucht, die Berechnung der Roboterkoordinaten am RB-Kairos durchzuführen. Um das Tracking unabhängig von anderen Computern zu betreiben kann die Software mit einer speziellen Konfiguration am PC des RB-Kairos installiert werden. Die performante grafische Rechenleistung ist in SteamVr nur zur Darstellung von 3D-Grafik in einem Headset notwendig. Am RB-Kairos wird sie aber nicht benötigt, da auch kein Headset auf ihm betrieben wird und kann, durch Entfernen beziehungsweise durch Verzicht auf die Installation des Grafiktreibers, unterbunden werden. Abschnitt A.1 (Einrichtung von SteamVr auf dem Roboter) enthält eine genaue Anleitung zur Installation von Steam, SteamVr und OpenVr und ihre Konfiguration auf dem Rechner des Roboters. Nach erfolgter Installation werden Steam und SteamVr gestartet. Dabei meldet Steam, dass eine Komponente nicht richtig funktioniert (A key component of SteamVR has failed) (siehe Abbildung 5.6). Der Fehler ist bekannt und auch gewollt. Bei der fehlgeschlagenenen Komponente handelt es sich um das Grafikfenster der VR-Szene, das normalerweise nach dem Start von SteamVr am HMD angezeigt wird. Da jedoch kein Headset angeschlossen ist und der benötigte Grafiktreiber nicht installiert wurde, bricht das System die Ausführung der Komponente ab. Die Funktionsweise des Trackings 48 5.4. Lighthouse Tracking des RB-Kairos bleibt von diesem Fehler unberührt. Die nicht erfolgende Grafikdarstellung spart zudem Rechenleistung am Roboter. Obwohl keine 3D-Grafik ausgegeben wird und die Anzeige von SteamVr nur einem Statusbericht dient, ist der Anschluss eines Displays essenziell. SteamVr ist so konzipiert, dass seine Ausführung verhindert oder beendet wird, wenn kein Monitor erkannt wird. Das passiert auch beim Abziehen des HDMI-Kabels und beim Abschalten des Displays. Unter anderem aus diesem Grund führt der RB-Kairos sein eigenes Touchdisplay mit. Auf die Monitorproblematik wird in Abschnitt 7.1 (Verbesserungspotential) näher eingegangen. Um das Orten der Tracker zu ermöglichen, müssen diese mit dem System gekoppelt werden. Nach dem Start des Gerätesuchlaufs in SteamVr und einem langen Druck auf den Einschaltknopf jedes Trackers scheinen diese nun in der Übersicht auf. Sobald die Tracker Sichtkontakt zu den Lighthouse-Basisstationen haben, können ihre Koordinaten erfasst werden. Beim Auslesen der Tracker-Koordinaten kommt das Basis-Framework von SteamVr Open- Vr zum Einsatz. Die für diesen Zweck erstellte ROS-Node wurde in Python geschrieben und bedient sich der Softwarebibliothek pyopenvr [pyo], um die Daten von OpenVr in Python zugänglich zu machen. Die erhaltenen Tracker-Koordinaten entsprechen dem in Abschnitt 3.6 (Koordinatensysteme) beschriebenen Schema von OpenVr und liegen in Matrixnotation vor. Anhand der in Auflistung A.19 angegebenen Umrechnungsfunktion können die Koordinaten zur Verwendung als PoseStamped Messages (Auflistung A.11) umgewandelt werden. Die Nachrichten werden mit einem Zeitstempel versehen und anhand der Seriennummer des Trackers in einem eigenen Topic veröffentlicht. Die Koor- dinatenermittlung findet jedoch nur statt, wenn der Tracker auch Sichtkontakt zu den Basisstationen hat. Die Tracker befinden sich an definierten Positionen am Gehäuse des RB-Kairos mit einer Entfernung von 0,55 m entlang der X -Achse und 0,4 m entlang der Y -Achse zueinander. Der Winkel zwischen ihrer Verbindungslinie und der Vorwärtsrichtung des Roboters ent- spricht demnach ungefähr 36,03°. Die Ausrichtung der Tracker auf der Gehäuseoberseite ist dabei egal, da aus Genauigkeitsgründen nur die Verbindungslinie zur Winkelbestim- mung verwendet wird. Der gemeinsamer Schwerpunkt der beiden Tracker stimmt mit dem horizontalen Mittelpunkt des Roboters überein. Zusammen mit der bekannten Montagehöhe von etwa 0,52 m über dem Fußboden lässt sich so der Base-Footprint aus der Sicht der Vive berechnen, der in weiterer Folge rbkairos_origin genannt wird. Sobald der rbkairos_origin aus den Koordinaten beider Tracker einmalig ermittelt wird, werden die Transformationen von beiden Trackern zum rbkairos_origin ab- gespeichert. Mit diesen kann nun von jedem Tracker einzeln der rbkairos_origin berechnet werden. Das bietet den Vorteil, dass die Ortung des Roboters bei Ausfall oder Verdeckung eines einzelnen Trackers aufrechterhalten werden kann. Zur Feststellung von Trackingausfällen werden die Zeitstempel der PoseStamped-Nachrichten auf ihre Aktualität überprüft und im Notfall auf eine Einzelberechnung der Roboterkoordinaten umgeschaltet. Der ermittelte rbkairos_origin und die Koordinaten der drei Lighthou- 49 5. Umsetzung Abbildung 5.7: Die Positionen der Vive-Tracker und Lighthouses im Visualisierungstool RVIZ . Im oberen Bildbereich sind die drei Lighthouses zu erkennen. Bei den unteren drei Markern handelt es sich um die zwei erfassten Tracker und dem daraus errechneten rbkairos_origin. ses werden anschließend als Kinderknoten des Frames vive_origin im Transform Tree veröffentlicht (siehe Abbildung 5.7). Als Elternframe von vive_origin wird der Root-Frame des Weltkoordinatensystems rbkairos_map gesetzt. Der vive_origin ist daher ein Geschwisterknoten des Odo- metrie-Frames rbkairos_odom. Aktuell befindet sich vive_origin genau am Ko- ordinatenursprung von rbkairos_map (siehe Abbildung 5.8a). Wie in Abschnitt 4.2 (Entwurf des VR-Systems) erwähnt, handelt es sich aber um zwei Frames, die ihren Ursprung selbst gewählt haben. Der vive_origin muss daher noch entsprechend ausge- richtet beziehungsweise kalibriert werden, um seine, der Realität entsprechende, Position einzunehmen. Ausgangspunkt der Kalibration sind die aktuellen Koordinaten des RB-Kairos. Diese wer- den im Transform Tree vom Navigation Stack als Frame rbkairos_base_footprint und von der Vive als Frame rbkairos_origin geliefert. Die Koordinaten von vive_origin müssen nun so angepasst werden, dass der Frame rbkairos_origin genau über jenem von rbkairos_base_footprint liegt. Die zu ermittelnden Koor- dinaten von vive_origin lassen sich durch Anwendung der Formel −−−−−−−−→ vive_origin × −−−−−−−−−−−−→ rbkairos_origin = −−−−−−−−−−−→ rbkairos_odom × −−−−−−−−−−−−−−−−−−−→ rbkairos_base_footprint berechnen, wobei die angegebenen Vektoren jeweils den Transform-Koordinaten (Auflis- tung A.4) zwischen Elternframe und aktuellem Frame entsprechen. Abbildung 5.8b zeigt 50 5.4. Lighthouse Tracking des RB-Kairos (a) Vor der Kalibration: vive_origin befindet sich am Ursprung von rbkairos_map und die drei Lighthouse-Frames (vive/LHB_...) an falschen Raumkoordinaten. (b) Nach der Kalibration: vive_origin wurde vom Ursprung der Karte weggeschoben und dadurch die Lighthouse-Frames richtig positioniert. Abbildung 5.8: Auschnitte aus RVIZ vor und nach der Kalibration des vive_origin- Frames. 51 5. Umsetzung die Koordinaten nach erfolgter Kalibration. Dieser Schritt ist nur einmal notwendig, da davon ausgegangen werden kann, dass sich die Positionen der Lighthouses und die Karte des Raums nicht ändern werden. Mit diesem Kalibrationsschritt ist es nun möglich, dem Roboter Bewegungskommandos, sowohl im Weltkoordinatenframe als auch im Koordinatenframe der Vive, zu erteilen. ROS kümmert sich automatisch um die Umwandlung der Koordinaten, solange der Transform Tree ihren Bezug herstellen kann. Zur Ausführung einer Navigationsaufgabe innerhalb einer ROS-Node wird ein ActionClient verwendet. Er ist das Gegenstück zum ActionServer, den zum Beispiel die move_base Komponente (Auflistung A.16) implementiert, und für die Kommunikation zwischen ActionServer und Nodes verantwortlich ist. Die target_pose der move_base ist vom Typ PoseStamped (Auflistung A.11) und enthält neben den Zielkoordinaten auch die Angabe des Frames, in dem sich die Koordinaten befinden. Um die Navigationsfähigkeiten des Roboters zu testen, wird RVIZ am Fernwartungsno- tebook gestartet. Es enthält ein Plugin, mit dem durch Klick auf die Übersichtskarte eine Navigation zu eben jenem Punkt angestoßen werden kann. Der RB-Kairos wird daraufhin einen Navigationspfad berechnen, seine Motoren in Bewegung setzen und auf das Ziel zusteuern. Durch den Navigationsalgorithmus SLAM erkennt er dabei auch spontan auftretende Hindernisse entlang seines Pfads, wird automatisch langsamer und versucht, diese anhand seiner Lidar-Daten zu umfahren. Der RB-Kairos ist nun in der Lage, an einen beliebigen Punkt im Koordinatenframe der Vive autonom zu navigieren. Der nächste Schritt ist die Einbindung der Manipulator- Steuerung in dieses Bewegungskonzept. 5.5 Integration des UR-10 In Abschnitt 5.3 (Konfiguration von UR-10 und MoveIt) wurde ein Kinematik-Modell des Roboterarms UR-10 erstellt und eine MoveGroup erzeugt. Diese kann nun in ROS per Software gesteuert werden. Die erstellte Node mit dem Namen HapticVr kennt zwei Positionen des Arms, an denen sich dieser in einem bewegungslosen Zustand befindet. Die erste ist die in der Konfigurationsphase erzeugte Transportstellung (siehe Abbildung 5.5), die der Roboterarm während der Bewegung des Chassis einnimmt. Bei der zweiten Position handelt es sich um eine ausgefahrene Stellung des Roboterarms an jene Position, die der Roboter als Endposition zur Platzierung der Haptikwand erhalten hat. Die zweite Position wird aufgrund der Koordinaten der Roboterbasis dynamisch berechnet und dient als Input der HapticVr-Node. Die erstellte Node beinhaltet einen Subscriber , der Messages vom Typ PoseStamped (Auflistung A.11) vom Topic rbkairos/hapticvr/goal empfängt. Die Nachrichten enthalten Position, Orientierung sowie die Angabe des Bezug-Frames und wird in weiterer Folge Zielpunkt genannt. Sofern der RB-Kairos bereit ist, bewirkt ein Empfang dieser Nachricht die Ausführung der weiteren Schritte. Zunächst wird der UR-10 angewiesen, 52 5.5. Integration des UR-10 die in Abschnitt 5.3 (Konfiguration von UR-10 und MoveIt) definierte Transportstellung einzunehmen. MoveIt stellt hierzu ein Softwareobjekt namens MoveGroupCommander [mova] zur Verfügung, das für die Abwicklung der Aufgaben einer MoveGroup zuständig ist. Der Commander erlaubt unter anderem die Angabe der Zielstellung des Endeffektors durch Koordinaten sowie die Gelenksstellungen anhand der im Setupschritt festgelegten stati- schen Posen. Die Transportstellung kann somit namentlich als Zielstellung der Gelenke angegeben werden. Nach Start des MoveGroupCommanders erfolgt die automatische Berechnung und die Ausführung des Bewegungspfads. Nachdem der UR-10 die Einnahme der Transportstellung erfolgreich beendet hat, wird der RB-Kairos angewiesen in die ungefähre Nähe des Zielpunkts zu navigieren. Die Funktionsweise der Navigation wurde bereits in Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos) erklärt. Der Zielort der Navigation wird 0,7 m hinter dem gewünschten Zielpunkt der Haptikwand definiert. Dieser Abstand erlaubt dem Roboterarm genügend Bewegungsfreiheit zwischen Chassis und Zielpunkt und ist ein Erfahrungswert, der sich während der Arbeit mit dem Roboter bewährt hat. Während der Navigation wird laufend die Position des RB-Kairos ermittelt. Der Roboter navigiert anhand der Koordinaten, die der Navigation Stack berechnet, und veröffent- licht diese im Frame des Base-Footprints rbkairos_base_footprint. Die Koor- dinaten, die anhand der Lighthouse-Technologie ermittelt werden, werden im Frame rbkairos_origin publiziert. Da es der Trackinglösung des RB-Kairos systembedingt an Genauigkeit mangelt, kann es dabei zu einer Differenz von mehreren Zentimetern zu den ermittelten Koordinaten der Vive kommen. Zu diesem Zeitpunkt wird daher ange- nommen, dass sich der Base-Footprint des Roboters richtigerweise an den Koordinaten von rbkairos_origin aufhält und diese Stelle auch für die Endpositionierung des Arms verwendet wird. Um dem MoveGroupCommander eine Pose (Auflistung A.5) zur Positionierung des End- effektors zu übermitteln, muss diese relativ zum Base-Footprint angegeben werden. Das bedeutet, dass die Koordinaten des Zielpunkts vom Topic rbkairos/hapticvr/goal aus der Sicht von rbkairos_origin berechnet werden müssen. Der Transform Tree stellt diese Funktionalität für alle in ihm erfassten Frames zur Verfügung. Der Zielpunkt ist jedoch kein Frame, daher wird zunächst die Transformation zum Bezugsframe von rbkairos/hapticvr/goal, der im Header (Auflistung A.8) der Nachricht enthal- ten ist, angefordert. Durch anschließende Matrixmultiplikation mit den Koordinaten der PoseStamped Nachricht kann so die verbleibende Transformation zum Zielpunkt berechnet werden. Der MoveGroupCommander der MoveGroup sorgt erneut für die Berechnung eines Pfads und die Ausführung der Bewegung. Nach Beendigung all dieser Schritte befindet sich an der geforderten Zielposition die Haptikwand des Roboters, die bereit ist, als haptisches Element in der VR-Simulation zu dienen. Sollte es jedoch zu Fehlern kommen, zum Beispiel durch Kollision des Chassis oder des Roboterarms, oder wenn kein passender Pfad 53 5. Umsetzung zum Zielort gefunden werden kann, so wird die Ausführung abgebrochen. Nach Behebung eines etwaigen Notstopps kann durch erneute Veröffentlichung einer Position unter dem Topic rbkairos/hapticvr/goal die Positionierung der Haptikwand wieder gestartet werden. Ausgangspunkt dieser Nachricht ist im fertigen System die VR-Anwendung am Windows-PC. 5.6 VR-Anwendung Die VR-Anwendung ist das Herzstück des visuellen Systems und Ausgangspunkt der Navigationsbefehle an den Roboter. Ihr Betrieb erfolgt auf einem Windows-PC, der in Abschnitt 3.5 (Unity) beschrieben wird. Um das Headset der Vive per Wireless-Kit zu betreiben, ist dessen Montage am HMD notwendig. Dazu wird das HDMI-Kabel des Headsets mit jenem des Wireless-Kits ausgetauscht. Die Stromversorgung erfolgt ab diesem Zeitpunkt mit einem eigenen Akkupack. Außerdem wird die Sendeeinheit des Kits an einem erhöhten Punkt im Labor angebracht und per Kabel mit dem Windows-Rechner verbunden. Der Betrieb des Wireless-Kits erfordert die Installation von Treibern und den Start eines eigenen Wireless-Dienstprogramms. Am Computer ist die Installation von Unity, Steam und SteamVr erforderlich. Die Installa- tion der beiden Steam Komponenten erfolgt, anders als am Roboter, ohne Fehlermeldung, siehe Abschnitt A.1 (Einrichtung von SteamVr auf dem Roboter), da der Windows-PC über die nötigen Hardwarevorraussetzungen erfüllt. Beim Start von Unity wird die Er- zeugung eines neuen 3D-Projekts ausgewählt und der Editor gestartet. Dieser wird in Abbildung 5.9 angezeigt. In der Mitte befindet sich die 3D-Ansicht der Szene, auf der linken Seite der hierarchische Aufbau der Szene, unten die Assets, also die verwendbaren Komponenten innerhalb des Projekts, und rechts das Eigenschaftsfenster der selektierten Komponente. Um die 3D-Anwendung VR-tauglich zu machen, wird das SteamVr-Plugin [steb] aus dem Unity Asset Store [unib] importiert. Das Plugin enthält eine Fülle an Beispielkomponenten, die in einer Demonstrationsszene präsentiert werden, wovon der Großteil aber im Rahmen dieser Diplomarbeit nicht relevant ist. Wichtige Komponenten sind das 3D-Modell der Vive Controller und das CameraRig der VR-Szene. Das CameraRig enthält eine virtuelle Kamera und die Software-Repräsentationen der beiden Controller , und wird in einer leeren Szene platziert. Um den Trackingbereich des Labors mit einer Fläche von 8 × 6, 3 m abzubilden, wird ein Quader mit diesen Ausmaßen und einer Höhe von 0,1 m auf dem Boden erstellt. In einem Testlauf dieser Szene kann sich ein Benutzer oder eine Benutzerin durch Tragen des Headsets frei im eingezeichneten Trackingbereich bewegen, während ihm oder ihr die virtuelle Szene im HMD präsentiert wird. Die Controller der Vive werden ebenfalls automatisch erkannt und durch ein 3D-Modell von ihnen dargestellt. Zurück im Editor erfolgt die Platzierung von virtuellen Objekten, die vom RB-Kairos mit einer Haptik versehen werden können. Es gibt zwei Typen dieser Objekte: Die erste ist eine Fläche, die an einer beliebigen Stellen markiert werden kann, um dort die Haptik bereitzustellen. Der zweite Typ ist ein Würfel, der die gleiche Seitenlänge 54 5.6. VR-Anwendung Abbildung 5.9: Screenshot aus dem Editor von Unity. wie die Haptikwand besitzt und bei dem nach Aktivierung eine der sechs Seiten zur Gänze tastbar werden soll. Die Aktivierung eines Objekts erfolgt durch Betätigung des Controller-Triggers. Insgesamt werden eine Fläche und acht Würfel in der Szene verteilt (siehe Abbildung 5.9). Um ein Haptikobjekt beziehungsweise eine Stelle darauf auszuwählen, wird ein virtueller Laserpointer am 3D-Modell eines Vive-Controllers angebracht. Abbildung 5.9 zeigt rechts unten die Anbindung des Laserpointer-Skripts an den rechten Controller . Bei jedem Updateereignis des Controllers wird eine Gerade ausgehend von seiner Spitze in den Raum projiziert und auf Intersektion mit der Kollisionsgeometrie der Szene überprüft. Bei dieser Funktion handelt es sich um Raycasting, das von der Physikkomponente von Unity zur Verfügung gestellt wird. Wenn ein Schnittpunkt von Linie und Geometrie gefunden wird, liefert die Funktion das getroffene Objekt und die genauen Details zurück. Handelt es sich bei dem Objekt um ein Haptikobjekt und wird zusätzlich der Trigger des Controllers betätigt, so werden die Aktivierungsfunktion des Haptikobjekts aufgerufen und die Koordinaten der Haptikwand festgelegt. Zusätzlich wird für die Darstellung des Laserpointers ein grüner, schmaler Quader mit einer Länge, die dem Abstand von Controller und Kollisionsobjekt entspricht, angezeigt. Auflistung A.18 zeigt die volle Implementation der Updatefunktion des Laserpointers. Bei der Aktivierung der Fläche entspricht der Schnittpunkt mit dem Laserpointer gleich- zeitig den Koordinaten der Haptikwand. Wird jedoch ein Würfel getroffen, so soll die 55 5. Umsetzung Haptikwand am Mittelpunkt der getroffenen Seite platziert werden. Dazu wird der Schnitt- punkt in den Frame des Würfels transformiert und die Koordinaten des Punkts analysiert. Aufgrund des geometrischen Aufbaus eines Würfels entspricht eine der drei Koordinaten genau der halben Seitenlänge. Diese Koordinate hat absolut gemessen auch immer einen größeren Wert als die zwei anderen. Ausnahmen bestehen wenn Ecken oder Kanten getroffen werden. Diese können aber vernachlässigt werden, da sie ebenso Teil einer Seite sind. Der Mittelpunkt der Seite entspricht einem Punkt mit dem höchsten gefundenen Koordinatenwert und 0 an seinen übrigen Stellen. Wird der Punkt zurück in den Frame der Szene transformiert, erhält man so die Koordinaten der Haptikwand auf dem Würfel. Abbildung 5.10 zeigt beide Objekttypen nach ihrer Aktivierung. Der ermittelte Zielpunkt der Haptikwand muss nun an ROS gesendet werden. Da der Windows-Computer nicht mit ROS kompatibel ist, findet die Kommunikation über die rosbridge des Roboters statt. Dazu wird das ROS-Sharp Plugin [rosb] aus dem Unity Asset Store [unib] importiert. Es enthält vorgefertigte Publisher und Subscriber , die mit einer rosbridge kommunizieren können. Diese Komponenten werden typischerweise als Skript an Unity-Objekte gehängt, um deren Koordinatenveränderung automatisch im jeweils anderen System verfügbar zu machen. Im Fall der Haptikwand soll ihre Position nicht laufend übertragen werden, sondern nur einmalig nach Aktivierung des haptischen Objekts. Es wird daher ein Publisher erstellt, der diese Koordinaten anhand von Tabelle 3.3 in das Koordinatensystem von ROS transformiert und eine einzelne PoseStamped-Message (Auflistung A.11) an die rosbridge sendet. Die Unity-Koordinaten werden in ihrem eigenen Frame unity_origin veröffentlicht. Obwohl es sich um denselben Trackingbereich und dieselben drei Lighthouses handelt, die auch die Trackingkoordinaten des Roboters im Frame vive_origin liefern, kommt es vor, dass die ermittelten Koordinaten beider Systeme nicht zueinander passen, sich also die Ursprünge ihrer Frames unterscheiden. Die zwei Frames müssen daher, genauso wie die zwei Base-Footprints in Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos), zueinander ausgerichtet werden. Zu diesem Zweck werden die Koordinaten der drei Lighthouses, in diesem Fall aus der Sicht des Windows-PC, in ROS-Koordinaten transformiert und an die rosbridge gesendet, um sie in einem weiteren Kalibrationsschritt zu überlagern. Die Kalibration erfolgt am RB-Kairos oder dem Fernwartungsnotebook, da eine neue Node gestartet werden muss. Darin werden die Koordinaten eines einzelnen Lighthouses in den Frames unity_origin und vive_origin verglichen und die Koordinaten von unity_origin so verändert, damit sich die beiden Koordinaten des Lighthouses überlagern. Abbildung 5.11 zeigt, wie die Frames des VR-Systems hierarchisch in Bezug zueinander stehen. Die Pfeile zeigen jeweils von den Eltern-Frames zu ihren Kinder- Frames, wobei ein strichlierter Pfeil eine dynamische und ein solider Pfeil eine statische Transformation darstellt. Mit den vollständigen Beziehungen zwischen den Frames ist es dem Transform Tree nun möglich, der HapticVr-Node aus Abschnitt 5.5 (Integration des UR-10) die korrekten Koordinaten der Haptikwand zu liefern. 56 5.6. VR-Anwendung (a) Eine Markierung an der großen Fläche erlaubt eine willkürliche Platzierung der Haptikwand. (b) Die ermittelte Seite des Würfels wird zur Gänze als Haptikwand markiert. Abbildung 5.10: Die erstellte VR-Szene in Unity. Die Fläche links sowie die Würfel rechts können „aktiviert“ werden, um eine Haptiksimulation dieser Oberflächen zu veranlassen. 57 5. Umsetzung Abbildung 5.11: Übersicht der Frames des VR-Systems. 5.7 Inbetriebnahme Um das erstellte VR-System erfolgreich in Betrieb zu nehmen, müssen ihre Einzel- komponenten in der richtigen Reihenfolge gestartet werden. ROS bietet durch seine Launch-Dateien die Möglichkeit, eine Kette an verschiedenen Nodes automatisiert auszu- führen, jedoch können einige Module, wie zum Beispiel SteamVr , damit nicht verwaltet werden, da ihr Start beispielsweise eine Benutzereingabe fordert. Daher wird das System anhand der folgenden Liste per Hand hochgefahren. 1. Inbetriebnahme der Vive Pro mit Wireless-Kit und den Lighthouse-Basisstationen. Start des Wireless-Dienstprogramms am Windows PC. 2. Falls sich die Positionen der Lighthouses geändert haben, Ausführen des Room- Setups von SteamVr am Windows-Rechner und Übertragung der neuen Konfigura- tionsdateien auf den RB-Kairos (siehe Unterabschnitt A.1.4). 3. Hochfahren des RB-Kairos inklusive UR-10 : Die genauen Schritte werden in Ab- schnitt A.2 angeführt. 4. Start von SteamVr am RB-Kairos über das Touch-Display und Einschalten der zwei Tracker per Knopfdruck. 58 5.7. Inbetriebnahme 5. Nachdem beide Tracker in SteamVr aufscheinen, Start der Tracking-Nodes. Diese publizieren die Tracker-Koordinaten in ROS und berechnen daraus die Koordinaten des RB-Kairos im Frame der Vive. 6. Ausführen der Vive-Kalibrations-Node. Diese stellt den Bezug zwischen den Frames von ROS und Vive her, um ein Umrechnen zwischen ihnen zu ermöglichen. Diese Node kann auch auf dem Fernwartungsnotebook ausgeführt und nach erfolgter Kalibration wieder beendet werden. 7. Start von Unity und der VR-Anwendung am Windows-Rechner. Die Anwendung verbindet sich mit der rosbridge am Roboter. 8. Ausführen der Unity-Kalibrations-Node. Durch sie wird der Bezug zwischen den Frames von Vive und Unity hergestellt, um eine Koordinatentransformation zu ermöglichen. Diese Node kann ebenso auf dem Fernwartungsnotebook gestartet und im Anschluss wieder beendet werden. 9. Start des MoveGroup-ActionServers am RB-Kairos. Dieser ermöglicht ROS den Zugriff auf den UR-10 . 10. Start der HapticVr-Node. Diese Software abonniert das Haptikwand-Topic der Unity- Anwendung und startet nach Erhalt einer Nachricht die Routinen zur Navigation des Fahrwerks und die Bewegungsausführung des UR-10 . 59 KAPITEL 6 Evaluierung Dieses Kapitel behandelt die Evaluierung des im Zuge dieser Diplomarbeit erstellten VR-Systems. Abschnitt 6.1 (Technische Evaluierung) beleuchtet die technischen Aspekte des implementierten Systems und beantwortet Fragen zu ihren Betriebsparametern. Abschnitt 6.2 (Benutzererfahrung) beschreibt anschließend den durchgeführten Pilottest, der die zu erwartende Benutzererfahrung des Systems zeigt. 6.1 Technische Evaluierung Dieser Abschnitt beschreibt die technische Evaluierung des in Kapitel 5 (Umsetzung) implementierten VR-Systems. Im Zuge dessen werden folgende Eigenschaften in der Ausführung des aktuellen Versuchaufbaus untersucht: 1. Wie groß ist das Trackingvolumen des VR-Systems? 2. Wie groß ist das Interaktionsvolumen des Roboters? 3. Welche Orientierung kann die Haptikwand einnehmen? 4. Wie lange benötigt das System, um die Haptikwand an einer beliebigen Stelle zu positionieren? 5. Welche Genauigkeit bietet das System? 6.1.1 Geometrie Das Trackingvolumen wird vom Hersteller der Vive Pro bei Verwendung von vier Lighthou- ses mit einem Ausmaß von 10 × 10 m angegeben. Der Trackingbereich des Versuchslabors hat eine Größe von circa 8 × 6, 3 m, in dem drei Lighthouse-Basisstationen in einer Höhe 61 6. Evaluierung von circa 2,4 m angebracht sind. Der Sichtkontakt der am Roboter angebrachten Tracker zu den Lighthouses wurde durch rasterartiges Abfahren des Trackingbereichs in mehrere Richtungen getestet. Dabei konnte festgestellt werden, dass aufgrund ungünstiger Posi- tionierungen der Haptikwand der Sichtkontakt eines einzelnen Trackers ausfallen kann. Da sich der andere Tracker aber auf der diagonal gegenüberliegenden Seite des Roboters befindet und die Lighthouses im Raum verteilt sind, ist vom Ausfall jeweils nur einer der beiden gleichzeitig betroffen. Die Tracking-Node des VR-Systems wurde dementspre- chend konzipiert, um das Tracking auch mit nur einem Tracker aufrechtzuerhalten, siehe Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos). Das Interaktionsvolumen des RB-Kairos entspricht dem Arbeitsbereich des UR-10 entlang der ebenen Fläche, die der Roboter per Navigation erreichen kann. Der Trackingbereich des Labors, mit einer Fläche von circa 8 × 6, 3 m, ist zum Großteil von Wänden und Computertischen umgeben, daher ist auch der Roboterarm bei der Platzierung der Haptikwand an diese Grenzen gebunden. Das Schulter-Knickgelenk des UR-10 , das die Basis für die vertikale Armpositionierung bildet, befindet sich auf dem Roboterchassis in einer Höhe von 0,65 m. Mit seinem Arbeitsradius von 1,3 m und den vier weiteren Gelenken oberhalb des Knickgelenks ist es dem Roboterarm möglich den Fußboden zu erreichen. In einer vertikal nach oben gerichteten Stellung addieren sich der Radius und die Montagehöhe des Roboterarms zu einer maximalen Manipulationshöhe von 1,95 m. Im Versuchsaufbau dieser Arbeit ergibt das Interaktionsvolumen des RB-Kairos demnach ein Volumen von 8 × 6, 3 × 1, 95 m, das vom Fußboden ausgeht. Die Haptikwand kann grundsätzlich in jede Ausrichtung orientiert werden. Ausnahmen existieren jedoch bei Orientierungen die eine Kollision mit dem Roboter selbst zur Folge hätten. Sie werden von der Planungssoftware MoveIt rechtzeitig erkannt und die Ausführung verweigert. Um Abbrüche durch Selbstkollisionen zu minimieren, nimmt der RB-Kairos, und damit sein Base-Footprint, immer eine Position 0,7 m hinter dem Zielpunkt der Haptikwand ein. Dieser Erfahrungswert hat sich während der Arbeit mit dem Roboter bewährt. Der Montagepunkt des UR-10 , der sich in der horizontalen Mitte des Roboters und damit vertikal über dem Base-Footprint befindet, ist 0,36 m zur Vorderkante des Roboters entfernt. Somit bleiben noch 0,34 m Spielraum vor dem Roboter, um dort die Haptikwand zu platzieren. Der Abstand wurde nah genug gewählt, damit der UR-10 den Zielpunkt der Haptikwand erreichen kann, aber weit genug entfernt um nicht mit dem Roboterchassis zu kollidieren. 6.1.2 Zeitspanne Das VR-System benötigt eine gewisse Zeit, um die haptische Erfahrung zur Verfügung zu stellen. Die Befehlskette beginnt in der Unity-Anwendung. Der Benutzer visiert ein virtuelles Objekt an und betätigt den Trigger des Vive-Controllers. Aufgrund von optimierten Algorithmen, die die Spieleengine zur Verfügung stellt, wird die Intersektion des virtuellen Laserstrahls mit der Umgebung augenblicklich berechnet. Die selektierte Oberfläche, beziehungsweise deren Mittelpunkt, wird nun per WiFi-Netzwerk zum RB- Kairos weitergeleitet. Auch diese Übertragung findet unverzüglich statt. 62 6.1. Technische Evaluierung Um diese subjektive Annahme zu bestätigen, wurde ein Test durchgeführt, der die Roundtrip-Zeit zwischen der Betätigung des Triggers und dem Empfang des Zielpunkts am Roboter beziehungsweise dem Empfang der Empfangsbestätigung misst. Dazu wurde am RB-Kairos eine Node gestartet, die das Zielpunkt-Topic rbkairos/hapticvr/goal abonniert und anschließend sofort eine Ping-Nachricht veröffentlicht. In der Unity- Anwendung wurde ein zusätzlicher Subscriber erzeugt, der diesen Ping abonniert und die Zeitdifferenz zwischen Trigger-Betätigung und Empfang des Pings berechnet. Dieser Test wurde 100 mal durchgeführt, während sich der RB-Kairos an verschiedenen Stellen im Labor befand. Der Ping betrug durchschnittlich 21,97 ms, der Median 6,74 ms und die Standardabweichung 111,52 ms. 95 Messergebnisse wiesen einen Wert kleiner als 25 ms und zwei Messungen Werte über 300 ms auf. Die einzelnen sehr hohen Werte waren vermutlich auf kurze Aussetzer der Wi-Fi-Verbindung zurückzuführen. Ohne den zwei Extremwerten lag der Durchschnitt bei 8,15 ms und die Standardabweichung bei 7,00 ms. Die Daten zeigen, dass die Übermittlung der Zielposition mit sehr wenigen Ausnahmen sehr schnell erfolgte. Obwohl es sich bei diesem Durchschnittswert nicht um die reine Zeitspanne zwischen Befehlsaufgabe und Empfang am Roboter handelt, sondern zusätzlich noch um die Zeitdauer der Rückantwort, ist sie, aufgrund der im Anschluss gemessenen Navigationszeit des RB-Kairos, vernachlässigbar. Zum Zeitpunkt, an dem ein Zielpunkt empfangen wird, befindet sich der UR-10 des RB-Kairos in einem ausgestreckten Zustand, da zuvor die Haptikwand an einem anderen Punkt platziert wurde. Im besten Fall befindet sich die neu gewählte Position unmittelbar in der Nähe der alten. Im schlechtesten Fall am anderen Ende des Versuchsraumes. In idealen Konditionen würde es daher genügen den Endeffektor des UR-10 an die neue Stelle zu dirigieren. Dazu wird die Position des RB-Kairos mittels Vive-Tracking bestimmt und der verbleibende Koordinatenvektor an MoveIt zur Ausführung weitergeleitet. Die Pfadplanungssoftware berechnet aus dem vorliegenden Kinematikmodell einen Bewe- gungsplan zur Umpositionierung des Roboterarms. Diese Berechnung ist nicht trivial, da neben der Endposition des Endeffektors, die durch eine Vielzahl an Gelenksstellungen erfüllt werden kann, auch der gesamte Pfad von dieser Vielfalt betroffen ist. Was MoveIt daher macht, ist einen möglichst optimalen Pfad in einer vorgegebenen Zeit zu finden. Diese Zeit wurde im Rahmen der Implementierung auf 1 s festgelegt. Die Zeitdauer der Bewegungsausführung ist hingegen abhängig von der Entfernung zwischen Start und Endposition, beziehungsweise der Komplexität der Manipulation. Die Manipulationskomplexität ergibt sich aus der Komplexität des Roboteraufbaus und den Freiheitsgraden der Gelenke. In vielen Fällen ist eine gleichzeitige Rotation aller Gelenke in ihre Zielstellung aufgrund von Eigenkollisionen nicht möglich. Deshalb müssen einige Gelenksrotationen zum Teil nacheinander stattfinden, was zu einer erhöhten Manipulationsdauer führt. Die Neupositionierung der Haptikwand besteht immer aus einer Kombination von Mani- pulator- und Chassisbewegung. Befindet sich der gewünschte Zielpunkt der Wand nicht im Arbeitsbereich des UR-10 , so muss eine Neupositionierung des gesamten Roboters vorgenommen werden, da der Arm den Punkt nicht alleine erreichen kann. Es ist aber 63 6. Evaluierung nicht ratsam, den Roboter im ausgestreckten Zustand des Manipulators in Fahrt zu setzen, da sich die Eigenmasse von UR-10 und Haptikwand auf das Fahrverhalten des Chassis auswirkt. Aus diesem Grund wird der Roboterarm bei der Überbrückung eines Fahrtwegs zunächst immer in die Transportstellung gebracht (siehe Abbildung 5.5) und im Anschluss neupositioniert. Sollte sich der Zielpunkt innerhalb des UR-10 -Arbeitsbereichs befinden, so ist dennoch nicht garantiert, dass der Roboterarm die gewünschte Stellung auch errei- chen kann. Möglicherweise befindet sich der Zielpunkt an einer Stelle, die vom Roboter selbst eingenommen wird oder die Platzierung würde eine Kollision des Manipulators mit dem Chassis verursachen. Aus diesem Grund wird auch bei der Neupositionierung innerhalb des Arbeitsbereichs der gesamte Roboter mitbewegt. Die Zeitdauer von Ausstrecken und Einziehen des UR-10 wird getrennt gemessen. Da- zu wird etwa 0,7 m vor dem RB-Kairos ein zufälliger Zielpunkt ausgewählt und der MoveGroupCommander beauftragt, einen Bewegungspfad zu diesem Punkt zu berech- nen und auszuführen. Der Abstand entspricht dem Erfahrungswert, der auch in der Implementation der Diplomarbeit bei der Festlegung des Navigationsziels hinter der Haptikwand zur Anwendung kommt. Die Messung wurde 20 mal durchgeführt. Inklusive der Berechnungszeit von 1 s dauert die Ausstreckbewegung durchschnittlich 6,16 s mit einer Standardabweichung von 0,63 s. Im Anschluss an jede Messung wird vom gewählten Punkt die Manipulation zurück in die Transportstellung durchgeführt. Die maximale Berechnungszeit wird ebenso in die Messung inkludiert und beträgt für die Einnahme der Transportstellung durchschnittlich 5,23 s mit einer Standardabweichung von 0,65 s. Hier zeigt sich ein Vorteil aus der Kombination von Navigationsziel und Transportstellung. Durch Festlegung des Navigationsziels hinter dem Zielpunkt, befindet sich die Stelle, an der die Wand platziert wird, immer unmittelbar vor dem Roboter. Die Transportstellung wurde außerdem so gewählt, dass ein Ausbringen der Haptikwand nach vorne nur eine Veränderung von wenigen Gelenken bedarf und so rasch durchgeführt werden kann. Nach Erhalt des Zielpunkts und Einnahme der Transportstellung durch den UR-10 beginnt die Pfadplanung der Navigation. Diese erfolgt, im Gegensatz zur Pfadplanung des Manipulators, nicht ausschließlich vor der Bewegung, sondern aufgrund des verwendeten SLAM -Algorithmus auch währenddessen. Nach Veröffentlichung des Navigationspunkts setzt sich der Roboter daher augenblicklich in Bewegung. Der Roboter ist aus Sicherheits- gründen auf eine Maximalgeschwindigkeit von 1 m/s während der autonomen Navigation konfiguriert. Für eine Fahrt zwischen den diagonalen Ecken des 8×6, 3 m großen Tracking- bereichs würde dieser theoretisch circa 10 s benötigen. In der Realität beinhalten die Navigationsanforderungen an den RB-Kairos aber mehr als das Abfahren einer geraden Linie. Nicht eingerechnet in diese Kalkulation sind die Anfahrtszeiten zum Erreichen der Maximalgeschwindigkeit und etwaige Kurvenfahrten aufgrund von Hindernissen entlang des Navigationspfads. Bei der Ermittlung der Naviga- tionszeit wird daher ein Hindernis im Raum platziert, um dem Roboter einen geraden Weg durch den Raum zu verwehren. Start und Endpunkt der Navigation werden in zwei diagonal gegenüberliegenden Ecken definiert. Der Test, der insgesamt 20 mal wiederholt wurde, lieferte für diese Navigation eine Durchschnittsdauer von 16,41 s mit einer Stan- 64 6.1. Technische Evaluierung (a) Das Hindernis, das dem RB-Kairos wäh- rend der Zeitmessung in den Weg gestellt wird. (b) A) Das Navigationsziel mit der Ausrichtung ent- lang des Pfeils, B) Hindernis, C) Aktuelle Position des Roboters, D) Ungefährer Navigationspfad, um dem Hindernis auszuweichen. Abbildung 6.1: Der Testablauf während der Messung der Navigationsdauer. Der Roboter navigiert zwischen zwei gegenüberliegenden Ecken des Raums und umfährt dabei ein Hindernis. dardabweichung von 3,90 s. Das Hindernis sowie das Schema des Navigationspfads sind in Abbildung 6.1 ersichtlich. Der Zielpunkt der Navigation wird aufgrund der Roboterhardware und des verwendeten Navigationsverfahrens nur ungefähr erreicht. Dies ist aber unproblematisch, da der ent- standene Fehler in der Platzierung der Haptikwand durch den UR-10 ausgeglichen werden kann. Die Berechnung der Armbewegung ist jedoch an die Erfassung der Roboterposition am Navigationsende angewiesen und kann daher nicht schon während der Fahrt berechnet werden. Die Berechnungszeit von maximal 1 s ist somit auch beim Ausfahren des Arms einzukalkulieren. Das Tracking durch die Lighthouse-Technologie erfolgt in Echtzeit, wodurch kein Zeitverlust entsteht. Zusammenaddiert ergibt sich dadurch eine Zeitspanne von knapp 28 s für das Zusam- menfalten des Arms in die Transportstellung, die Navigation des Roboters an die ge- genüberliegende Ecke des Trackingbereichs und das Ausfahren auf den Zielpunkt der Haptikwand. Diese Zeitdauer erscheint für die Verwendung in einem Echtzeitsystem wie einer VR-Anwendung überaus lange. Es handelt sich hierbei aber um eine Universallö- sung, die es erlaubt, eine haptische Erfahrung im gesamten Interaktionsvolumen und mit willkürlicher Ausrichtung zur Verfügung zu stellen. Maßgeschneiderte und optimierte Lösungen, wie sie in Abschnitt 7.1 (Verbesserungspotential) beschrieben werden, können die Zeitdauer um ein Vielfaches verbessern. 65 6. Evaluierung 6.1.3 Genauigkeit Die Genauigkeit des gesamten Systems ist an die Genauigkeit jeder einzelnen Kompo- nente gebunden. Diese sind: die Lokalisation und Wegfindung der mobilen Basis, die Bewegungsausführung des UR-10 und das Lighthouse-Tracking der Vive Pro. Auf etwaige andere Ungenauigkeiten durch Materialverformung oder locker sitzende Komponenten wird im Zuge dieser Arbeit nicht weiter eingegangen. Der RB-Kairos findet sich im Raum mittels Adaptive Monte Carlo Localization (AMCL) zurecht. Bei diesem Verfahren werden die Daten der beiden Laserscanner und der Odo- metrie mit einer bereits bekannten Karte des Versuchsraums verglichen und dadurch die ungefähre Position im Raum bestimmt. Das Verfahren ist so konzipiert, dass auch mit ungenauen oder unvollständigen Daten eine Lagepositionierung erfolgen kann. Einerseits ist die Odometrie, die über die Bewegung der vier Mecanum-Räder berechnet wird, einem gewissen Verschub ausgesetzt, die durch die unüberwachte Bewegung der Mecanum-Rollen entstehen kann. Andererseits sorgen Objekte, die vom Lidar erfasst werden, aber nicht auf der Karte vorhanden sind, für ein Auseinanderdriften der beiden Vergleichswerte. Dies hat zur Folge, dass die Koordinaten der robotereigenen Lokalisation und der der Vive schon kurz nach der Kalibration nicht mehr übereinstimmen. In Abbildung 6.2 wird dies verdeutlicht. Der Welt-Frame lautet rbkairos_map, der Frame der Vive vive_origin. rbkairos_odom entspricht dem Startpunkt des Ro- boters im aktuellen Betrieb und der Vektor zu rbkairos_base_footprint der Odometrie, also dem Weg, den der Roboter zu seiner aktuellen Position zurückge- legt hat. Aus den Koordinaten der beiden Tracker vive/LHR_* wird die Position des Roboters rbkairos_origin im Koordinatensystem der Vive ermittelt. Bei der Kalibration wird der vive_origin Frame so gelegt, dass die Roboterpositionen rbkairos_base_footprint und rbkairos_origin überlagern (siehe Abbildung 6.2a). Nach einigen Metern an Fahrt befinden sich die beiden Punkte jedoch nicht mehr übereinander, sondern nur mehr in ungefährer Nähe (siehe Abbildung 6.2b). Die Veränderung und Neuberechnung der Koordinaten von rbkairos_odom verdeutli- chen zusätzlich die Ungenauigkeit des Verfahrens. Um diese Ungenauigkeit zu umgehen, wird sie bei der Positionierung der Haptikwand gar nicht verwendet. Das System ver- wendet dieses Verfahren nur zur ungefähren Navigation ans Ziel, wo im Anschluss das genauere Lighthouse-Tracking zum Einsatz kommt. Bei der Vive handelt es sich um ein Produkt aus der Videospielebranche. Ihr Verwen- dungszweck dient der Unterhaltung von Menschen und ist daher auch auf diesen Markt zugeschnitten. Dies impliziert somit auch, dass sie im Rahmen dieser Diplomarbeit als Trackinglösung für Roboter zweckentfremdet verwendet wird und eventuell den Anforde- rungen des hier beschriebenen Szenarios gewachsen ist. Tatsächlich gibt es Arbeiten, zum Beispiel jene von Borges et al. [BSC+18], die sich der Verwendung der Vive in einem reinen Robotiksetting widmen und das System auf ihre dortige Tauglichkeit überprüfen. Sie kommen zum Ergebnis, dass in ihrem Testablauf die Vive beim Erfassen von statischen Trackern eine Standardabweichung von weniger als 0,5 mm zum gemessenen Punkt bietet. 66 6.1. Technische Evaluierung (a) Koordinaten zum Zeitpunkt der Kalibration. rbkairos_origin und rbkairos_base_footprint liegen genau übereinander. (b) Durch Ungenauigkeiten, die bei der Bewegung des RB-Kairos auftreten, divergieren die Koordinaten der beiden Trackingmodelle auseinander. Abbildung 6.2: Vergleich der Koordinaten in RVIZ bei der Kalibration und nach einigen Metern Roboterbewegung. 67 6. Evaluierung (a) Die gemessenen Tracker-Positionen relativ zum gemeinsamen Mittelpunkt. (b) Die Verteilung der euklidischen Distanz der gemessenen Punkte zum Mittelpunkt. Abbildung 6.3: Auswertung von 33 Messungen eines einzelnen, unbeweglichen Trackers. Alle Angaben in Metern. Beim Tracken von Bewegungen verlässt sie sich jedoch zu einem geringeren Anteil auf das Tracking durch die Lighthouse-Lasersignale und stärker auf die eingebaute IMU . Diese auf Beschleunigungs- und Trägheitssensoren basierende Messeinheit sorgt für ein sanftes Erscheinungsbild des Bewegungspfads in Videospielen, liefert jedoch nicht die Positionsgenauigkeit eines optischen Systems. Um die Genauigkeit des Trackings in dieser Diplomarbeit zu ermitteln, wurden zwei Tests durchgeführt. Im ersten Test wurde ein Vive-Tracker auf dem Boden des Trackingbereichs platziert und seine Position an dieser Stelle wiederholt gemessen. Dabei zeigte sich, dass die 33 gemessenen Koordinaten eine durchschnittliche Abweichung von 0,579 mm zum gemeinsamen Mittelpunkt aufweisen, während die Standardabweichung 0,297 mm beträgt (siehe Abbildung 6.3). Die Ergebnisse stimmen mit jenen von Borges et al. [BSC+18] überein, jedoch liefert der durchgeführte Test die Trackinggenauigkeit nur an einer einzelnen Stelle des Versuchsraums, weshalb zusätzlich ein zweiter Test durchgeführt wurde. Der zweite Test ermittelt die Genauigkeit der Lighthouse-Koordinaten an unterschiedlichen Stellen des Trackingbereichs. Dieser wurde mit einer hölzernen dreieckigen Hilfskonstruk- tion vermessen (siehe Abbildung 6.4). Der Abstand zwischen den Löchern in den Ecken des Dreiecks beträgt jeweils 1 m. Auf einem Loch wurde ein wegklappbarer Tracker angebracht, um an dieser Stelle die Vive-Koordinaten zu ermitteln aber auch weiterhin Sichtkontakt zum darunter befindlichen Loch zu haben. Die Konstruktion wurde in der Mitte des Trackingbereichs platziert und die drei Löcher am Fußboden markiert. Zudem 68 6.1. Technische Evaluierung Abbildung 6.4: Die Hilfskonstruktion, mit der der Trackingbereich vermessen wurde. wurden die Tracker-Koordinaten an jedem der Punkte erfasst. Durch Neupositionierung des Dreiecks über zwei bestehende Positionen und Markierung einer neuen kann der gesamte Bereich trianguliert und vermessen werden. Abbildung 6.5a zeigt die 63 gemessenen Punkte in Relation zu ihrem Mittelpunkt. Die Daten signalisieren, dass die Genauigkeit am Rand des Trackingbereichs spürbar abnimmt. Die gemessene Höhe entlang der Z-Achse unterscheidet sich dort um bis zu 870 mm von jenen der anderen Punkte, obwohl der Tracker immer auf dem Boden platziert wurde. Dies hat damit zu tun, dass sich die Tracker an diesen Stellen fast vertikal unter den Lighthouses befinden und so die Grenzen des Trackingbereichs überschritten wurden. Aus diesem Grund werden alle Punkte mit einer Z-Höhe von +/- 100 mm gegenüber dem Mittelpunkt ausgefiltert und fließen nicht in die weiteren Berechnungen ein (orange Quadrate). Aus den verbleibenden 56 Punkten (blaue Kreise und grüne Dreiecke) werden die Kanten zu ihren direkten Nachbarn ermittelt. Alle benachbarten Punkte weisen aufgrund der Dreieckskonstruktion (Abbildung 6.4) eine Distanz von circa 1 m zueinander auf. Aus einer Liste von allen möglichen Punktepaaren werden daher all jene entfernt, deren Abstand sich nicht in einem Bereich von 1.000 mm +/- 100 mm befinden. Aus diesem Schritt ergeben sich 134 Nachbarkanten, die in Abbildung 6.5a durch schwarze Linien angezeigt werden. Die Kanten weisen eine durchschnittliche Länge von 1.004,178 mm auf während die Stan- dardabweichung 9,277 mm beträgt. Die gemessenen Kanten sind somit durchschnittlich um 4,178 mm länger als die Dreiecke anhand derer sie vermessen wurden. In den Daten zeigt sich außerdem ein Anstieg der Genauigkeit, je zentraler sich ein gemessener Punkt im Trackingbereich befindet. Um diese auch statistisch zu ermitteln, wurde 15 Koordinaten (blaue Kreise) im Inneren des Trackingbereichs ausgewählt und die Berechnung der Kan- tenlänge auf diesen Bereich beschränkt wiederholt. Hierbei wurden 31 Kanten ermittelt, die einen Mittelwert von 1.002,248 mm und eine Standardabweichung von 4,881 mm 69 6. Evaluierung (a) Die erfassten Koordinaten relativ zum gemeinsamen Mittel- punkt und die daraus ermittelten Kanten zwischen benachbarten Punkten. (b) Die Verteilung der Kanten- längen des gesamten und des innersten Bereichs. Abbildung 6.5: Die Ermittlung der Genauigkeit des Trackingverfahrens durch Messung der Koordinaten in einem dreieckigen Raster mit einem Abstand von 1 m. Alle Angaben in Metern. aufweisen. Diese Werte stellen circa eine Verdoppelung der Genauigkeit der inneren Kantenlängen im Vergleich zu jenen der Gesamtmessung dar (siehe Abbildung 6.5b). Aus den Messergebnissen kann daher in Summe geschlossen werden, dass das Lighthouse- Verfahren fähig ist, einen Punkt innerhalb der Grenzen des Trackingbereichs mit einer Genauigkeit von etwa +/- 10 mm zu erfassen. Innerhalb der von den Lighthouse-Stationen gut erfassten Innenbereichen ist auch eine genauere Ortung möglich. Der Unterschied zu den Werten von Borges et al. [BSC+18] ergibt sich vermutlich aus dem Testaufbau selbst, der sehr praxisnah durchgeführt und bei dem eine einzelne Koordinate nur ein einziges Mal vermessen wurde. Zudem können die Lichtverhältnisse und die Bodenbeschaffenheit im Versuchsraum eine Rolle spielen. Die Lighthouse-Technologie ermöglicht somit die Position des RB-Kairos nach dem Ende der Navigation zu ermitteln und so den Verfahrensfehler der Odometrie zu negieren. Ab diesem Zeitpunkt obliegt es nun dem UR-10 , die verbleibende Distanz zum Zielpunkt der Haptikwand zurückzulegen. Der Hersteller Universal Robots gibt für seinen UR-10 eine Wiederholgenauigkeit der Bewegungsausführung von +/- 0,1 mm an [ur1]. Diese ist 70 6.2. Benutzererfahrung ISO 9283 zertifiziert und bestätigt somit die Genauigkeit des vorliegenden Systems unter Einhaltung der Betriebsparameter wie Nutzlast und Umgebungstemperatur. Die vorliegenden Daten zeigen also, dass das erstellte VR-System in der Lage ist, die Hap- tikwand an einer willkürlichen Stelle des Interaktionsvolumens mit einer Genauigkeit von +/- 10 mm innerhalb von 28 s zu platzieren. Um diese Werte auch subjektiv zu überprüfen und den Realismusgrad der Haptik zu testen, wurde ein Pilotversuch durchgeführt. 6.2 Benutzererfahrung Um das Zusammenspiel der Komponenten zu überprüfen und festzustellen, ob das System fähig ist eine glaubhafte Haptik bereitzustellen, wurde ein Pilottest mit einer Testperson durchgeführt. Der Ablauf des Tests erfolgte folgendermaßen: Die Testperson betrat den Versuchsraum, legte das HMD der Vive an und erkundete die virtuelle Szene. Die Person wurde befragt, wie sich die virtuelle Realität anfühlte und was sie von dieser Szene hielt. Ihre Antwort war, dass die freie Bewegungsmöglichkeit im gesamten Raum durch das kabellos betriebene Gerät eine Neuheit für die Person darstellte, die sie in vorhergehenden VR-Erfahrungen noch nicht erlebt hatte. Die grafische Anzeige im Headset und die Veränderung der virtuellen Umgebung während ihrer Bewegung stimmte mit den Erwartungen überein, die die Testperson auch aus der Realität kannte. Anders als in bisherigen Erfahrungen, bei denen Benutzer und Benutzerinnen an der Stelle verharrten und virtuelle Orte typischerweise per Teleportierung erreichten, erlaubte die kabellose Bewegungsfreiheit in diesem Setup auch ein Erreichen des Ziels durch natürliches Zufußgehen. Umso mehr fiel es der Person auf, dass die Hindernisse der virtuellen Umgebung über keinerlei physische Substanz verfügten und mühelos durchquert werden konnten. Der Testperson wurde nun ein Vive-Controller in die Hand gereicht und sie wurde beauftragt mit ihm eine Oberfläche zu markieren, die sie mit Haptik ausstatten mochte. Daraufhin zielte sie mit dem Laserpointer des Controllers auf eine Seite eines Würfels und betätigte den Trigger . Die anvisierte Seite wurde farblich markiert und bestätigte der Testperson die Auswahl einer haptischen Fläche. Die Koordinaten der gewünschten Fläche wurden an den Roboter übertragen und dienten ihm als Zielpunkt der Haptikwand. Der Roboter, der sich am Rande des Versuchsraums befand, brachte seinen Manipulator in eine zusammengeklappte Transportstellung, er- stellte einen Navigationsplan in die unmittelbare Nähe des Zielpunkts und setzte sich in Bewegung. Am Zielort angekommen, ermittelte der Roboter seine tatsächliche Position anhand des Lighthouse-Trackingsystems. Damit berechnete er den verbleibenden Weg zum Zielpunkt und beauftragte die Planungssoftware des Roboterams einen Bewegungs- pfad dorthin zu erstellen. Nach der Ausführung der Manipulator-Bewegung befand sich nun die Haptikwand an jener Stelle der Realität, die der Markierung in der virtuellen Umgebung entsprach. 71 6. Evaluierung Die Testperson versuchte nun das virtuelle Objekt zu ertasten und tatsächlich stießen ihre Finger auf ein Hindernis. Die Empfindungen der Finger passten mit den Informationen zusammen, die die Augen beim Betrachten des Würfels lieferten. Sie sah zum Rand des Würfels und auch ihre Finger ertasteten den Rand der Haptikwand. Die Person lehnte sich gegen den virtuellen Würfel. Anders als vorher hielt der Würfel dem Gewicht der Testperson stand, da dieser nun offenbar real existierte. Die Person wurde befragt, was sie von den neuen Empfindungen hielt. Sie sagte, dass die Fläche nun anders als zuvor ertastbar sei und ihr einen deutlichen Widerstand, beim Versuch durch das Objekt hindurch zu greifen, bot. Die Oberfläche des Würfels fühlte sich hölzern an. Die Empfindung stimmte jedoch nicht mit der Erwartung überein, die aufgrund der Farbe des virtuellen Objekts angenommen wurde. Eine glatte Oberfläche aus Kunststoff oder eine kühle aus Metall wurden aufgrund der weißen Farbe erwartet. Auf Nachfrage, ob es sich nicht auch um weiß bemaltes Holz handeln könnte antwortete die Testperson, dass dies möglich sei, aber es der sterile Ersteindruck der virtuellen Szene nicht vermuten ließ. Bei der Berührung des Würfelrands fiel der Testperson auf, dass die angrenzenden Seiten nicht vorhanden waren. Obwohl ihr im Vorfeld erklärt wurde, dass nur eine einzige Fläche zur selben Zeit haptisch simuliert werden konnte, wurde dennoch die Existenz der weiteren Würfelseiten erwartet. Beim Versuch, den Würfel zu umrunden stieß die Testperson mit den Beinen ans Roboterchassis. Die Testperson kommentierte, dass sich hier nun ein Hindernis befand, man aber in der virtuellen Umgebung nicht darauf hingewiesen wurde. Im Anschluss wurden von der Testperson weitere Flächen mit dem Controller markiert, um die Haptik auch an diesen Stellen zu testen. Als Fazit gab die Person an, dass die zur Verfügung gestellte Haptik die visuelle VR-Simulation um einen realistischen Sinneseindruck erweiterte, aber aufgrund der Größe des Versuchsraums mehr als eine einzige haptische Interaktionsmöglichkeit wünschenswert wäre. Der Gesamteindruck war positiv. 72 KAPITEL 7 Diskussion Dieses Kapitel beschäftigt sich mit der Interpretation der Erkenntnisse aus Kapitel 6 (Evaluierung). Die technische Evaluierung zeigt, dass das erstellte VR-System in der Lage ist eine haptische Fläche an einer willkürlichen Stelle des Interaktionsvolumens bereitzustellen. Diese wird innerhalb von 28 s mit einer Genauigkeit von +/- 10 mm platziert. Das Tracking des Roboters wurde so entwickelt, dass auch bei Ausfall des Sichtkontakts eines einzelnen Trackers die Ortung weiterhin aufrecht bleibt. Die Evaluation zeigt, dass eine Neupositionierung der Haptikwand auch immer mit einer Bewegung des Roboter- chassis einhergehen muss und, dass dadurch die Zeitdauer für die Platzierung der Haptik negativ beeinflusst wird. Weiters wurde festgestellt, dass die Genauigkeit des Lighthouse- Trackings positionsabhängig ist und in den Randbereichen des Trackingvolumens nur mehr begrenzt brauchbare Werte liefert. Der Pilottest hat gezeigt, mit welchen Hindernissen Testpersonen konfrontiert sind und welche Erwartungen sie an das System haben. Zum Beispiel fällt eine fehlende Interaktionshaptik mit der virtuellen Umgebung besonders dann auf, wenn sich Benutzer und Benutzerinnen zu Fuß durch die Szene bewegen können, anstatt sich wie in typischen VR-Simulationen durch ein Level zu teleportieren. Die möglichen Ansätze zur Verbesserung des VR-Systems werden in Abschnitt 7.1 (Verbesserungspotential) behandelt. Bei der am Endeffektor des Roboters angebrachten Requisite handelt es sich um eine flache Holzplatte, deren Oberfläche oder Beschaffenheit nicht verändert werden kann. Sie unterstützt somit nur eine haptische Simulation von Objekten ihresgleichen. Aus diesem Grund wird sie exklusiv zur Simulation als Wand oder flaches Hindernis verwen- det. In Abschnitt 7.2 (Erweiterungsmöglichkeiten) werden daher Konzepte beschrieben, mit denen die Anzahl an simulierbaren Oberflächen vergrößert, beziehungsweise durch Robotermanipulation um dynamische Haptik erweitert werden kann. 73 7. Diskussion Abschnitt 7.3 (Anwendungsmöglichkeiten) listet schließlich Anwendungsgebiete, für die ein solches VR-Systems in Frage kommen könnte und gibt einen Ausblick auf zukünftige Entwicklungen. 7.1 Verbesserungspotential Bei der Implementation dieser Diplomarbeit handelt es sich um eine Kooperation von diversen Komponenten aus unterschiedlichen Themenbereichen der Informationstechnolo- gie. Sowohl die Verbesserung der einzelnen Komponenten als auch ihr Zusammenspiel können sich positiv auf das Gesamtergebnis auswirken. Im Verlauf dieses Abschnitts werden daher Punkte gelistet, die zu einer Verbesserung des Systems beitragen können. In Abschnitt 3.3 (Robot Operating System) wird beschrieben, dass der RB-Kairos seine eingebauten Lidars sowie die berechnete Odometrie seiner Fortbewegung verwendet, um sich im Raum zurechtzufinden und durch diesen zu navigieren. Unterabschnitt 6.1.3 (Genauigkeit) erwähnt jedoch, dass die dadurch gewonnene Positionsbestimmung und Navigationsroutine nicht präzise genug agiert und dass das System daher eine erneute Messung durch die Lighthouse-Technologie durchführt. Zudem ist das System auf eine aktuelle Karte des Versuchsraums angewiesen und hat Probleme, wenn diese nicht mehr mit der Umgebung übereinstimmt. Es liegt daher nahe, die von ROS zur Verfügung gestellte Trackingkomponente durch eine zu ersetzen, die auf der Lighthouse-Technologie basiert. Ein Tracking basierend auf der Lighthouse-Technologie könnte die Position des Roboters direkt im Transform Tree veröffentlichen und so für eine genaue Lokalisation in abso- luten Raumkoordinaten sorgen. Der rbkairos_odom-Frame wäre damit obsolet. Die Odometrie könnte weiterhin als Fallback im System bleiben, falls es zu Störungen des Lighthouse-Trackings kommen sollte. Die Erfassung der Tracker ist jedoch in der aktuellen Versuchsanordnung auf den manuellen Start von Steam und SteamVr angewiesen und bis zu diesem Zeitpunkt nicht verfügbar. Der Start von SteamVr geschieht im aktuellen Setup durch händischen Aufruf der Pro- grammverknüpfung auf dem Desktop des Touchdisplays. Wie in Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos) beschrieben, wird SteamVr als Unterhaltungsprodukt für die Verwendung auf Spiele-PCs für private Zwecke entwickelt und nicht als Trackinglösung für Roboter. Der Start der Software lässt sich damit auch nur soweit automatisieren, bis eine Usereingabe notwendig wird. Diese reicht von der Aufforderung den in Abbil- dung 5.6 gezeigten Fehler zu beheben, bis zur Durchführung von Software Updates. Die beiden am Chassis des RB-Kairos angebrachten Vive-Tracker benötigen zusätzlich eine Aktivierung per Fingerdruck auf ihren Einschaltknopf und wechseln automatisch in den Standby-Modus, sollte keine nennenswerte Bewegung der Tracker registriert werden. Eine Lösung dieser Probleme konnte im Zuge dieser Diplomarbeit nicht gefunden werden, könnte aber eventuell durch den Erwerb einer proprietären Firmenlizenz von SteamVr [stea] abgedeckt sein. 74 7.1. Verbesserungspotential Die Zeitdauer, die der Roboterarm zum Platzieren der Requisiten benötigt, könnte durch rechtzeitige Vorberechnung seiner Bewegung vermindert werden. Im aktuellen Versuch erfolgen Planung und Ausführung der Manipulation unmittelbar nacheinander. Während der RB-Kairos den Benutzern oder Benutzerinnen die Haptikwand an einer bestimmten Stelle zur Verfügung stellt, könnte bereits die Berechnung zum Einziehen des Arms in die Transportstellung begonnen werden. Dasselbe gilt für das Ausstrecken zum Zielort. Das System könnte bereits während der Roboterfahrt die anschließende Armbewegung vom ungefähren Startpunkt berechnen, während der Ausführung die tatsächliche Vive-Position bestimmen und den Roboterarm zu einer Kurskorrektur veranlassen. Eine weitere Vereinfachung des Systems würde eine Integration der Bewegungssteuerung des Fahrwerks in das Motion Planning Framework MoveIt bringen. In der Roboter- Konfiguration dieser Arbeit werden die Steuerung der Mecanum-Räder und des Roboter- arms UR-10 durch unterschiedliche Softwarekomponenten durchgeführt. Dies erleichtert die Implementation und Verbesserung der Einzelkomponenten, führt jedoch dazu, dass die Teile des Roboters nicht als Ganzes agieren. Die Mecanum-Räder des RB-Kairos erlauben dem Roboter eine Fahrt in alle Richtungen. Er kann sich somit auf einer zweidimensionalen Ebene, in diesem Fall dem Fußboden des Versuchslabors, uneingeschränkt fortbewegen und ist auf keine Richtungsänderung des Gefährts, wie sie etwa bei der Achsschenkellenkung klassischer Autos notwendig ist, angewiesen. Diese zweidimensionale Fahreigenschaft kann in MoveIt als planare Achse konfiguriert werden. Eine Drehung um die Vertikalachse, wie sie mit der Mecanum- Steuerung ebenfalls möglich ist, sorgt für einen zusätzlichen Gelenks-Freiheitsgrad. Mit dieser Konfiguration kann der Endeffektor des Roboterarms mit der gleichen Software wie der Basis gesteuert werden. Das Fahrwerk sorgt für eine grobe Bewegung im Raum, während der Roboterarm die Ungenauigkeiten zeitnah ausgleichen kann. So könnte man auch die in Unterabschnitt 6.1.2 (Zeitspanne) beschriebene Eigenkollision mit der Roboterbasis umgehen, da diese in diesem Fall einfach ausweichen kann, ohne dass für sie ein neuer Navigationsplan erstellt werden müsste. Ein Ausweichen des Roboters ist auch dann sinnvoll, wenn Benutzer oder Benutzerinnen Gefahr laufen in ihn hineinzulaufen. Im Kontext der visuellen VR-Anwendung existiert der Roboter gar nicht, sondern nur das haptische Element, das er an seinem Endeffektor zur Verfügung stellt. So wäre es denkbar, dass der Roboter möglichen Zusammenstößen mit Benutzern und Benutzerinnen rechtzeitig ausweicht, während die gebotene haptische Erfahrung an Ort und Stelle verbleiben kann. Dieses Konzept ist auch dann hilfreich, wenn sich außer dem Roboter noch weitere Requisiten oder zusätzliche Roboter im Raum befinden. Ein Aneinaderreihen von mehreren Haptikwänden, wie es in TurkDeck (siehe Abbildung 2.3) praktiziert wird, wäre damit denkbar. Im aktuellen Aufbau nimmt der RB-Kairos immer eine Position von 0,7 m hinter dem gewünschten Zielpunkt der Haptikwand ein. Der RB-Kairos ist mit Laserscannern ausge- stattet, die ihm ein Abtasten seiner Umgebung erlauben. Mit den ermittelten Laserdaten können Hindernisse erkannt und umfahren werden. Sollte das Navigationsziel aber durch ein anderes Objekt oder einen Menschen blockiert sein, so kann der Roboter sein Ziel 75 7. Diskussion gar nicht erreichen und bricht die Bewegung ab. Die Laserdaten haben jedoch nur einen Einfluss auf die Navigation des Chassis. Die Steuerungssoftware des Roboterarms greift darauf nicht zu. Die zweidimensionale Umgebungsrepräsentation durch das Lidar ist nur sinnvoll für die sich in einer zweidimensionalen Ebene fortbewegende Roboterbasis. Die zweidimensionalen Umgebungsdaten könnten aber für die Verwendung als Kolli- sionsgeometrie in MoveIt um eine dritte Dimension bis Raumhöhe erweitert werden. Eleganter und effektiver wäre es jedoch, die Hindernisse dreidimensional zu erfassen, um so Armbewegungen unter und über möglichen Hindernissen zu erlauben. Ein Tracking von Hindernissen in drei Dimensionen ist ebenso über die Lighthouse- Technologie möglich. Bei rigiden Objekten reicht ein einzelner Tracker aus, um seine Position zu bestimmen. Eine vereinfachte Kollisionsgeometrie sorgt für die Vermeidung von Zusammenstößen. Auch Menschen können auf diese Art erfasst werden. Zum Beispiel können die Positionen von Headset und Controllern zur Approximation der Körperhaltung eines VR-Benutzers oder einer VR-Benutzerin herangezogen werden. Die Punktdaten der Lidars des RB-Kairos könnten die Stellung der Beine preisgeben. Für genaueres Körpertracking kann zusätzliches Equipment, zum Beispiel Motion-Tracking-Anzüge, verwendet werden. Sollte der UR-10 durch seine Drucksensoren ein Hindernis erkennen oder einer der Notstopp-Buttons auf Roboterchassis oder Funkfernsteuerung betätigt werden, so schal- tet der RB-Kairos in den Ruhemodus. In diesem Modus werden alle Kommandos der Robotersteuerung gestoppt und die Gelenkbremsen des Roboterarms angezogen. Dieser Modus wird ebenso beim Herunterfahren des Robotersystems eingeschalten. Eine Reakti- vierung des Roboters erfolgt durch Herausdrehen des Notstopps sowie dem Drücken der Restart-Taste auf der Rückseite des RB-Kairos. Zu diesem Zeitpunkt führt die Navigati- onssoftware ihren Kurs fort und auch eine manuelle Steuerung über den PlayStation 4 Controller ist wieder möglich. Der UR-10 bleibt jedoch weiterhin deaktiviert, da für seine Reaktivierung ein zusätzlicher Schritt notwendig ist. Er erfordert den Anschluss eines Displays und einer Computermaus über die designierten HDMI- und USB-Buchsen auf der Rückseite des Chassis. Dafür kann das bereits am Roboter angebrachte Touchdisplay verwendet werden. Die nun am Display erscheinende Bedienungsoberfläche Polyscope zeigt die Meldung über den Notstopp, die per Toucheingabe weggeklickt werden kann. Im Initialisationsbereich kann schließlich die Operation des Roboterarmes wieder freigegeben werden, woraufhin sich die Gelenkbremsen wieder lösen. Der Roboter wäre nun wieder bereit seinen Dienst fortzufahren, jedoch muss sein Tracking neu gestartet werden. Wie in Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos) be- schrieben, beendet sich SteamVr von selbst, sollte es kein angeschlossenes Display mehr erkennen. Dies hat auch zur Folge, dass die gestartete Node, die für die Überführung der Trackingkoordinaten in ROS verantwortlich war, beendet wurde. Ein Neustart von SteamVr und der Tracking Node bringt das System wieder auf den Status Quo vor der Aktivierung des Notstopps. Ein Ausweg aus diesem Dilemma würde die Verwendung eines zusätzlichen Displays für das User Interface des UR-10 bringen. Möglicherweise ist auch die Reinitialisierung des Roboterarms per Software anstatt per Bedienoberfläche 76 7.2. Erweiterungsmöglichkeiten möglich. Eine solche Lösung wurde aber zum Zeitpunkt des Verfassens dieser Arbeit nicht gefunden. Neben diesen konzeptionellen existieren noch weitere kleine Verbesserungsmöglichkei- ten, auf die eingegangen wird. Das Betriebssystem des Roboters Ubuntu 16.04 und die installierte ROS-Version Kinetic Kame sind zum Zeitpunkt der Erstellung dieser Diplomarbeit in die Jahre gekommen. Dies macht sich zum Beispiel dadurch bemerkbar, dass Python 2.7, die einzige Version, die von der ROS-Distribution unterstützt wird, seit 1. Januar 2020 keinen Support mehr erhält [pyt]. Aus diesem Grund wurden auch viele Programmbibliotheken, die ursprünglich Python 2.7 unterstützten, auf eine neuere Version umgestellt. Dies hat zur Folge, dass einige Bibliotheken nach deren Update plötzlich nicht mehr am bestehenden System ausgeführt werden können. Um dies zu umgehen, muss daher explizit auf ältere Versionen dieser Software zurückgegriffen werden, die jedoch keinerlei Bugfixes oder Sicherheitsupdates mehr erhalten. Ein Upgrade von Betriebssystem und ROS-Version würde die Aktualität der Robotersoftware sicherstellen, hat jedoch auch den Nachteil, dass einige Programmteile dadurch ebenso inkompatibel werden können. Es müsste daher das gesamte System auf Kompatibilität überprüft werden und die einzelnen Komponenten gegenbenenfalls an die neue Funktionsweise angepasst werden, wobei es sich um einen beträchtlichen Zeitaufwand handeln könnte. Eine weitere Verbesserung der Softwarearchitektur besteht in der ausschließlichen Verwen- dung von Open Source Software. ROS selbst und die meisten Bibliotheken des RB-Kairos gehören dazu. Einige verwendete Bibliotheken des Herstellers Robotnik [roba] sind jedoch proprietär und nicht im Internet aufzufinden. Dies hat zur Folge, dass die Funktionsweise einiger Komponenten nicht dokumentiert oder nicht nachvollziehbar ist. Software Upda- tes sind so ebenso nur durch Nachfrage beim Hersteller zu beziehen. Die proprietären Bibliotheken könnten also auch leicht ihre Kompatibilität zu ihren laufend aktualisierten Open-Source-Pendants verlieren, sollten sich Hersteller dazu entscheiden ihren Support einzustellen. 7.2 Erweiterungsmöglichkeiten Wie in der Einleitung dieses Kapitels erwähnt, erlaubt die aktuelle Installation am Roboter nur die Simulation von flachen, unbeweglichen Oberflächen. Um hier mehr Flexibilität zu bieten, könnte die Requisite am Endeffektor des UR-10 durch weitere Funktionen erweitert werden. So könnte dort ein Robotic Shape Display [SGY+17] angebracht werden, das eine dynamische Simulation von verschiedenen Oberflächen erlaubt. Abbildung 7.1 zeigt ein solches Display aus ShapeShift [SGY+17] von Siu et al. Außerdem wäre es denkbar, den Roboter mit unterschiedlichen haptischen Objekten auszustatten. Ähnlich der HapticHydra aus Haptic Snakes [ASJR+19] von Al-Sada et al. könnten diese fest am Endeffektor des Roboters angebracht sein oder in einem Objektlager bis zum gezielten Einsatz aufbewahrt werden. Dieses Magazin könnte sich an einem unzugänglichen Ort in der Nähe des Versuchsbereichs befinden oder, aufgrund der Größe des Roboters, auch auf ihm angebracht sein. Der Austausch und eigenständige Wechsel des Endeffektors ist 77 7. Diskussion Abbildung 7.1: Das Robotic Shape Display von ShapeShift [SGY+17] erlaubt die dynami- sche Simulation von Oberflächen. jedoch mit einem großen Entwicklungsaufwand verbunden, vorallem bei der Hardware. Abbildung 7.2 zeigt den multifunktionalen Endeffektor der HapticHydra. Der Roboterarm UR-10 wird vom Hersteller als kollaborierender Roboterarm beworben, der einen Betrieb in unmittelbarer Nähe zu Menschen, beziehungsweise im Zusammenspiel mit Menschen möglich machen soll. Er besitzt Sensoren, die Kollisionen und äußere Krafteinwirkungen auf den Manipulator erkennen können, um im Notfall die Bewegung zu stoppen. Die Sensorik wird auch dazu verwendet, um im sogenannten Freedrive Modus die Gelenke des Arms per Hand zu bewegen. Der UR-10 liest in diesem Modus die ausgeübten Kräfte auf sich aus und bewegt seine Gelenke in die Richtung der Kraftwirkung. Der Treiber des UR-10 publiziert diese Daten ebenfalls, allerdings nur in einer vereinfachten Form als Summe aller Krafteinwirkungen auf den Endeffektor . Diese werden als wrench-Topic (Auflistung A.7) in ROS publiziert und beinhalten je einen 3-dimensionalen Vektor für Linear- und Rotationskräfte. Die Daten des wrench-Topics können simplifiziert als Drucksensor interpretiert werden und dem Robotersystem als Input dienen. Eine mögliche Anwendung ist die Simulation eines großen, fahrbaren Behälters, zum Beispiel eines Müllcontainers oder einer Grubenlo- re, indem die Haptikwand in die Richtung des Benutzers oder der Benutzerin ausgerichtet wird und die Oberfläche des Gefährtes imitiert. Bringt der Benutzer oder die Benutzerin genügend Kraft gegen die Wand auf, so manövriert der gesamte Roboter in die entspre- chende Richtung oder, im Falle der Grubenlore, entlang eines Pfades. Je nach Masse oder Inhalt des zu simulierenden Behälters wäre mehr oder weniger Kraftausübung seitens des 78 7.2. Erweiterungsmöglichkeiten Abbildung 7.2: Der multifunktionale Endeffektor der HapticHydra [ASJR+19] bietet einen Greifarm, ein Gebläse, einen „Finger“ und eine Bürste. Abbildung 7.3: Der Versuchsaufbau Haptic Wrench. Der Druck gegen den Roboterarm wird vom Treiber des UR-10 erkannt und in Bewegungskommandos für das Fahrwerk umgerechnet. Der Roboter kann so per Hand weggeschoben werden. Benutzers oder der Benutzerin notwendig, um diesen zu bewegen. Die Mecanum-Räder erlauben dem Roboter eine zusätzliche Flexibilität, da dadurch eine Bewegung in alle Richtungen möglich ist. Abbildung 7.3 zeigt diesen Versuchsaufbau der Haptic Wrench, der aufgrund der Komplexität nicht in das Projekt dieser Arbeit integriert wurde. Die Kraftausübung auf den Roboterarm hat im Versuch der Haptic Wrench nur einen Einfluss auf die Bewegung der Räder, nicht jedoch auf die Stellung des Roboterarms. Das liegt daran, dass das Fahrwerk problemlos durch Angabe von Drehgeschwindigkeiten für jedes Rad gesteuert werden kann. Zum Beispiel kann ein starker Druck gegen den „Sensor“ eine entsprechend schnelle Drehung der Räder auslösen. Der UR-10 unterstützt nativ, per URScript angesteuert, ebenso eine Bewegung des TCP in einer bestimmten Geschwindigkeit, der ROS -Treiber beziehungsweise MoveIt implementieren diese Funktion 79 7. Diskussion jedoch nicht. Der Arm kann mit dieser Software nur stillstehende Posen einnehmen oder vordefinierte Pfade abfahren, jedoch keine dynamische Bewegung in eine bestimmte Richtung ausführen. Die Steuerung des Arms ohne MoveIt und über natives URScript birgt eigene Probleme, allen voran der Wegfall der Pfadplanungssoftware sowie der definierten Sperrzonen, die verhindern, dass der Roboterarm mit sich selbst kollidiert. Ein Umschalten beider Systeme ist durch Beendigung und Neustart einzelner Nodes möglich, es wird aber im Ökosystem von ROS davon abgeraten. Daher bleibt für eine saubere Umsetzung dieses Features nur der Weg über eine Treibererweiterung, welche jedoch nicht im Rahmen dieser Diplomarbeit liegt. Mit dieser Technik ist die Simulation von nicht-linearen Bewegungen, wie zum Beispiel das Öffnen von Türen durch Rotation um die Vertikalachse, möglich. Durch eine geskriptete Kurvenfahrt des gesamten Roboters könnte dies im Versuch Haptic Wrench umgesetzt werden, aber die Eigenmasse von circa 130 kg sorgt für eine nicht zu unterschätzende Trägheit, weshalb davon abgesehen wurde. Viel besser dafür geeignet sind die beiden Vertikalachsen des UR-10 , der die Drehung, je nach Masse der simulierten Türe, schneller oder langsamer ausführen könnte. Auch ein physikalisches Modell zur Simulation von Rotationen in willkürliche Richtungen wäre mit dem Roboterarm denkbar. 7.3 Anwendungsmöglichkeiten Das VR-System dieser Arbeit bietet im aktuellen Versuchsaufbau eine solide, haptische Ergänzung zur gewohnten, kommerziellen VR-Erfahrung. Die Anwendungsmöglichkeiten sind jedoch aufgrund einiger Faktoren stark beschränkt. Der Platzbedarf, die vielzähligen Komponenten und die Anschaffungskosten des Systems sprechen gegen einen Einsatz für den Heimgebrauch. Weiters verlangt die Konfiguration und Inbetriebnahme fortgeschrittene Kenntnisse im Bereich von ROS und virtueller Realität, die sich klar an Spezialisten oder Enthusiasten richten. Nach Optimierung der Anforderungen könnte dieses System aber als Simulationshardware im professionellen Bereich oder der Unterhaltungsindustrie wie etwa VR-Spielhallen dienen. In einer VR-Erlebniswelt, wie sie etwa in TurkDeck [CRR+15] (siehe Abbildung 2.3) beschrieben wird, könnten die menschlichen Akteure durch Roboter dieser Diplomarbeit ersetzt werden. Dazu müssen aber entweder die Flexibilitätsanforderungen der Anwen- dung gesenkt oder das Interaktionsportfolio der Roboter erhöht werden. Abschnitt 7.2 (Erweiterungsmöglichkeiten) fasst einige Möglichkeiten zur Erweiterung des Angebots zu- sammen. TurkDeck zeigt jedoch eindrucksvoll den Flexibilitätsvorsprung, den ein Mensch gegenüber einem Roboter weiterhin inne hat, indem zum Beispiel vom menschlichen Akteur oder der Akteurin gefordert wird, seine oder ihre Requisite von einer Wand in eine Treppe umzuformen und diese auf den Boden zu legen. Eine weitere Anwendungsmöglichkeit stellen Simulationen im professionellen Bereich dar. So gab es bereits eine Kooperation der TU Wien mit Soldaten des Österreichischen Bundesheers, bei der eine VR-Simulation im Bereich der Abwehr von atomaren, biolo- 80 7.3. Anwendungsmöglichkeiten gischen und chemischen (ABC) Kampfmitteln erprobt wurde [see]. Diese Anwendung wurde in Immersive Deck [PVS+16] integriert, die im selben Versuchsraum wie die Tests dieser Arbeit stattfand. Die Anwendung unterstützt die Simulation von unterschiedlichen Gefahrensituationen, bietet jedoch keinerlei haptisches Empfinden abseits der am Körper zu tragenden Ausrüstung. Mit der Simulation von Hindernissen, zum Beispiel versperrten Türen oder Kisten, die von den Soldaten vor dem weiteren Vorgehen aus dem Weg geschaffen werden müssen, könnte ein höherer Realismusgrad erreicht werden. 81 KAPITEL 8 Zusammenfassung Diese Diplomarbeit beschreibt den Aufbau und den Betrieb eines VR-Systems, das haptische Sinneswahrnehmung in einem raumgroßen Setup bietet. Das durch das Virtual- Reality-Headset Vive Pro bereitgestellte virtuelle Erlebnis wird durch die mobile Robo- terplattform RB-Kairos um haptische Elemente erweitert. Benutzer und Benutzerinnen können virtuelle Objekte in der VR-Anwendung markieren, welche durch Platzierung einer realen Requisite zur Bereitstellung eines haptischen Objekts an eben jener Stel- le führt. Als Softwärelösungen kommen das Robot Operating Systems zur Steuerung und Verwaltung der Roboterfunktionen zum Einsatz sowie das Softwareentwicklungs- Framework Unity zur Darstellung der VR-Szene. Die vom Virtual-Reality-Headset zur Verfügung gestellte Lighthouse-Technologie liefert eine genaue Möglichkeit zur Ortung von Benutzern und Benutzerinnen und Objekten innerhalb eines Raums und bildet damit die Grundlage für die Ausführung einer punktgenauen Haptik am vorhergesehenen Ort. Die Roboterplattform kombiniert durch die Verwendung von Mecanum-Rädern und den auf der Roboterbasis angebrachten UR-10 eine hohe Manövrierfähigkeit mit präziser Manipulation. Die ausgeführte Evaluation zeigt die Stärken und Schwächen des Systems. Es ist damit möglich, eine haptische Requisite von maximal 10 kg in einem Volumen von 8 × 6, 3 × 1, 95 m (Länge, Breite, Höhe) in einer beliebigen Ausrichtung mit einer Genauigkeit von +/- 0,01 m innerhalb von 28 s zu platzieren. Aufgrund der Eigenmasse des Roboters ist die gebotene Haptik solide an ihrem Aufenthaltsort verankert und erlaubt eine gewisse Standhaftigkeit gegenüber äußeren Einflüssen. Die kabellose Ausführung von Headset und Roboter ermöglicht einen ungehinderten Betrieb im gesamten Versuchsraum und erspart Überlegungen zum Kabelmanagement. Die offene Bauweise und Softwarearchitektur erlauben eine leichte Erweiterung des Systems und Austausch von Komponenten. Die Analyse des Systems erlaubt eine Einschätzung, an welchen Stellen Verbesserungen des Setups möglich sind. Die Verwendung eines Endeffektors mit multiplen Werkzeugen oder eines haptischen Requisitenlagers könnte die fest angebrachte Requisite des aktuellen 83 8. Zusammenfassung Versuchs ersetzen. Zudem ist es denkbar, die statische Oberfläche der Requisite durch dynamische Effekte, zum Beispiel eines Robotic Shape Display zu erweitern. Die Reaktionszeit, also die Zeit, die das System zum Platzieren der haptischen Requisite benötigt, könnte durch Vorberechnung des Bewegungsplanes des Roboterarms reduziert werden. Weiters ist es denkbar, die Navigation der Roboterbasis in die Pfadplanung des Arms zu integrieren, um eine getrennte und damit zusätzliche Berechnung zu vermeiden. Die Fahreigenschaften der Mecanum-Räder erlauben eine Abstraktion der Roboterfahrt als Bewegung auf einer zweidimensionalen Achse entlang des Fußbodens. Das Bewe- gungsmodell des Roboterarms würde damit um zwei zusätzliche Freiheitsgrade erweitert werden. Der UR-10 besitzt Sensoren in seinen Gelenken, die eine ungeplante Kraftausübung, zum Beispiel durch eine Kollision mit einem Hindernis erkennen können. Dieses Sicher- heitsfeature erlaubt ihm einen Betrieb in der Nähe von Menschen, kann aber auch dazu verwendet werden, die Kraftausübung aktiv zu messen. Mit dieser Technik könnten hap- tische Objekte simuliert werden, bei denen je nach ihrer virtuellen Eigenmasse mehr oder weniger Kraftaufwand aufgebracht werden muss, um sie zu bewegen, zum Beispiel Türen oder Rollcontainer. Zur Anwendung dieser Inputmethode zur Steuerung des Roboterarms ist jedoch eine Softwareerweitung nötig, da der reguläre Treiber des Robot Operating Systems dies nicht unterstützt. Mit diesen Verbesserungen ließe sich ein universelles Robotersystem umsetzen, das neben der statischen Bereithaltung von haptischen Objekten auch dynamische Haptik anbieten kann. Es könnte eine Fläche, die nur durch die Größe des Trackingvolumens eingeschränkt ist, mit Haptik versorgen. Die eingebauten Drucksensoren des Roboterarms überwachen die Interaktion mit Menschen und geben je nach Konfiguration nach oder leisten Wider- stand. Ein austauschbares Repertoire an Requisiten sorgt für unterschiedlichste, haptische Eindrücke. Aufgrund der modularen Architektur ist eine Erweiterung auf mehrere Robo- ter denkbar, die im Zusammenspiel eine ganzheitliche haptische VR-Erfahrung bieten können. Ein solches System ist in vielen wirtschaftlichen Branchen einsetzbar. Denkbar wäre etwa eine haptische VR-Trainingssimulation zur Ausbildung von Einsatzkräften. Ein Roboter könnte mit seiner Requisite eine versperrte Türe simulieren, die von den Auszubildenden vor dem weiteren Vorgehen geöffnet werden muss. Ein weiterer Roboter könnte einen PKW mimen, der auf einer abschüssigen Straße wegzurollen droht und von den Einsatzkräften in Sicherheit gebracht werden muss. Neben dem Ausbildungsbereich könnten die gleichen Elemente auch zur Unterhaltung eingesetzt werden, zum Beispiel in Virtual-Reality- Erlebniswelten, wo eine Interaktion der Spieler und Spielerinnen mit der Umgebung notwendig ist. So könnte eine schwere Metalltüre durch genügend Kraftanwendung aufgedrückt werden. Eine weitere Idee wäre eine Grubenlore, die durch ein virtuelles Level entlang der Gleise geschoben wird, zu einem späteren Zeitpunkt in einen virtuellen Grubenschacht fällt und dabei selbstständig aus dem Spielbereich navigiert. 84 ANHANG A Anhang A.1 Einrichtung von SteamVr auf dem Roboter Dieser Abschnitt beschreibt die genauen Schritte, die nötig sind, um SteamVr auf einem RB-Kairos einzurichten. Die Anleitung geht davon aus, dass Ubuntu 16.04 und ROS- Version Kinetic Kame installiert sind. Diese Version von ROS verwendet ausschließlich Python 2.7, welche mittlerweile ihr Supportende erreicht hat [pyt]. SteamVr wird so konfiguriert, dass eine Ausführung ohne VR-Headset möglich ist und auch keine Rech- nerressourcen für eine Grafikdarstellung aufgebracht werden. Die Gründe für diese Art der Installation werden in Abschnitt 5.4 (Lighthouse Tracking des RB-Kairos) beschrieben. Die hier aufgelisteten Installationsschritte beinhalten Anleitungen, die aus den Inter- netquellen [AQwm18], [Wen] und [God18] stammen. Sie wurden für die Verwendung in dieser Arbeit adaptiert und zusammengefasst. A.1.1 Grafiktreiber Die Internetquelle [AQwm18] zählt als notwendigen Schritt die Installation des Grafik- treibers VulkanSDKs auf, der jedoch für das Projekt dieser Diplomarbeit nicht ausgeführt wird. Da die Grafikkarte des RB-Kairos-Rechners nicht genug Leistung bietet um VR- Anwendungen darzustellen und diese Funktion nicht benötigt wird, wird bewusst auf die Installation des Grafiktreibers verzichtet. Daraufhin wird beim Start von SteamVr dem Benutzer oder der Benutzerin ein Hinweistext angezeigt, dass eine Komponente von SteamVr nicht initialisiert werden konnte: A key component of SteamVR has failed (siehe Abbildung 5.6). Dieser Fehler kann ignoriert werden, da das Tracking von ihm unberührt bleibt. 85 A. Anhang A.1.2 Installation von Steam und SteamVr • Steam von http://store.steampowered.com herunterladen und installieren. • Steam öffnen und einloggen. • Den Menüpunkt „Steam/Settings/Account/Beta Participation“ öffnen und Steam Beta Update aktivieren. • Unter „Library/VR“ auf SteamVr rechts-klicken, „Properties/Beta“ öffnen und eine Beta-Version auswählen. • SteamVr auf der Store Seite suchen und installieren. • Unter dem Menüpunkt „Steam/Go Offline“ Steam in den Offline-Modus verset- zen. Dies verhindert ein Überschreiben der Einstellungen, die bei den nachfolgenden Konfigurationen gesetzt werden. A.1.3 Konfiguration von SteamVr • Terminal Console öffnen. • Erfordernis eines Headsets deaktivieren. Dazu die Datei default.vrsettings mit einem Texteditor editieren: gedit ~/.steam/steam/steamapps/\ common/SteamVR/resources/settings/default.vrsettings. • "requireHmd" : false, "activateMultipleDrivers" : true und "forcedDriver": "null" setzen und speichern. • Den HMD-Null-Treiber per vrsettings-Datei aktivieren: gedit ~/.steam/\ steam/steamapps/common/SteamVR/drivers/null/resources/\ "settings/default.vrsettings. • "enable": true setzen und speichern. • Steam und SteamVr neu starten. A.1.4 Kopieren der Lighthouse-Einstellungen Da ein Ausführen des Room-Setups von SteamVr aufgrund der fehlenden Hardwareleis- tung auf dem RB-Kairos nicht möglich ist, wird diese Konfiguration auf einem tauglichen Computer ausgeführt und anschließend auf den Roboter übertragen. Bei den zu kopie- renden Dateien handelt es sich um chaperone_info.vrchap und das Verzeichnis lighthouse. Diese befinden sich standardmäßig in folgenden Verzeichnissen: Windows: C:/Program Files (x86)/Steam/config/ Ubuntu: ~/.local/share/Steam/config/ 86 A.2. Hochfahren des RB-Kairos A.1.5 OpenVr SDK einrichten • Terminal Console öffnen. • Erstellen eines Sym-Links der Datei libudev.so.0 auf libudev.so.1: sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1\ /lib/x86_64-linux-gnu/libudev.so.0 • Abhängigkeiten für OpenVr installieren: sudo apt install libsdl2-dev\ libudev-dev libssl-dev zlib1g-dev python-pip • Eine Python 2.7 Version von OpenVr installieren: sudo pip\ install openvr==1.0.1301 Anmerkung: Die für diese Arbeit erstellte Software, die Daten aus OpenVr in ROS überträgt, wurde in Python 2.7 geschrieben und von [AQwm18] inspiriert. Sie verwendet einen inoffiziellen Python-Wrapper [pyo] für das in C++ geschriebene OpenVr-SDK . Nach dem Supportende von Python 2.7 am 1. Januar 2020 [pyt] wurde der Wrapper auf Python-Version 3.5 aktualisiert. Nachdem aber die ROS-Distribution des RB-Kairos (Kinetic Kame) nur die Python-Version 2.7 unterstützt, muss beim Wrapper ebenso eine entsprechende Version installiert werden. A.2 Hochfahren des RB-Kairos 1. „On-Off“-Schalter des RB-Kairos in „On“-Stellung bringen. 2. Schlüssel in Schlüsselloch mit Aufschrift „Muting“ stecken und nach rechts drehen. 3. „CPU“-Button drücken und das Hochfahren von Ubuntu abwarten. 4. Weitere 30 Sekunden warten, bis ROS gestartet ist. 5. „On Arm“-Button drücken und circa 90 Sekunden warten, bis der UR-10 hochge- fahren ist. 6. Den Drehknopf auf der Notstoppfernbedienung herausdrehen. 7. „Restart“-Button drücken, um den Notstopp zu deaktivieren. 8. Der UR-10 macht Geräusche, während die Gelenkbremsen gelöst werden. 9. Sollte dies nicht der Fall sein, Maus und Monitor an die Buchsen des UR-10 anschließen und den Roboterarm manuel initialisieren und starten. 87 A. Anhang A.3 Code-Auflistung Dieser Abschnitt enthält Codefragmente, die im Rahmen dieser Diplomarbeit zum Einsatz kommen. Die verwendeten ROS Messages und Actions werden vorgefertigt vom ROS- Ökosystem zur Verfügung gestellt, sind zum Großteil in der Onlinedokumentation [rosa] zu finden und wurden zur besseren Lesbarkeit geringfügig aufbereitet. A.3.1 Messages Messages beschreiben den Inhalt von Datennachrichten, die von ROS über Topics publiziert werden und sind vergleichbar mit structs aus C/C++. Sie definieren ein oder mehrere Variablentypen und die Reihenfolge, die sie im Speicherbereich der Nachricht einnehmen. Messages selbst können auch Teil anderer Messages sein, wie zum Beispiel der Typ geometry_msgs/Vector3 (Auflistung A.1), der ein Datentripel definiert und in vielen anderen Nachrichten vorkommt, unter anderem geometry_msgs/Transform (Auflistung A.4). 1 # This represents a vector in free space. 2 # It is only meant to represent a direction. Therefore, it does not 3 # make sense to apply a translation to it (e.g., when applying a 4 # generic rigid transformation to a Vector3, tf2 will only apply the 5 # rotation). If you want your data to be translatable too, use the 6 # geometry_msgs/Point message instead. 7 float64 x 8 float64 y 9 float64 z Auflistung A.1: geometry_msgs/Vector3 http://docs.ros.org/en/api/ geometry_msgs/html/msg/Vector3.html 1 # This contains the position of a point in free space 2 float64 x 3 float64 y 4 float64 z Auflistung A.2: geometry_msgs/Point http://docs.ros.org/en/api/ geometry_msgs/html/msg/Point.html 1 # This represents an orientation in free space in quaternion form. 2 float64 x 3 float64 y 4 float64 z 5 float64 w Auflistung A.3: geometry_msgs/Quaternion http://docs.ros.org/en/api/ geometry_msgs/html/msg/Quaternion.html 88 A.3. Code-Auflistung 1 # This represents the transform between two coordinate frames in free space. 2 Vector3 translation 3 Quaternion rotation Auflistung A.4: geometry_msgs/Transform http://docs.ros.org/en/api/ geometry_msgs/html/msg/Transform.html 1 # A representation of pose in free space, composed of position 2 # and orientation. 3 Point position 4 Quaternion orientation Auflistung A.5: geometry_msgs/Pose http://docs.ros.org/en/api/ geometry_msgs/html/msg/Pose.html 1 # This expresses velocity in free space broken into 2 # its linear and angular parts. 3 Vector3 linear 4 Vector3 angular Auflistung A.6: geometry_msgs/Twist http://docs.ros.org/en/api/ geometry_msgs/html/msg/Twist.html 1 # This represents force in free space, separated into 2 # its linear and angular parts. 3 Vector3 force 4 Vector3 torque Auflistung A.7: geometry_msgs/Wrench http://docs.ros.org/en/api/ geometry_msgs/html/msg/Wrench.html 1 # Standard metadata for higher-level stamped data types. 2 # This is generally used to communicate timestamped data 3 # in a particular coordinate frame. 4 # sequence ID: consecutively increasing ID 5 uint32 seq 6 # Two-integer timestamp that is expressed as: 7 # * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable 8 # is called ’secs’) 9 # * stamp.nsec: nanoseconds since stamp_secs (in Python the variable 10 # is called ’nsecs’) 11 # time-handling sugar is provided by the client library 12 time stamp 13 #Frame this data is associated with 14 string frame_id Auflistung A.8: std_msgs/Header http://docs.ros.org/en/api/std_msgs/ html/msg/Header.html 89 A. Anhang 1 # Reports the state of a joysticks axes and buttons. 2 # timestamp in the header is the time the data is received from the joystick 3 Header header 4 # the axes measurements from a joystick 5 float32[] axes 6 # the buttons measurements from a joystick 7 int32[] buttons Auflistung A.9: sensor_msgs/Joy https://docs.ros.org/en/api/sensor_ msgs/html/msg/Joy.html 1 # This expresses a transform from coordinate frame header.frame_id to the 2 # coordinate frame child_frame_id. This message is mostly used by the tf 3 # package. See its documentation for more information. 4 Header header 5 string child_frame_id 6 Transform transform Auflistung A.10: geometry_msgs/TransformStamped http://docs.ros.org/ en/api/geometry_msgs/html/msg/TransformStamped.html 1 # A Pose with reference coordinate frame and timestamp 2 Header header 3 Pose pose Auflistung A.11: geometry_msgs/PoseStamped http://docs.ros.org/en/ api/geometry_msgs/html/msg/PoseStamped.html 1 # This is a message to hold data from an IMU (Inertial Measurement Unit). 2 # Accelerations should be in m/s^2 (not in g’s), and rotational velocity 3 # should be in rad/sec. If the covariance of the measurement is known, it 4 # should be filled in (if all you know is the variance of each measurement, 5 # e.g. from the datasheet, just put those along the diagonal). 6 # A covariance matrix of all zeros will be interpreted as "covariance 7 # unknown", and to use the data a covariance will have to be assumed or 8 # gotten from some other source. 9 # If you have no estimate for one of the data elements (e.g. your IMU doesn’t 10 # produce an orientation estimate), please set element 0 of the associated 11 # covariance matrix to -1. If you are interpreting this message, please check 12 # for a value of -1 in the first element of each covariance matrix, and 13 # disregard the associated estimate. 14 Header header 15 geometry_msgs/Quaternion orientation 16 float64[9] orientation_covariance # Row major about x, y, z axes 17 geometry_msgs/Vector3 angular_velocity 18 float64[9] angular_velocity_covariance # Row major about x, y, z axes 19 geometry_msgs/Vector3 linear_acceleration 20 float64[9] linear_acceleration_covariance # Row major x, y, z Auflistung A.12: sensor_msgs/Imu Message http://docs.ros.org/en/api/ sensor_msgs/html/msg/Imu.html 90 A.3. Code-Auflistung 1 # This represents a 2-D grid map, in which each cell represents the 2 # probability of occupancy. 3 Header header 4 #MetaData for the map 5 MapMetaData info 6 # The map data, in row-major order, starting with (0,0). Occupancy 7 # probabilities are in the range [0,100]. Unknown is -1. 8 int8[] data Auflistung A.13: nav_msgs/OccupancyGrid http://docs.ros.org/en/api/ nav_msgs/html/msg/OccupancyGrid.html 1 # This hold basic information about the characterists of the OccupancyGrid 2 time map_load_time # The time at which the map was loaded 3 float32 resolution # The map resolution [m/cell] 4 uint32 width # Map width [cells] 5 uint32 height # Map height [cells] 6 # The origin of the map [m, m, rad]. This is the real-world pose of the 7 # cell (0,0) in the map. 8 geometry_msgs/Pose origin Auflistung A.14: nav_msgs/MapMetaData http://docs.ros.org/en/api/nav_ msgs/html/msg/MapMetaData.html 1 # Single scan from a planar laser range-finder 2 # If you have another ranging device with different behavior (e.g. a sonar 3 # array), please find or create a different message, since applications 4 # will make fairly laser-specific assumptions about this data. 5 # Timestamp in the header is the acquisition time of the first ray in the 6 # scan. In frame frame_id, angles are measured around the positive Z axis 7 # (counterclockwise, if Z is up) with zero angle being forward along the x 8 # axis 9 Header header 10 float32 angle_min # start angle of the scan [rad] 11 float32 angle_max # end angle of the scan [rad] 12 float32 angle_increment # angular distance between measurements [rad] 13 # time between measurements [seconds] - if your scanner is moving, this will 14 # be used in interpolating position of 3d points 15 float32 time_increment 16 float32 scan_time # time between scans [seconds] 17 float32 range_min # minimum range value [m] 18 float32 range_max # maximum range value [m] 19 # range data [m] (Note: values < range_min or > range_max should be discarded) 20 float32[] ranges 21 # intensity data [device-specific units]. If your device does not provide 22 # intensities, please leave the array empty. 23 float32[] intensities Auflistung A.15: sensor_msgs/LaserScan http://docs.ros.org/en/api/ sensor_msgs/html/msg/LaserScan.html 91 A. Anhang A.3.2 Actions Actions beschreiben Aufgaben, die von ActionServern ausgeführt werden. Sie definieren sich durch Angabe von Goal-, Feedback- und Result-Topics. Goal beschreibt den zu erreichenden Zielzustand und Feedback den aktuellen Zustand. Die erfolgreich beendete Ausführung wird schließlich in den Result-Topics veröffentlicht. 1 geometry_msgs/PoseStamped target_pose 2 --- 3 --- 4 geometry_msgs/PoseStamped base_position Auflistung A.16: move_base_msgs/MoveBase https://github.com/ ros-planning/navigation_msgs/blob/ros1/move_base_msgs/action/ MoveBase.action 1 # Motion planning request to pass to planner 2 MotionPlanRequest request 3 4 # Planning options 5 PlanningOptions planning_options 6 7 --- 8 9 # An error code reflecting what went wrong 10 MoveItErrorCodes error_code 11 12 # The full starting state of the robot at the start of the trajectory 13 moveit_msgs/RobotState trajectory_start 14 15 # The trajectory that moved group produced for execution 16 moveit_msgs/RobotTrajectory planned_trajectory 17 18 # The trace of the trajectory recorded during execution 19 moveit_msgs/RobotTrajectory executed_trajectory 20 21 # The amount of time it took to complete the motion plan 22 float64 planning_time 23 24 --- 25 26 # The internal state that the move group action currently is in 27 string state Auflistung A.17: moveit_msgs/MoveGroup http://docs.ros.org/en/api/ moveit_msgs/html/action/MoveGroup.html 92 A.3. Code-Auflistung A.3.3 Eigener Code 1 private void Update() 2 { 3 // Get controller events 4 bool triggerChanged = CheckTriggers(); 5 6 Ray raycast = new Ray(transform.position, transform.forward); 7 RaycastHit hitInfo; 8 9 // Hit anything and reduce laser distance if we do 10 bool hit = Physics.Raycast(raycast, out hitInfo, maxDistance); 11 float laserDistance = maxDistance; 12 if (hit) 13 laserDistance = hitInfo.distance; 14 15 // Check if we hit a ’HapticVr_Target’ component 16 LaserTarget target = null; 17 if (hitInfo.collider != null) 18 target = hitInfo.collider.GetComponent(); 19 20 if (previousTarget && previousTarget != target) 21 { 22 previousTarget.Hover(hitInfo, false); 23 previousTarget = null; 24 } 25 26 if (hit && target != null) 27 { 28 if (previousTarget != target) 29 { 30 target.Hover(hitInfo, true); 31 previousTarget = target; 32 } 33 // Trigger release signal 34 if (triggerChanged && !triggered) 35 { 36 target.Activate(hitInfo); 37 } 38 } 39 40 pointer.GetComponent().material.color = 41 triggered ? triggerColor : color; 42 pointer.transform.localScale = new Vector3(thickness, 43 thickness, laserDistance); 44 pointer.transform.localPosition = new Vector3(0f, 0f, 45 laserDistance / 2f); 46 } Auflistung A.18: Die Updatefunktion des virtuellen Laserpointers in C#, der in Unity zur Auswahl des Haptikbereichs verwendet wird. Adaptiert von der Internetquelle [Stec]. 93 A. Anhang 1 # These calculations are taken from SteamVR and ROS-Sharp plugins for Unity. 2 # Note: Unity has a left-handed coordinate system with X and Z at the floor 3 # plane and Y pointing upwards, while ROS has a right handed coordinate 4 # system with X and Y at the floor plane and Z pointing upwards. 5 # (The calculations could be simplified by removing redundant sign changes.) 6 def openvr_matrix_to_values(m): 7 8 x = m[0][3] 9 y = m[1][3] 10 z = -m[2][3] 11 12 qx = qy = qz = 0 13 qw = 1 14 15 # rotation valid? 16 if (m[0][2] != 0 or m[1][2] != 0 or m[2][2] != 0) and 17 (m[0][1] != 0 or m[1][1] != 0 or m[2][1] != 0): 18 qw = math.sqrt(max(0, 1 + m[0][0] + m[1][1] + m[2][2])) / 2 19 qx = math.sqrt(max(0, 1 + m[0][0] - m[1][1] - m[2][2])) / 2 20 qy = math.sqrt(max(0, 1 - m[0][0] + m[1][1] - m[2][2])) / 2 21 qz = math.sqrt(max(0, 1 - m[0][0] - m[1][1] + m[2][2])) / 2 22 23 qx = math.copysign(qx, -m[2][1] - -m[1][2]) 24 qy = math.copysign(qy, -m[0][2] - -m[2][0]) 25 qz = math.copysign(qz, m[1][0] - m[0][1]) 26 27 return [z, -x, y, -qz, qx, -qy, qw] Auflistung A.19: Die erstellte Funktion zur Konvertierung von OpenVr- in ROS- Koordinaten, siehe Abschnitt 3.6 (Koordinatensysteme). Der Algorithmus wurde aus Fragmenten der Internetquellen [ope] und [Tra] kombiniert und in die Programmiersprache Python übersetzt. 94 Abbildungsverzeichnis 1.1 Vergleich zwischen Hand Controller und Spielwaffe. . . . . . . . . . . . . 2 1.2 Ausschnitt aus Insko et al. Passive Haptics [Ins01]. . . . . . . . . . . . . . 3 1.3 Haptisches Feedback in Videospielen. . . . . . . . . . . . . . . . . . . . . . 4 1.4 Pressefoto der HTC Vive Pro [viv] ©https://www.vive.com/. . . . . 5 1.5 Ein fertig aufgebauter RB-Kairos von Robotnik [roba]. . . . . . . . . . . . 7 2.1 Kommerzielle Produkte der TESLASUIT -Reihe. . . . . . . . . . . . . . . 13 2.2 TilePop [TLC+19]: In der Bodeninstallation befinden sich leere Luftkammern, die in drei verschieden große Blöcke aufgeblasen werden können, um so Treppen oder Sitzgelegenheiten zu simulieren. . . . . . . . . . . . . . . . . . . . . 14 2.3 Ausschnitt aus TurkDeck [CRR+15] von Cheng et al. Der Versuch verwen- det menschliche Helfer, um mittels tragbarer Requisiten eine virtuelle Welt dynamisch in der Realität nachzubilden. . . . . . . . . . . . . . . . . . . . 15 2.4 Beispiele von Haptiksimulationen durch mobile Roboter in raumgroßen Setups. 17 3.1 Komponenten der Vive Pro [viv]. . . . . . . . . . . . . . . . . . . . . . . . 20 3.2 Die von ROS zur Verfügung gestellte Launch-Datei teleop.launch [tel] zum Start einer Teleop-Node. Die Konfiguration kann durch Argumente und Parameter angepasst werden. . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3 Ausschnitt aus dem Visualisierungstool view_frames [vie]. Zu sehen ist ein Teil des Transform Trees des UR-10 . . . . . . . . . . . . . . . . . . . . . . 25 3.4 Auszug aus Han et al. [HCL+08]: Die Anordnung der Mecanum-Räder in einem omnidirektionalen mobilen Roboter. . . . . . . . . . . . . . . . . . . 27 3.5 Ausschnitt aus dem Visualisierungstool RVIZ . Zu sehen sind die Daten der Lidars anhand roter und blauer Punkte, die im Vorfeld aufgezeichnete Karte des Versuchsraums und drei Frames, die zur Positionsbestimmung des Roboters verwendet werden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.6 Pressefoto eines UR-10e. © Universal Robots [ur]. . . . . . . . . . . . . . . 29 3.7 Screenshot aus dem Setup Assistant von MoveIt. . . . . . . . . . . . . . . 30 4.1 Das Kommunikationsdiagramm der wichtigen Hard- und Softwarekomponen- ten des VR-Systems dieser Diplomarbeit. . . . . . . . . . . . . . . . . . . 34 5.1 Detailansicht der Hinterseite des RB-Kairos. Zu sehen sind unter anderem der hintere Vive-Tracker , das Display und der USB-Hub. . . . . . . . . . 42 95 5.2 Gesamtansicht des Roboters mit am Endeffektor angebrachter Wandattrappe (Haptikwand). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3 Polyscope, das User Interface des UR-10 . . . . . . . . . . . . . . . . . . . 45 5.4 Die dreidimensionale Beschreibung des Roboters. Ausschnitt aus RVIZ . . 46 5.5 Einrichtung der Transportstellung des UR-10 im Setup Assistant von MoveIt. 47 5.6 Ausschnitt aus dem UI von SteamVr mit erfassten Trackern, Lighthouses, Controller und Fehlermeldung. . . . . . . . . . . . . . . . . . . . . . . . . 48 5.7 Die Positionen der Vive-Tracker und Lighthouses im Visualisierungstool RVIZ . Im oberen Bildbereich sind die drei Lighthouses zu erkennen. Bei den unteren drei Markern handelt es sich um die zwei erfassten Tracker und dem daraus errechneten rbkairos_origin. . . . . . . . . . . . . . . . . . . . . . . . 50 5.8 Auschnitte aus RVIZ vor und nach der Kalibration des vive_origin- Frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.9 Screenshot aus dem Editor von Unity. . . . . . . . . . . . . . . . . . . . . 55 5.10 Die erstellte VR-Szene in Unity. Die Fläche links sowie die Würfel rechts können „aktiviert“ werden, um eine Haptiksimulation dieser Oberflächen zu veranlassen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.11 Übersicht der Frames des VR-Systems. . . . . . . . . . . . . . . . . . . . . 58 6.1 Der Testablauf während der Messung der Navigationsdauer. Der Roboter navigiert zwischen zwei gegenüberliegenden Ecken des Raums und umfährt dabei ein Hindernis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.2 Vergleich der Koordinaten in RVIZ bei der Kalibration und nach einigen Metern Roboterbewegung. . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.3 Auswertung von 33 Messungen eines einzelnen, unbeweglichen Trackers. Alle Angaben in Metern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 6.4 Die Hilfskonstruktion, mit der der Trackingbereich vermessen wurde. . . 69 6.5 Die Ermittlung der Genauigkeit des Trackingverfahrens durch Messung der Koordinaten in einem dreieckigen Raster mit einem Abstand von 1 m. Alle Angaben in Metern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 7.1 Das Robotic Shape Display von ShapeShift [SGY+17] erlaubt die dynamische Simulation von Oberflächen. . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.2 Der multifunktionale Endeffektor der HapticHydra [ASJR+19] bietet einen Greifarm, ein Gebläse, einen „Finger“ und eine Bürste. . . . . . . . . . . . 79 7.3 Der Versuchsaufbau Haptic Wrench. Der Druck gegen den Roboterarm wird vom Treiber des UR-10 erkannt und in Bewegungskommandos für das Fahr- werk umgerechnet. Der Roboter kann so per Hand weggeschoben werden. 79 96 Tabellenverzeichnis 3.1 Technische Spezifikationen und integrierte Hardware des RB-Kairos. . . . 22 3.2 Das verwendete Windows-System zur Ausführung der VR-Anwendung. . . . 31 3.3 Vergleich der Koordinatensysteme von Unity, OpenVr und ROS . . . . . . 32 97 Glossar Action Eine Aufgabendefinition, die vom ActionServer des Packages actionlib [act] ausgeführt werden kann. Definiert werden Goal, Result und Feedback. 36–38, 47, 88, 92 Adaptive Monte Carlo Localization Ein Verfahren zur Positionsbestimmung in Ro- botiksystemen, das Odometrie und Lidar-Daten heranzieht und mit einer zuvor auf- gezeichneten Karte vergleicht. Von ROS wird es durch das Package robot_localization [robb] zur Verfügung gestellt. 26, 35, 66, 105 Aktuator oder Aktor. Ein Bauteil, das (elektrische) Signale in mechanische Bewegung umsetzt. 12, 100 Augmented Reality Eine Computer-unterstütze Wahrnehmung der Realität. Im Unter- schied zu VR wird die Wahrnehmung des Benutzers nicht ersetzt, sondern erweitert (englisch: augmented). 9 Base-Footprint Der Ursprungspunkt des Roboters im Transform Tree von ROS . 24, 36, 49, 53, 56, 62 Controller Ein für Videospiele konzipiertes Eingabegerät, auch Gamepad genannt. 1–3, 10, 11, 19–21, 37, 38, 48, 54, 55, 62, 71, 72, 76, 95, 96, 103 Endeffektor Das letzte Glied in einer Kette von Robotergelenken (siehe Tool Center Point). 6, 11, 12, 15, 24, 29, 30, 44, 45, 53, 63, 73, 75, 77–79, 83, 96, 101, 103 Exoskelett Ein Robotikanzug, der die muskulare Bewegung des Trägers unterstützt oder, im Fall der Erzeugung von Haptik, behindert. 12 Force-Feedback Eine Technologie, die haptische Rückmeldung mit Ausübung von Kräften realisiert, zum Beispiel durch Vibrationsmotoren. 3, 10, 12, 13 Frame Im Kontext dieser Arbeit handelt es sich um einen Knoten eines hierarchisch aufgebauten Koordinatennetzwerks. Ein Frame kann beliebig viele Kindknoten besitzen, aber nur einen Elternknoten. Transformationen, die an einem Elternknoten angewendet werden, werden so gleichzeitg auch an die Kindknoten vererbt. 23–26, 28, 36, 46, 50–53, 56, 58, 59, 66, 74, 95, 96, 103 99 Framework Siehe Software Development Kit. ix, 6, 19, 21, 30, 37–39, 49, 75, 83, 101, 102 Freedrive Modus Die Manipulatoren der UR-10 Serie besitzen einen Modus, mit dem dessen Gelenke per Hand bewegt werden können. Dazu werden äußere Kraftein- wirkungen auf den Arm gemessen und in Bewegungskommandos für die Gelenke umgesetzt. 78 GPS Global Positioning System. Ein globales System zur Positionsbestimmung auf der Erde anhand von Satelliten. 26 Haptic Gloves Handschuhe, in die Aktuatoren integriert sind zur Einschränkung der Bewegungsfreiheit der Finger. 12 Haptikwand Eine Holzplatte der Größe 0, 01 × 0, 6 × 0, 6 m, die im Zuge dieser Arbeit zur haptischen Simulation von vergleichbaren Objekten dient, beziehungsweise ihr virtuelles Gegenstück. 38–46, 52–57, 59, 61–66, 70–73, 75, 78, 96 Head Mounted Display Ein am Kopf angebrachtes Display, umschließt typischerweise das Sichtfeld. 1, 100, 105 Headset Umgangssprachliche Bezeichnung für Head Mounted Display. ix, 1, 2, 5, 6, 19, 20, 38, 48, 54, 71, 76, 83, 85 Inertial Measurement Unit Deutsch: Inertiale Messeinheit: ist eine Kombination mehrerer Inertialsensoren, wie Beschleunigungssensoren und Drehratensensoren zur Bestimmung von Lage und Position im Raum. 21, 105 Kinematik Die Beschreibung von Objektbewegungen anhand geometrischer Faktoren wie Zeit, Ort und Geschwindigkeit. 30, 38, 46, 52 Lidar Abkürzung von LIght Detection And Ranging. Ein dem Radar ähnliches Verfah- ren zur Abstandsmessung, das Laserstrahlen statt Radiowellen verwendet. 21, 23, 26, 28, 35, 36, 52, 66, 74, 76, 95, 99 Lighthouse Ein von der Vive Pro eingesetztes Trackingsystem zum Erfassen von Ob- jekten im Raum. Lighthouse-Basisstationen senden in regulären Abständen Lase- rimpulse aus, die von Fotosensoren in den zugehörigen Trackern erfasst werden. Durch exaktes Timing und den Vergleich, welcher Sensor zu welcher Zeit welches Lasersignal empfangen hat, lässt sich seine Position in Relation zum Sender bestim- men. ix, xi, 5, 19, 20, 38, 39, 41, 42, 47–53, 56, 58, 61, 62, 65, 66, 68–71, 73, 74, 76, 83, 96, 103 Manipulator Bezeichnung für den mechanischen Teil eines Roboterarmes. 5, 19, 21, 30, 37, 41, 45, 52, 63, 64, 71, 78, 101, 103 100 Mecanum-Räder Eine spezielle Bauform von Rädern, die es dem Gefährt ermöglicht, seitlich zu fahren. An den Rädern sind kleinere Rollen im Winkel von 45° angebracht. 5, 21, 23, 25–28, 36, 37, 66, 75, 79, 83, 84, 95 Message Eine Typbeschreibung von Datennachrichten, die über Topics übertragen werden. In Abschnitt A.3 werden Messages, die in dieser Arbeit verwendet werden, gelistet. 22, 23, 35–37, 39, 49, 52, 56, 88, 102, 103 Mobiler Manipulator Ein Roboterarm (Manipulator), der auf einer mobilen Roboter- plattform angebracht ist, zum Beispiel RB-Kairos. ix, 5, 6, 19–21, 29, 33, 102 MoveGroup Eine Kette an Gelenken eines Manipulators, die gemeinsam die Freiheits- grade des Endeffektors bestimmen. Wird in ROS durch MoveIt festgelegt. 38, 46, 52, 53, 59 MoveIt Ein Motion Planning Framework zur Planung und Ausführung von Bewegungen durch Manipulatoren (https://moveit.ros.org). 30, 37, 38, 46, 47, 53, 62, 63, 75, 76, 79, 80, 95, 96, 101 Navigation Stack ROS Komponenten und Packages, die für die (örtliche) Lokalisation, Pfadplanung und Navigation eines mobilen Roboters zuständig sind. 26, 50, 53, 101 Node Ein Programm(-knoten) innerhalb der ROS Infrastruktur. 21–24, 33, 37, 43, 49, 52, 56, 58, 59, 62, 63, 76, 80, 95, 101–103 Odometrie Die Schätzung von Position und Orientierung eines mobilen Systems anhand der Daten seines Antriebs (Wegmessung). 25, 26, 35, 36, 50, 66, 70, 74, 99 Omnidirektionale Bewegungsplattform Ein Gerät, das, ähnlich einem Laufband, einem Benutzer oder einer Benutzerin Bewegungen in alle Richtungen ermöglicht, ohne das Gerät zu verlassen. (Englisch: Omnidirectional Treadmill). 14 OpenVr Framework für eine plattformunabhängige Entwicklung von VR Anwendungen, von Valve Corporation (https://github.com/ValveSoftware/openvr). 30– 32, 47–49, 87, 94, 97, 102 Package Eine Kapselung von ROS Nodes in thematisch ähnliche Bereiche, zum Beispiel Lokalisation, Navigation (Navigation Stack), Motorensteuerung, Datenvisualisie- rung, .... 23, 35–37, 99, 101, 102 Plugin Softwareerweiterung, um eine bestehende Software mit neuen Funktionen auszu- statten. Typischerweise wird dafür vom Hersteller ein Software Development Kit zur Verfügung gestellt. ix, 6, 28, 30, 31, 39, 52, 54, 56, 102 Polyscope Das User Interface des UR-10 . 45, 76, 96 101 Publisher Ein Softwarekonstrukt innerhalb einer ROS Node, das Messages von einem bestimmten Topic ausliest. 21, 37, 56 Python Eine von ROS unterstützte Programmiersprache. Die am RB-Kairos installierte ROS-Version unterstützt Python ausschließlich in der Version 2.7 (https://www. python.org). Siehe auch die Ankündigung des Supportendes von Python 2.7 mit 1. Januar 2020 [pyt]. 49, 77, 85, 87, 94 Raycasting Ein Verfahren der Computergrafik, um den Schnittpunk einer Linie mit geometrischen Objekten zu bestimmen. 39, 55 RB-Kairos Der in dieser Arbeit verwendete mobile Manipulator (https://robotnik. eu/products/mobile-manipulators/rb-kairos-en). ix, xi, 5–7, 19–23, 26–29, 33, 35–43, 45–50, 52–54, 56, 58, 59, 62–67, 70, 74–77, 83, 85–87, 95, 97, 101, 102 Robot Operating System Eine Sammlung an Frameworks zur Entwicklung von Ro- botern. Verwendete Version: Kinetic Kame (http://wiki.ros.org/kinetic). ix, xi, 6, 8, 19, 21, 83, 84, 105 Robotic Shape Display Ein haptisches Display, das sich mechanischer Komponenten bedient, um Oberflächenstrukturen zu simulieren. 12, 14, 16, 77, 78, 84, 96 rosbridge Eine auf JSON basierende Webschnittstelle, die den Zugang zum ROS- Protokoll für inkompatible Systeme ermöglicht. 31, 35, 39, 43, 56, 59 roscore Der Kernknoten von ROS , der die Verwaltung der Nodes und deren Kommuni- kation untereinander verwaltet. 22, 33, 35, 43 RVIZ Daten-Visualisierungs-Tool von ROS (http://wiki.ros.org/rviz). 28, 43, 46, 50–52, 67, 95, 96 Simultaneous Localization And Mapping Ein Navigationsverfahren, das es einem Robotiksystem erlaubt, gleichzeitig die Karte seiner Umgebung zu erstellen und um Hindernisse herum zu navigieren. Von ROS wird es durch das Package gmapping [gma] zur Verfügung gestellt. 36, 105 Software Development Kit Ein Grundgerüst für die Entwicklung von Software oder Plugins. Synonym: Framework. 31, 100, 101, 105 Steam Online Vertriebsplattform für Computerspiele, Software, etc. von Valve Corpo- ration Corporation, (https://store.steampowered.com). 31, 48, 54, 74, 86, 102, 103 SteamVr Laufzeitumgebung von OpenVr in Steam, (https://store.steampowered. com/app/250820/SteamVR). 30, 31, 39, 42, 47–49, 54, 58, 59, 74, 76, 85, 86, 96 102 Subscriber Ein Softwarekonstrukt innerhalb einer ROS Node, das Messages unter einem bestimmten Topic veröffentlicht. 21, 23, 52, 56, 63 Teleop Kurzform von Teleoperation. Es handelt sich dabei um die Steuerung eines Systems aus der Ferne. 23, 24, 37, 95 Tool Center Point Die Stelle an einem Roboterarm, an dem Werkzeuge (Tools) ange- bracht werden können. Auch Endeffektor genannt. 38, 99, 105 Topic Ein einer URL ähnlicher Datenpfad, unter dem Messages in ROS veröffentlicht werden. 21–23, 36, 37, 43, 49, 52–54, 59, 63, 78, 88, 92, 101–103 Tracker Ein Zusatzgerät der Vive Pro, dessen Position im Raum unter Zuhilfenahme von Lighthouses erfasst werden kann. 5, 6, 19, 20, 39, 41, 42, 47–50, 58, 59, 62, 66, 68, 69, 73, 74, 76, 95, 96, 100 Transform Tree Die hierarchische Verwaltung der ROS Frames (http://wiki.ros. org/tf2). 23–25, 36, 46, 50, 52, 53, 56, 74, 95, 99 Trigger Ein spezieller Button auf einem Controller . Er ähnelt einem Fingerabzug und liefert analoge Werte, je nach Intensität seiner Betätigung. 2, 55, 62, 63, 71 Unity Eine Laufzeit- und Entwicklungsumgebung für Spiele (Spiel-Engine) (https: //unity.com). ix, xi, 6, 19, 30–32, 39, 54–57, 59, 62, 63, 83, 93, 96, 97 UR-10 Ein Roboterarm (Manipulator) der Firma Universal Robots [ur] (https:// www.universal-robots.com/de/produkte/ur10-roboter). 5, 6, 19, 21, 23–25, 28, 29, 35, 37, 38, 42, 43, 45–47, 52, 53, 58, 59, 62–66, 70, 75–80, 83, 84, 87, 95, 96, 100, 101 URScript Die Scriptsprache der Manipulatoren von Universal Robots. 29, 79, 80 Valve Corporation Ein Softwareentwickler und -händler, der durch seine Online- Vertriebsplattform Steam bekannt ist (https://www.valvesoftware.com). 30, 101, 102 virtuelle Realität Eine in Echtzeit Computer-generierte, interaktive Realität bezie- hungsweise ihre Wahrnehmung durch einen Benutzer. ix, 1–3, 8, 30, 48, 71, 80, 83, 105 virtuelle Umgebung Die durch ein VR-System simulierte Welt. (Englisch: Virtual Environment). 1, 2, 6, 39, 71–73, 105 Vive HTC Vive Pro [viv]. Das in dieser Arbeit verwendete VR-System. ix, xi, 1, 2, 5, 6, 10, 19, 20, 33, 38, 39, 41, 42, 47, 49, 50, 52–55, 58, 59, 61–63, 66, 68, 71, 74, 75, 83, 95, 96, 100, 103 103 Wearables Am Körper getragene Computer oder Computerperipherie. Im Zuge dieser Arbeit werden Ganzkörperanzüge erwähnt, die haptisches Feedback oder Bewe- gungsdaten liefern. 11 Xacro Kurzform von XML-Macro und Dateiformat, das auf Extensible Markup Language (XML) basiert. ROS verwendet diese Macro-Sprache zur Beschreibung des Roboter- aufbaus. Dateien dieses Typs enthalten geometrische Daten und eine hierarchische Beschreibung ihrer Relationen, zum Beispiel Gelenksdefinitionen. 45 104 Akronyme AMCL Adaptive Monte Carlo Localization. 26, 35, 66, Glossar: Adaptive Monte Carlo Localization HMD Head Mounted Display. 1, 5, 6, 20, 48, 54, 71, 86, Glossar: Head Mounted Display IMU Inertial Measurement Unit. 21, 26, 35, 68, Glossar: Inertial Measurement Unit JSON JavaScript Object Notation. 31, 35, 102 ROS Robot Operating System. ix, xi, 6, 8, 21–24, 26, 28–32, 35–41, 43, 45, 46, 49, 52, 56, 58, 59, 74, 76–80, 85, 87, 88, 94, 95, 97, 99, 101–104, Glossar: Robot Operating System SDK Software Development Kit. 31, 47, 87, Glossar: Software Development Kit SLAM Simultaneous Localization And Mapping. 36, 52, 64, Glossar: Simultaneous Localization And Mapping TCP Tool Center Point. 38, 39, 43, 45, 79, Glossar: Tool Center Point URL Uniform Resource Locator. 22, 103 VE Virtual Environment. 6, Glossar: virtuelle Umgebung VR Virtuelle Realität. ix, 1–6, 8–11, 15–17, 19, 20, 30, 31, 33, 34, 38–41, 47, 48, 53, 54, 56–59, 61, 62, 65, 71–76, 80, 83–85, 95–97, 99, 101, 103, Glossar: virtuelle Realität XML Extensible Markup Language. 104 105 Literaturverzeichnis [act] ROS actionlib package. URL: http://wiki.ros.org/actionlib (auf- gerufen am 25.02.2021). [ALY+19] Parastoo Abtahi, Benoit Landry, Jackie (Junrui) Yang, Marco Pavone, Sean Follmer, and James A. Landay. Beyond the force: Using quadcopters to appropriate objects and the environment for haptics in virtual reality. In Proceedings of the 2019 CHI Conference on Human Factors in Computing Systems, CHI ’19, page 1–13, New York, NY, USA, 2019. Association for Computing Machinery. [AQwm18] Daniel Arnett, David Qiu, wtabib, and mswenson17. Anleitung zum Be- trieb von SteamVR unter Ubuntu, 04 2018. URL: https://github.com/ moon-wreckers/vive_tracker (aufgerufen am 24.08.2020). [ASJR+19] Mohammed Al-Sada, Keren Jiang, Shubhankar Ranade, Mohammed Kal- kattawi, and Tatsuo Nakajima. Hapticsnakes: multi-haptic feedback wearable robots for immersive virtual reality. Virtual Reality, 09 2019. [BSC+18] Miguel Borges, Andrew Symington, Brian Coltin, Trey Smith, and Rodrigo Ventura. Htc vive: Analysis and accuracy improvement. pages 2610–2615, 10 2018. [CRR+15] Lung-Pan Cheng, Thijs Roumen, Hannes Rantzsch, Sven Köhler, Patrick Schmidt, Robert Kovacs, Johannes Jaspers, Jonas Kemper, and Patrick Baudisch. Turkdeck: Physical virtual reality based on people prop-based virtual reality; passive virtual reality. 11 2015. [DFBT99] Frank Dellaert, Dieter Fox, Wolfram Burgard, and Sebastian Thrun. Monte carlo localization for mobile robots. volume 2, pages 1322 – 1328 vol.2, 02 1999. [gma] ROS gmapping package. URL: http://wiki.ros.org/gmapping (auf- gerufen am 25.02.2021). [God18] Tom Goddard. SteamVR on Linux, 10 2018. URL: https://www.cgl. ucsf.edu/chimera/data/linux-vr-oct2018/linuxvr.html (auf- gerufen am 27.08.2020). 107 [gta] Grand Theft Auto V official website. URL: https://www. rockstargames.com/V/ (aufgerufen am 12.04.2021). [HCL+08] Kyung-Lyong Han, Oh-Kyu Choi, In Lee, Inwook Hwang, Jin Lee, and Seungmoon Choi. Design and control of omni-directional mobile robot for mobile haptic interface. pages 1290 – 1295, 11 2008. [HW16] Anuruddha Hettiarachchi and Daniel Wigdor. Annexing reality: Enabling opportunistic use of everyday objects as tangible proxies in augmented reality. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems, CHI ’16, page 1957–1967, New York, NY, USA, 2016. Association for Computing Machinery. [ind] Valve Index. URL: https://www.valvesoftware.com/en/index/ headset (aufgerufen am 05.10.2020). [Ins01] Brent Edward Insko. Passive Haptics Significantly Enhances Virtual Envi- ronments. PhD thesis, 2001. AAI3007820. [iS] id Software. DOOM VFR. URL: https://store.steampowered.com/ app/650000/DOOM_VFR/ (aufgerufen am 05.10.2020). [KHM+16] Yukari Konishi, Nobuhisa Hanamitsu, Kouta Minamizawa, Ayahiko Sato, and Tetsuya Mizuguchi. Synesthesia suit: the full body immersive experience. pages 1–1, 07 2016. [LPYS04] Robert W. Lindeman, Robert Page, Yasuyuki Yanagida, and John L. Sibert. Towards full-body haptic feedback: The design and deployment of a spatialized vibrotactile feedback system. In Proceedings of the ACM Symposium on Virtual Reality Software and Technology, VRST ’04, page 146–149, New York, NY, USA, 2004. Association for Computing Machinery. [Ltda] VR Electronics Ltd. Tesla Suit. URL: https://teslasuit.io/ the-suit (aufgerufen am 28.09.2020). [Ltdb] VR Electronics Ltd. Tesla Suit Gloves. URL: https://teslasuit.io/ blog/teslasuit-introduces-its-brand-new-vr-gloves/ (auf- gerufen am 23.10.2020). [mova] MoveGroupCommander. URL: http://docs.ros.org/en/api/ moveit_commander/html/classmoveit__commander_1_1move_ _group_1_1MoveGroupCommander.html (aufgerufen am 24.02.2021). [movb] ROS move_base package. URL: http://wiki.ros.org/move_base (aufgerufen am 25.02.2021). 108 [NTAS15] Kazuki Nagai, Soma Tanoue, Katsuhito Akahane, and Makoto Sato. Wearable 6-dof wrist haptic device ßpidar-w". In SIGGRAPH Asia 2015 Haptic Media And Contents Design, SA ’15, New York, NY, USA, 2015. Association for Computing Machinery. [ope] openvr_api.cs. URL: https://github.com/ ValveSoftware/steamvr_unity_plugin/blob/ 29aa1ebe985f69a5dd455a02e52c13c85a6b5240/Assets/ SteamVR/Plugins/openvr_api.cs#L5017 (aufgerufen am 27.02.2021). [pix] Pixhawk 4 IMU. URL: https://docs.px4.io/master/en/flight_ controller/pixhawk4.html (aufgerufen am 25.02.2021). [pla] PlayStation. URL: https://www.playstation.com/ (aufgerufen am 14.11.2020). [PVP18] Jérôme Perret and Emmanuel Vander Poorten. Touching virtual reality: a review of haptic gloves. 06 2018. [PVS+16] Iana Podkosova, Khrystyna Vasylevska, Christian Schönauer, Emanuel Vo- nach, Peter Fikar, Elisabeth Bronederk, and Hannes Kaufmann. Immersive- deck: a large-scale wireless vr system for multiple users. In 2016 IEEE 9th Workshop on Software Engineering and Architectures for Realtime Interactive Systems (SEARIS), pages 1–7, 03 2016. [pyo] Python OpenVr Wrapper. URL: https://github.com/cmbruns/ pyopenvr (aufgerufen am 20.11.2020). [pyt] Python 2 Sunset. URL: https://www.python.org/doc/ sunset-python-2/ (aufgerufen am 20.11.2020). [rif] Oculus Rift. URL: https://www.oculus.com/rift/ (aufgerufen am 05.10.2020). [roba] Robotnik. URL: https://robotnik.eu/ (aufgerufen am 14.11.2020). [robb] ROS robot_localization package. URL: http://wiki.ros.org/robot_ localization (aufgerufen am 25.02.2021). [rosa] Robot Operating System Dokumentation. URL: http://docs.ros.org (aufgerufen am 24.02.2021). [rosb] ROS Sharp Plugin. URL: https://assetstore.unity.com/ packages/tools/physics/ros-107085 (aufgerufen am 16.11.2020). [see] Mixed Reality Training für Einsatzkräfte mit einem Video See-Through Head-Mounted Display. URL: https://publik.tuwien.ac.at/files/ publik_283461.pdf (aufgerufen am 12.12.2020). 109 [SGY+17] Alexa Siu, Eric Gonzalez, Shenli Yuan, Jason Ginsberg, Allen Zhao, and Sean Follmer. shapeshift: A mobile tabletop shape display for tangible and haptic interaction. pages 77–79, 10 2017. [SHZ+20] Ryo Suzuki, Hooman Hedayati, Clement Zheng, James Bohn, Daniel Szafir, Ellen Do, Mark Gross, and Daniel Leithinger. Roomshift: Room-scale dynamic haptics for vr with furniture-moving swarm robots. pages 1–11, 04 2020. [sic] SICK S300 Lidar. URL: https://www.sick.com/ at/de/optoelektronische-schutzeinrichtungen/ sicherheits-laserscanner/s300-standard/c/g187239 (auf- gerufen am 25.02.2021). [stea] SteamVR for Enterprise / Government Use. URL: https://partner. steamgames.com/doc/features/steamvr/enterprise (aufgerufen am 09.01.2021). [steb] SteamVR Plugin. URL: https://assetstore.unity.com/packages/ tools/integration/steamvr-plugin-32647 (aufgerufen am 16.11.2020). [Stec] SteamVR_LaserPointer.cs. URL: https://github.com/wacki/ Unity-VRInputModule/blob/master/Assets/SteamVR/Extras/ SteamVR_LaserPointer.cs (aufgerufen am 27.02.2021). [tel] teleop.launch. URL: https://github.com/ros-teleop/teleop_ twist_joy/blob/indigo-devel/launch/teleop.launch (aufgeru- fen am 28.02.2021). [TLC+19] Shan-Yuan Teng, Cheng-Lung Lin, Chi-huan Chiang, Tzu-Sheng Kuo, Liwei Chan, Da-Yuan Huang, and Bing-Yu Chen. Tilepop: Tile-type pop-up prop for virtual reality. In Proceedings of the 32nd Annual ACM Symposium on User Interface Software and Technology, UIST ’19, page 639–649, New York, NY, USA, 2019. Association for Computing Machinery. [Tra] TransformExtensions.cs. URL: https:// github.com/siemens/ros-sharp/blob/ f3f6b542392ed7d44342f2070c3c2890b0c5944c/Unity3D/ Assets/RosSharp/Scripts/Extensions/TransformExtensions. cs#L91 (aufgerufen am 27.02.2021). [twi] ROS twist_mux package. URL: http://wiki.ros.org/twist_mux (auf- gerufen am 25.02.2021). [unia] Unity. URL: https://unity.com/de (aufgerufen am 14.11.2020). [unib] Unity Asset Store. URL: https://assetstore.unity.com/ (aufgerufen am 14.11.2020). 110 [ur] Universal Robots. URL: https://www.universal-robots.com/ (auf- gerufen am 14.11.2020). [ur1] UR10 Technical specifications. URL: https://s3-eu-west-1. amazonaws.com/ur-support-site/50380/UR10_User_Manual_ en_Global.pdf (aufgerufen am 12.01.2021). [VGK17] Emanuel Vonach, Clemens Gatterer, and Hannes Kaufmann. Vrrobot: Robot actuated props in an infinite virtual environment. In Proceedings of IEEE Virtual Reality 2017, pages 74–83. IEEE, 2017. talk: IEEE Virtual Reality 2017, Los Angeles, CA, USA; 2017-03-18 – 2017-03-22. [vie] view_frames. URL: http://wiki.ros.org/tf#view_frames (aufge- rufen am 12.04.2021). [viv] HTC Vive. URL: https://www.vive.com/ (aufgerufen am 05.10.2020). [Wen] Reid Wender. SteamVR Tracking without an HMD. URL: http://help.triadsemi.com/en/articles/ 836917-steamvr-tracking-without-an-hmd (aufgerufen am 24.08.2020). 111