Autoren: Prof. Adrian Müller, Thomas Schmidt
Smart-Machines::DroneControl
3D Gesten für einen Crazyflie 2.0 Flugassistenten
Inhalt
Gestenerkennung für die Flugsteuerung?
Im Vergleich zu fahrenden Robotern oder Robotergelenkarmen erfordert die Steuerung einer Flugdrohne (CrazyFlie 2.0) eine viel höhere Konzentration des Piloten. Er muss die Fluglage steuern, Korrekturen vornehmen und eine Strategie für das Erreichen des Zielpunktes wählen. Dabei soll ihn eine innovative 3D Gestenerkennung unterstützen.
Der einfache Ansatz zur Gestenerkennung hier am Beispiel eines visuellen, Leap Motion basierten Controllers (s. Abb. 1, s. Video dazu) basiert auf einem analogen Prinzip. Die Neigungswinkel der Hand werden gemessen und steuern direkt die Fluglage der Drohne. Damit hat der Pilot die maximale Kontrolle über die Drohne, muss aber umgekehrt alle Steuerungsprobleme (Schlupf, Turbulenzen, Kollisionen) selbsttätig und vorausschauend ausgleichen.
Entwickelt man hingegen eine symbolische Gestensprache (bspw. „90° Kurve nach rechts“, „landen“ „stop“) für die Hand des Piloten kann die on-board Steuerung der Drohne diese in Impulse für die Rotoren umsetzen, und auftretende Steuerungsprobleme in Millisekunden ausgleichen (on-board PID Algorithmus, Kalman Filter). Der Pilot kann sich stattdessen auf die Planung komplexerer Flugmanöver und die Zielerreichung konzentrieren, und seinen Plan fortlaufend in weiteren Gesten ausdrücken. Mehr dazu im Abschnitt zur Projektarbeit unten.
Dieser Ansatz lässt sich später weiter entwickeln, z. Bsp. im Hackathon #2 (Feb. 2019), oder als Bachelor Thesis:
- Hidden-Markov Modell für antizipierende, schnelle Gestenerkennung (auch anwendbar für Roboterarm Steuerung in definierter Laborumgebung, mit wenig dynamischen Faktoren).
- A* Algorithmus oder ein anderer Planungsalgorithmus für einen intelligenten Autopiloten
3D Gestenerkennung für Smarte Maschinen
Dieses Projekt ist Teil eines größeren Programms zur intelligenten Steuerung von Maschinen. Die Beschreibung und der Zeitplan des Programms finden Sie hier.
Projektarbeit WS 18/19
Konzeption einer intelligenten 3D gesten-basierten Steuerung
Je nach Teamgröße (2-6 Personen) und Vorwissen wird der Schwerpunkt des Projektes auf der Entwicklung eines intelligent „flight assistant“ und/oder dem Design und der Evaluierung einer intuitiven Gesten-Sprache liegen.
- Intuitiv vermittelbare Gesten sind zu definieren für eine direkte Steuerung in unterschiedlichen Fluglagen und „Missionen“ („langsam vorwärts“ „landen“, „gehe drei Längen nach vorne). Die Umsetzung erfolgt durch eine „intelligente“ Gestenerkennung (Bsp. Erkennung von Zittern der Hand, optimierte Schwellwerte für jede Geste). Evaluierung und Optimierung durch Testflüge und –Probanden.
- HCI: Rückkanal Drohne-an-Tactigon, bzw. CrazyFlie Client-an-Pilot für „Verstanden“, „Kollision“, „Bodenerkennung“, „maximaler Schub“, „Batteriewarnung“ etc. – akustisch, optisch
- Komplexeres Anwendungsbeispiel: Ziel ist das „pick and place“ einer Last, durch einen Raum (eine Halle) voller Engpässe, und das Absetzen an einem definierten Punkt. Die Umsetzung erfolgt durch eine einmalige, gesten-basierte Darstellung möglicher Flugbahnen in diesem Raum; danach sind halbautomatische Flüge entlang dieser Bahnen möglich.
Das 2.4GHz basierte Ortungssystem der Crazyflie liefert eine Ortsbestimmung im Raum auf einige Zentimeter genau. Auf Basis dieser Auflösung lässt sich ein Raum als gefüllt mit „virtuellen Raum-Kuben“ mit bspw. 10cm Kantenlänge ansehen. Nun gilt es, eine 3D Gestensteuerung für diesen Raum zu entwickeln:
- Schritt 1: Spezifische Gesten zum „teach-in“ durch das Tactigon definieren und implementieren. Wichtige Raum-Kuben werden durch einen erfahrenen Piloten beim Abfliegen markiert („way points“ setzen), z. Bsp. um Landepunkte zu markieren, Abzweigungen zu definieren, eine Position zu kalibrieren, …
- Schritt 2: Spezifische, intuitiv vermittelbare Gesten entwickeln, um in diesem Raum zu navigieren, bspw. „snap-in“ auf den nächsten vorhandenen Kubus, und auch Sequenzen wie „gehe drei Kuben nach vorne, biege dann rechts ab“ usw.
- Schritt 3 ist der semi-automatische Betrieb („flight assistant“), nun ist „pick and place“ einer Last auch für ungeübte Piloten möglich: Kontrolle der Drohne über Gesten wie „OK, flieg weiter“, „biege an der nächsten Kreuzung rechts ab“ (um auf Abweichungen und Störungen zu reagieren), manuelle Umgehungen bei unerwartet auftretenden Hindernissen, usw.
Am Ende soll eine einfache Nutzung der Drohne für unterschiedlich erfahrene Piloten möglich sein. Da die Entwicklung von Abläufen später auch durch Laien erfolgen soll, ist die Implementierung einer Gestenerkennung ein integraler Projektbestandteil. Dazu steht dem Projekt ein innovativer 3D-Gestenerkenner (s. thetactigon.com) und dessen Ortungssystem zur Verfügung.
Wir bieten ein spannendes Thema in einem stark interdisziplinär ausgerichteten Arbeitsumfeld, sowie ein starkes Betreuerteam. Hilfestellung zur Programmierung übernimmt Prof. Adrian Müller, und Thomas Schmidt (CrazyFlie Pilot) für Fragen zur Programmierung des CrazyFlie Clients.
Verwendete Technologien:
- The Tactigon (Arduino-basiertes Board zur Gestenerkennung von Next Industries, https://www.thetactigon.com)
- Crazyflie 2.0 (Quadcopter von Bitcraze, https://www.bitcraze.io/crazyflie-2/)
- Loco positioning system (für Crazyflie, https://www.bitcraze.io/loco-pos-system/)
- Z-ranger expansion deck (Modul zur Entfernungsmessung bis 2 Meter für Crazyflie, https://wiki.bitcraze.io/projects:crazyflie2:expansionboards:zranger)
- VM mit Entwicklungsumgebung für Crazyflie (https://github.com/bitcraze/bitcraze-vm/releases/)
- Programmiersprache C, Python
Randbedingungen
- möglichst offener Ansatz für die Steuerungssoftware; keine Abhängigkeit von proprietärer Software
- Agile Entwicklung (Scrum) mit inkrementellem Prototyping. Der finale Prototyp und die entwickelten Systeme sind als Startpunkt für spätere KI Anwendungen gedacht.
Projektfortschritt
Arbeitsergebnisse sowie Projektfortschritte werden in regelmäßigen Abständen hier veröffentlicht.