Kinect Tekkensteuerung

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Übersicht

Mit Hilfe einer Kinect sollen die Hand- und Fußbewegungen eines Spieler detektiert werden. Jede der vorgegebenen Bewegungen repräsentiert einen Tastendruck. Die so simulierten Tastendrücke werden an das Kampfspiel Tekken3 weitergeleitet werden, welches in einem Emulator laufen soll.

Software

Es wurde entschieden das Programm für die Steuerung mit C++ und der Middleware OpenNI2 + Nite2 zu realisieren. Aufgrund mehrerer Probleme beim Kompilieren unter Windows wurde nur unter Linux kompiliert.

Vorbereitungen

Als Erstes muss der Treiber Installiert werden.

Siehe Kinect - Einbindung in verschiedene Systemumgebungen

Unter Linux wurde dann die spezielle OpenNI Version installiert, welche den freenect treiber als Basis nutzt.

Um das Skeleton-tracking der Kinect zu verwenden muss neben OpenNI2 noch Nite2 heruntergeladen und eingerichtet werden(für den Download ist eine Registrieung notwendig).

Zum Testen des Systems sind einige Beispielprogramme unter

NiTE2_root/Samples/

vorhanden.


Bewegungsdetektion

Momentan werden die Joints der Hand-, Schulter-, Fuß- und Hüftgelenke erfasst. Befinden sich nun zum Beispiel das rechte Handgelenk und das rechte Schultergelenk einer horizontalen Linie (mit einer gewissen Toleranz), so wird dies als ein Fauststoß detektiert und ein Tastendruck an den Emulator gesendet. Für die Detektion eines Kicks, muss entsprechend das Fußgelenk in Höhe der Hüfte sein.


Je nachdem ob rechts oder links, Fuß oder Hand, wird ein anderer Tastendruck gesendet. Dies muss im Emulator entsprechend eingestellt werden.

Ein von uns aufgenommenes Beispielvideo zum Gesamtsystem liegt im .zip Ordner, der unten zum Download verlinkt ist, bei.

Probleme

  • OpenNi + Nite2 nur mit Visual Studio funktionsfähig (unter Windows)
  • Kompilierung nicht einfach bzw. nicht möglich (unter Windows)
  • Installation unter Linux (je nach verwendeter Distribution) könnte problematisch werden
  • Speziell angepasste OpenNI Version für Freenectreiber unter Linux notwendig
  • Programm führt in Verbindung mit dem Emulator zu große Latenzzeiten


Mögliche Weiterentwicklung des Projektes

Aufgrund der hohen Auslastung des Rechners war es nicht möglich den Emulator mit der Kinect_Tekkensteuerung gleichzeitig funktionsfähig laufen zu lassen. Hierbei wäre eine Idee, den Emulator auf einen anderen Rechner wie die Steuerung laufen zu lassen und die Kummunikation über das Netzwerk zu realisieren. Insofern wäre auch eine Anbindung über OSC-Nachrichten denkbar, wodurch dann auch andere Systeme von der Steuerung ohne große Änderungen profitieren könnten.

Downloads

Quellcode und Beispielvideo