Augmented & Mixed Reality

Die Macht ist mit dir: Autonome Bots steuern mit HoloLens und Myo

Wie Darth Vader Gegenstände mit bloßem Fingerzeigen von A nach B bewegen und dazu noch einen coolen Kopfputz tragen – das ist genau das richtige Projekt für das Zühlke Camp, dachten wir uns. Mangels „echter“ Machtbegabung mussten wir auf ein paar Hilfsmittel zurückgreifen: Neben der Microsoft HoloLens waren das ein Myo-Gestensteuerungs-Armband und ein TurtleBot. Nach drei intensiven Tagen konnten wir das Ergebnis präsentieren – und uns tatsächlich ein wenig wie die Jedis fühlen (bzw. ehemalige Jedi).

Doch zurück zum Anfang: In der Mixed Reality auf der Microsoft HoloLens hat sich die Steuerung mit der Air-Tap-Geste und der Blickrichtung des Nutzers mittlerweile als Standard für die Interaktion mit Apps bewährt. Wird der Air-Tap geschlossen gehalten, können Objekte bewegt werden, indem der Nutzer den Kopf bewegt oder indem er sie mit der Hand „zieht“ – auch in der Tiefe. Leider hat dieses Interaktionsschema seine Grenzen: Bewegt sich die Hand aus dem Sichtfeld der HoloLens, kann die Bewegung nicht mehr verfolgt werden. Außerdem kann die Lens nur erfassen, wo sich die Hand befindet, aber nicht wie sie ausgerichtet ist. Und nicht zuletzt ist eine einzige Geste für die Steuerung in manchen Fällen nicht ausreichend.

Ein Armband für die Augmented Reality

Hier kommt Myo ins Spiel, das Gestensteuerungs-Armband von Thalmic Labs! Das Band wird am Unterarm getragen und kann die Bewegung des Arms verfolgen, unabhängig davon, wohin er sich bewegt. Es erfasst außerdem die Bewegung der Finger durch myoelektrische Sensoren und erkennt so bis zu fünf verschiedene Gesten. Mittels seiner Bluetooth-Low-Energy-Schnittstelle kann sich das Band außerdem mit einer Vielzahl von Geräten verbinden.

Auf dem diesjährigen Zühlke Camp haben wir eine Reihe von Augmented-Reality-Experimenten durchgeführt, darunter einen kleinen Showcase, in dem die Bewegung eines TurtleBot  von der HoloLens aus mittels eines Myo gesteuert werden sollte. Die Idee war, nicht einfach mittels der Handgesten die Drehung und die Bewegung vor und zurück vorzugeben, sondern auf eine Stelle auf dem Boden zu zeigen und den Bot automatisch – wie von Zauberhand – dorthin zu führen.

Interaktion mit Myo

Zunächst mussten wir die Verbindung zwischen HoloLens und Myo herstellen. Die aktuelle Release-Version von Windows 10 auf der HoloLens bietet noch immer keine stabile Unterstützung für Bluetooth Low Energy. Das RS4 Preview Release hingegen funktioniert hier einwandfrei: BLE-Geräte werden entdeckt und verbunden. Der Zugriff auf alle GATT-Characteristics funktioniert ohne Einschränkungen. Die Dokumentation der BLE-Schnittstelle des Myo ist in Form eines C++ Headers auf GitHub verfügbar. Mit diesem Header und dem Code aus dem Myo-Beispielprojekt für Unity konnten wir einen Wrapper um die BLE-Schnittstelle entwickeln, um sehr einfach die Verbindung zu einem gepaarten Myo herzustellen und alle seine Funktionen auf der HoloLens zu nutzen.

Das am einfachsten zu nutzende Feature des Myo waren Handgesten. Die BLE-Schnittstelle sendet jedes Mal eine GATT-Indication, wenn eine der fünf Myo-Gesten erkannt wird.

Gestensteuerung à la „Minority Report“

Das Tracking der Arm-Ausrichtung hat sich als sehr schnell, präzise und stabil erwiesen, wodurch wir die Ausrichtung des Arms in Echtzeit auf ein Objekt in unserer App abbilden konnten. Dies war sehr einfach zu bewerkstelligen: Die BLE-Schnittstelle sendet regelmäßige GATT-Indications, die die aktuelle Rotation enthalten, welche direkt auf ein Objekt in der Szene übertragen werden kann. Wir mussten lediglich sicherstellen, dass die initial erkannte Ausrichtung mit der Ausrichtung im Koordinatensystem der App übereinstimmt. Zu diesem Zweck musste der Nutzer nur mit seinem Arm in eine vorgegebene Richtung zeigen und mit einer Geste bestätigen.

Am schwersten zu nutzen war der Beschleunigungssensor des Myo. Das Armband sendet regelmäßig Beschleunigungswerte auf allen drei Achsen, allerdings muss die App noch die Erdanziehung sowie potenzielle Kalibrierungsfehler herausrechnen. Dadurch war es sehr schwierig, die absolute Position des Myo im Raum zu verfolgen. Unsere Schlussfolgerung war daher, dass es mehr Sinn ergibt, mittels der Beschleunigungswerte Armbewegungsmuster zu erkennen, um diese als Gesten zusätzlich zu den Handgesten zu nutzen. Auch wenn wir dieses Feature für unseren Showcase schlussendlich nicht genutzt haben, kann man sich leicht vorstellen, wie damit eine coole Gestensteuerung im Stil von „Minority Report“ implementiert werden kann.

Nur eine Sache bereitete uns bei der Implementierung etwas Kopfzerbrechen: Manche der Myo-Gesten werden auch von der HoloLens als Gesten erfasst. Beispielsweise löst die „Finger spreizen“-Geste regelmäßig die „Bloom“-Geste auf der HoloLens aus, wodurch die App geschlossen wurde. Dies macht sich besonders stark bemerkbar mit dem RS4-Preview, da die HoloLens mit dieser Version von Windows 10 sehr viel sensibler auf Gesten reagiert. Wir mussten uns daher sehr gut überlegen, welche Gesten wir in welchen Situationen „gefahrlos“ nutzen konnten.

Steuerung des TurtleBot

Nachdem wir nun die Myo-Bewegungseingaben auf der HoloLens angebunden hatten, war der nächste Schritt die Navigation des Bots zu einer markierten Stelle auf dem Boden. Unsere erste Überlegung war, die räumliche Wahrnehmung des TurtleBot zu nutzen, um die Navigationsroutinen direkt auf dem Bot zu implementieren. Aufgrund des kurzen Zeitraums für die Implementierung (wir hatten nur drei Tage) haben wir uns aber dafür entschieden, die Navigationsroutinen auf der HoloLens umzusetzen.

Um die Position des Bots im Raum zu erkennen, haben wir kurzerhand einen visuellen Marker auf das obere Deck des Bots geklebt. Indem wir die Position und Ausrichtung dieses Markers verfolgten, konnten wir die entsprechenden Bewegungsbefehle an den Bot berechnen, um ihn zum Ziel zu führen.

Der TurtleBot nutzt als Kommunikationsprotokoll MQTT. Der Endpoint kann sowohl von Komponenten auf dem Bot angesprochen werden also auch von Geräten im selben W-LAN, wie z.B. von der HoloLens. Auf die Topics der MQTT-Schnittstelle kann lesend oder schreibend zugegriffen werden. Die MQTT-Topics sind verknüpft mit Topics in ROS, mit welchem der Bot betrieben wird. Die ROS-Topics wiederum können verwendet werden, um die verschiedenen Features des Bots anzusteuern. Auf der HoloLens haben wir mittels der uPLibrary einen MQTT-Client implementiert, um die Fahrgeschwindigkeit und Drehgeschwindigkeit des Bots zu steuern.

In Kombination mit der Bot-Position, die wir über den Marker verfolgen konnten, implementierten wir einen einfachen Navigationsmechanismus, mit dem der Bot immer zu der Stelle fuhr, zu der unser Arm zeigte. Natürlich war es etwas umständlich, den Bot immer im Blickfeld der HoloLens-Kamera behalten zu müssen – aber es hat funktioniert! Für einen Implementierungszeitraum von nur drei Tagen für vier Entwickler in unserem Team war das ein großartiges Ergebnis. Davon abgesehen hat es uns unheimlich Spaß gemacht, den Showcase aus seinen verschiedenen Teilen zusammenwachsen zu sehen.

Die Zukunft

Was wir erreicht haben war natürlich toll. Am wichtigsten für uns war aber das, was wir dabei gelernt haben: Die Fähigkeiten, die man mit einem Myo in der Hand hält, sind viel umfassender, als wir ursprünglich dachten. Die Kombination aus den verschiedenen Gesten mit dem stabilen und präzisen Arm-Tracking eröffnet eine Vielzahl von Möglichkeiten im Zusammenspiel mit der Mixed Reality. Das wurde uns besonders klar, als wir unsere Ergebnisse den Kollegen zeigten und mit ihnen über den Showcase und die verwendete Hardware ins Gespräch kamen. Hier entstanden viele verschiedene Ideen für Myo im Kontext mit anderen Projekte bei Zühlke und auch Ideen für komplett neue Ansätze. Außerdem führte die Aussicht auf die Verwendung zweier Myos an beiden Armen zu vielen fantastischen Gedanken, wohin die Möglichkeiten noch führen könnten. Somit war es absolut klar, dass wir die Verknüpfung zwischen HoloLens und Myo weiter ausbauen und nutzen werden!

Das gleiche gilt für den TurtleBot: Die Plattform bietet so viele Möglichkeiten und Schnittstellen, dass sie für unzählige Experimente und Szenarien genutzt werden kann, innerhalb und außerhalb der Mixed Reality. Ein Beispiel ist die extensivere Nutzung der Sensorik: Ein TurtleBot könnte automatisch einen Raum ausmessen und seine Geometrie abbilden, diese an eine HoloLens schicken, bevor diese den Raum betritt, und anschließend autonom Aufgaben ausführen, die der HoloLens-Träger vorgibt.

Wir können es gar nicht abwarten, uns an weitere Experimente zu machen! Mit einer cleveren Kombination aus solchen Werkzeugen fühlt man sich, als hält man „die Macht“ in den Händen!

Lead Engineer

Michael Sattler

Kommentare (0)

×

Updates

Schreiben Sie sich jetzt ein für unsere zwei-wöchentlichen Updates per E-Mail.

This field is required
This field is required
This field is required

Mich interessiert

Select at least one category
You were signed up successfully.