Gestensteuerung Roboterarm UR10
Autoren: Kevin Penner
Betreuer: Prof. Goebel
Art: Bachelorarbeit
Thema der Arbeit
Als Hauptziel dieser Arbeit soll eine Anwendung in der MATLAB Umgebung implementiert werden, welche die Arm- und Handgesten einer Person unter Anwendung einer 3D-Kamera erfasst, diese verarbeitet und anschließend in eine vergleichbare Roboterarmstellung transformiert. Dabei sollen sowohl sicherheitsrelevante Aspekte, wie z. B. ein kollisionsfreies Arbeiten des Roboters, berücksichtigt werden, als auch die Rahmenbedingungen für einen späteren Greifvorgang geschafft werden, indem Handgesten erkannt werden können. Bei dem Roboterarm handelt es sich um den „Zweiarm-Knickroboter“ mit dem Namen UR10 der Firma Universal Robots.
Anforderungen
Anforderungen an Aktorik und Sensorik:
- Verwendung eines Kinect-Sensors zur Erkennung von Gelenkkoordinaten und Handgesten
- Verwendung eines UR10 Roboterarms zur Rekonstruktion menschlicher Gesten
Anforderungen an die verwendete Software/Programmierumgebung:
- Implementierung der Software in MATLAB
- Verwendung des Robot Operating System "Polyscope"
Softwareanforderungen:
- Handgesten erkennen für eine spätere Ansteuerung eines Greifers
- Filterung & Glättung der Gesten/Bewegungen des Benutzers
- Transformation der Gesten/Bewegungen in eine Roboterbewegung
- Sicherheitscheck der Rotorbewegungen in Form von Kollisionsüberprüfungen mit Objekten im Arbeitsbereich des Roboters
- Implementierung einer benutzerfreundlichen Anwendung unter Verwendung von akustischen Befehlen und einer detailierten Bedienungsanleitung
Anwendungsgebiete
- Heise-Artikel: GDC: NASA steuert Weltraum Roboter per Kinect
- New Atlas Artikel: Gesture-controlled computers and robotic nurses being developed for operating rooms
Grundlagen
In diesem Kapitel werden die technischen Grundlagen dieser Arbeit vermittelt. Hierbei handelt es sich zum einen um eine Beschreibung und die Funktionsweise der vorhandenen Hardware- und Softwarekomponenten, zum anderen um Grundlagen im Bereich der Gestensteuerung von technischen Systemen. Auf der Grundlage der verwendeten Hardware wurde so ein Konzept zur Gestensteuerung des Roboterarms aufgestellt.
Kinect-Sensor
Für die Erfassung des menschlichen Arms wird der Kinect-Sensor V2 der Firma Microsoft verwendet. Dieser besitzt neben einer RGB-Kamera einen Tiefensensor, welcher eine Kombination aus Infrarot-Projektor und Infrarot-Kamera ist (siehe Abbildung 2). Außerdem verfügt die Kinect-Hardware über ein Mikrofon-Array und eine eingebaute Intelligenz in Form eines Computers, welcher eine Sensordatenverarbeitung vollzieht und dadurch eine Skeletterkennung bei Menschen durchführt.
Für die Verwendung des Kinect-Sensors in MATLAB ist eine SDK notwendig. Diese SDK mit dem Namen „Image Acquisition Toolbox Support Package for Kinect for Windows Sensor“ kann in MATLAB über den Add-On Manager installiert werden und beinhaltet neben den Hardware Treibern eine Sammlung von Software Beispielen. Für die Nutzung dieser SDK ist jedoch eine MATLAB Version ab R2016a notwendig. Im Zuge dieser Arbeit wird die Toolbox der Version 16.2.0 verwendet.
Weitere Sepzifikationen des Kinect-Sensors befinden sich in folgender Tabelle [3]:
Beschreibung | Funktionen |
---|---|
Auflösung RGB-Kamera | 1920 x 1080 |
Auflösung Tiefensensor | 512 x 424 |
Max Distanz Tiefensensor | 4,5 m |
Min Distanz Tiefensensor | 0,5 m |
Bildfrequenz RGB-Kamera | 30 fps |
Bildfrequenz Tiefenkamera | 30 fps |
Horizontaler Sichtbereich Tiefenkamera | 70 deg |
Vertikaler Sichtbereich Tiefenkamera | 60 deg |
USB-Standard | 3 |
Unterstütztes OS | Windows 8 oder höher |
benötigte Grafikkarte | unterstützt DirectX 11.0 oder höher |
Die Skeletterkennung erfolgt auf der Kinect-Hardware. Neben dem Zugriff auf das Farb- und Tiefenbild der Kinect, lassen sich die Metadaten des Tiefenbildes in MATLAB auslesen. In diesen sind die 25 Gelenkkoordinaten im 3D Koordinatensystem der Kinect hinterlegt. In Abbildung 3 ist eine Auslistung der Gelenkkoordinaten sortiert nach ihrer Indexzahl abgebildet.
UR10 Roboterarm
Der aus Aluminium bestehende Industrieroboter UR10 ist der größte Knickroboterarm im Sortiment des Unternehmens Universal Robots (siehe Abbildung 1). Er besitzt sechs rotierende Gelenke, die von -360° bis 360 ° agieren. Durch eine maximale Traglast von 10 kg und einer maximalen Reichweite von 1,3 m ist der UR10 für Aufgaben in der Logistik (Verpackung und Palettierung), Montagearbeiten oder bei „Pick & Place“ Aufgaben (z. B. Sortieren von Objekten auf einem Fließband) prädestiniert. Die maximale lineare Geschwindigkeit des TCP von 1 m/s erlaubt es dem Roboter Automatisierungsaufgaben sehr schnell durchzuführen. Außerdem verfügt der Knickroboterarm über eine konfigurierbare Sensorik zur Messung der Drehmomente, die es ihm ermöglicht einen Sicherheitsstopp bei einer Kollision einzuleiten. Dies befähigt den Roboter ohne weitere Sicherheitssysteme in einem Umfeld mit dem Menschen zusammenzuarbeiten. Die Kommunikation mit dem Roboter kann über eine TCP/IP- Schnittstelle erfolgen, welche die Ansteuerung und Programmierung über einen PC ermöglicht.
Konzept der Gestensteuerung
Hardwareaufbau
Der Aufbau der Hardware ist der Abbildung 4 zu entnehmen. Der Benutzer kann mit dem System mittels eines Kinect-Sensors, Lautsprechers und einem Programmierhandgerät kommunizieren. Dabei erfasst der Kinect-Sensor die Gesten bzw. Armstellungen des Benutzers und schickt diese über die serielle Schnittstelle an den Rechner, der die Daten in der MATALB-Programmierumgebung verarbeitet. Für Aufforderungen an den Nutzer kann das Programm auf dem Rechner akustische Hinweise bzw. Befehle an den Benutzer zurücksenden. Die erfassten Bild- und Metadaten werden auf dem Rechner in eine Roboterarmstellung transformiert und über die TCP/IP-Schnittstelle an das Steuergerät des Roboters übermittelt. Außerdem besitzt der Benutzer die Option, mithilfe des Programmierhandgerätes einen direkten Eingriff auf den Roboter vorzunehmen (z. B. durch Betätigung des Not-Aus Schalters).
Implementierung & Realisierung der Software
Der gesamte Ablaufplan der Software zur Gestensteuerung eines UR10 Roboters ist in Abbildung 5 zu sehen.
Zu Beginn des Programms werden die benötigten Daten mit den vorher eingestellten Konfigurationen aus dem Kinect-Sensor geladen. Aus diesen Daten lassen sich bestimmte Gelenkpositionen im Raum ermitteln. Da nicht alle Informationen benötigt werden, wird eine Vorauswahl getroffen. Darunter zählen Schulter-, Ellbogen-, Handgelenk-, Handposition und der Status der Hand, welcher aussagt, ob diese geschlossen oder geöffnet ist.
Die Armpositionen werden im Anschluss aus dem Koordinatensystem der Kinect in das Koordinatensystem des Roboters transformiert. Diese Transformation beinhaltet unter anderem Rotationen, Translationen und Skalierungen der Gelenkkoordinaten im 3D Raum. Für die Skalierung muss hierzu vor dem Hauptprogramm eine Kalibrierung durchgeführt werden. Diese wird benötitg, da die Länge des menschlichen Arms nicht der Länge des Roboterarms entspricht.
Die transformierten Gelenkkoordinaten der Hand werden mittels eines Kalman Filters einem Tracking und einer Glättung unterzogen, dem ein vorher erstelltes Bewegungsmodell zugrunde liegt [4]. Diese Position wird mit der Position aus dem vorherigen Zyklus verglichen. Bei nur kleinen Abweichungen zwischen zwei Zyklen, liegt die Bewegung in einer Totzone und der TCP des Roboters wird nicht bewegt.
Erst bei einer Überschreitung eines Grenzwertes bzw. einer größeren Bewegung, wird die Handposition nun mit einem Robotermodell des UR10 und einer vorgegebenen TCP-Orientierung (z. B. TCP soll nach unten zeigen) einer inversen Kinematik unterzogen. Die inverse Kinematik führt eine numerische Berechnung der Gelenkwinkel zum Erreichen dieser Position durch. Das Robotermodell wird mit DH-Parametern beschrieben, welche der Modellierung von Robotern bzw. kinematischer Ketten, die zueinander in Beziehung stehen, dienen. Dabei wird vom Nullpunkt des ersten Gelenks ausgegangen und schrittweise die kinematische Kette bis hin zum TCP beschrieben. Dabei werden die relativen Positionen und die relative Orientierung zwischen zwei benachbarten Gelenke angegeben [5]. Für die diversen roboterspezifischen und kinematischen Funktionen wurde im Zuge dieser Arbeit die Robotic Toolbox | rvctools von Peter Corke verwendet, die eine Vielzahl an Funktionen liefert und eine ausführliche Dokumentation in Form eines PDF-Dokumentes beinhaltet [6].
Nach dieser Berechnung sind sowohl Gelenkwinkel als auch Greifstatus vorhanden und könnten an den Roboter geschickt werden. Da jedoch noch das Sicherheitsrisiko besteht, dass der Roboter bei diesen berechneten Gelenkwinkeln eine Kollision mit dem Umfeld verursacht, wird zusätzlich eine Kollisionsüberprüfung durchgeführt. Diese benötigt die 3D-Koordianten des TCP und die des Roboterellbogens, die mittels einer Vorwärtskinematik der Gelenkwinkel erzeugt werden. Außerdem benötigt der Sicherheitscheck eine Rekonstruktion des Arbeitsumfeldes, das mittels vereinfachter geometrischer Objekte im Raum erzeugt wird. Liegt keine Kollision vor, können Gelenkwinkel und Greifstatus an den Roboter übermittelt werden.
Ebenfalls wird überprüft, ob sich der TCP in einem vorher definierten Arbeitsraum befindet. Ist dieses der Fall, werden die Handkoordinaten der Kinect dazu verwendet, die Orientierung der Handfläche in die Orientierung des TCP überzuführen. Dies dient einer genaueren Rekonstruktion der Orientierung, die mithilfe der inversen Kinematik nicht gewährleistet ist. Der gesamte Vorgang wird für jeden Frame des Kinect-Sensors bzw. in jedem Zyklus durchgeführt.
Ergebnis & Bedienungsanleitung
Zusammenfassung, Optimierungspotential & Ausblick
Literatur
- ↑ L. Valgma, „3D reconstruction using Kinect v2 camera,“ Tartu, 2016. | Weblink
- ↑ MathWorks Kinect, „mathworks.com,“ | Weblink
- ↑ E. Lachat, H. Macher, M.-A. Mittet, T. Landes und P. Grussenmeyer, „FIRST EXPERIENCES WITH KINECT V2 SENSOR FOR CLOSE RANGE 3D MODELLING,“ Straßburg, Frankreich, 2015. | Weblink
- ↑ G. Welch und G. Bishop, „An Introduction to the Kalman Filter,“ Chapel Hill, NC, 2006. | Weblink
- ↑ A. Colome, „Smooth Inverse Kinematics Algorithms for Serial Redundant Robots,“ Barcelona, 2011. | Weblink
- ↑ P. Corke, „Robotics Toolbox for MATLAB Release 10,“ 2017. | Weblink
→ zurück zum Hauptartikel: Studentische Arbeiten