Robotersteuerung mit Kinect

Für dieses Projekt wird die Kinect One von Xbox verwendet. Das fertige und ausführbare Programm, um die Roboter per Gesten über die Kinect zu steuern steht hier zum Download bereit. Allerdings muss anschließend noch die beigefügte .ini Datei bearbeitet werden. Wie das geht, steht weiter unten im Absatz “Weiteres Vorgehen”.

Wer selbst Änderungen am Code vornehmen möchte, muss zunächst Visual Studio installieren. Hierfür hat die Version von 2015 gut funktioniert, allerdings klappt das Kamera Tracking nur bei der Visual Studio Version 2013 Express (siehe Menüpunkt Kameratracking mit OpenCV). Zudem wird Kinect Studio benötigt (bei uns v1.7).

Installation von Visual Studio:

  • Link zum Download von Visual Studio 2015: https://www.microsoft.com/de-DE/download/details.aspx?id=48146
  • Visual Studio funktioniert auf Windows, nicht auf OS X von Mac (außer Bootstrap wird installiert)
  • Hierfür werden 6 GB Speicher benötigt
  • Wir programmieren in C++, hierfür muss ggf. ein zusätzliches Sprachpaket heruntergeladen werden
  • Vor dem Verwenden wird man aufgefordert ein Microsoft Konto anzulegen

Installation von Kinect Studio, Windows SDK und Kinect Developer Toolkit:

Weiteres Vorgehen:

Jetzt kommt das Developer Toolkit für die Kinect zum Einsatz. Wählt oben Samples: C++ aus und sucht in der Liste nach Skeleton Basics-D2D. Dieses Paket verwenden wir als Basis für unser Projekt, da es bereits einige Funktionen enthält, die wir benötigen, wie das Erkennen von Personen, die vor die Kinect laufen:

kinect-skelette

Klickt daher auf Install und wählt, wo die Datei auf eurem PC gespeichert werden soll. Navigiert anschließend zu dem Ordner mit dem Namen „SkeletonBasics-D2D“, der nun heruntergeladen wurde.

Um es einfacher zu machen kürzen wir an dieser Stelle das Verfahren etwas. Statt alles selbst neu zu programmieren, stellen wir die fertige Datei zur Verfügung. Entfernt dazu in dem Ordner „SkeletonBasics-D2D“ die Datei mit dem Namen „SkeletonBasics.cpp“. Ersetzt sie durch die fertige Datei, die hier zum Download zur Verfügung steht.

Bevor ihr loslegen könnt, müsst ihr allerdings zunächst noch die beigefügte .ini Datei mit dem Namen “selectComPorts.ini” bearbeiten. Öffnet die Datei und tragt in der Zeile Nummer 5 und 6 die Com Ports eurer Roboter ein, da wo momentan noch die Zahlen 19 und 21 stehen. Wenn ihr nicht wisst, wie ihr die Com Ports der Bluetooth Shields der Roboter herausfindet, schaut mal ein Kapitel vorher bei “Robotersteuerung mit WASD” vorbei (unter der Überschrift “PuTTY” steht es im zweiten Absatz).

Wenn ihr selbst weitere Änderungen am Code vornehmen wollt, könnt ihr euch das Ergebnis direkt anschauen, indem ihr in Visual Studio das Projekt geöffnet habt und oben auf Lokaler Windows-Debugger klickt.

Gesten zur Robotersteuerung:

gestensteuerung

Hier sehen wir die drei Gesten, wie wir sie festgelegt haben, um einen Roboter zu bewegen. Auf dem Bild von links nach rechts bedeuten die Gesten: in eine Linkskurve fahren, eine Rechtskurve machen, geradeaus fahren.

Der Roboter kann auch in den Rückwärtsgang gebracht werden, diese Bewegung wird aber nach mehrmaligem Wiederholen schon fast zur Trainingseinheit. Denn dafür muss man in die Hocke gehen und dabei die Arme seitlich vom Körper zum Boden hin ausstrecken

Im C++ Code in Visual Studio haben wir die Gesten festgelegt, indem wir zwischen den von der Kinect erkannten Punkten am Skelett einer Person Relationen hergestellt haben. So zum Beispiel müssen sich für das geradeaus Fahren die Hände des Nutzers von der Höhe her oberhalb von seinen Schultern befinden. Wie hoch genau die Hände dabei gehoben werden, spielt keine Rolle.

Beim Rückwärtsfahren müssen die Hände niedriger sein, als die Knie. Dafür ist es wohl am einfachsten, die Knie zu beugen und in die Hocke zu gehen. Da so die Kinect zum Teil einige Schwierigkeiten bekommt, das Skelett des Nutzers noch richtig zu erkennen und darzustellen, funktioniert diese Geste nicht immer besonders gut. Es kann allerdings schon helfen die Arme seitlich etwas vom Körper wegzustrecken, da so die Erkennung wieder besser funktioniert.

Advertisements