Bewegungsdrang (Teil 1): Der Kinect Controller

13. Juli 2012

Die Begriffe ‚Touch‘ bzw. ‚Multitouch‘ sind derzeit in aller Munde und somit macht es für einen Entwickler durchaus Sinn sich ein wenig der Gestensteuerung zu widmen. Doch warum sollte man sich dabei auf ein paar wenige Zoll eines Tablet-Displays und ein paar Finger beschränken?

Halten wir uns doch einfach an das Motto "Think big" und nutzen ein paar Quadratmeter Eingabefläche samt unseres ganzen Körpers. Die Herausforderungen sind prinzipiell sehr ähnlich, wenn auch ungleich komplexer.

Die vorliegende Blogreihe "Bewegungsdrang" beschäftigt sich mit dem Microsoft Kinect Controller und der Entwicklung von Anwendungen auf Basis des dazugehörigen SDK’s.

Motivation

Gehören Sie auch zu der Sorte Entwickler, die sich gerade die Frage stellt warum man sich den nun auch noch mit "Gaming Hardware" im .NET Kontext beschäftigen sollte?

Seien Sie sich gewiss, auch ich habe das getan und die Antwort auf diese Frage ist durchaus vielfältig. Im Kern jedoch findet sich ein einziger Grund. Der Grund, dass die Kinect weitaus mehr Möglichkeiten bietet als sich als Jedi Krieger im heimischen Wohnzimmer zu beweisen.

So können Chirugen bereits bei Operationen unterstützt werden, es enstehen virtuelle Ankleidekabinen oder aber die Kinect wird zusammen mit einem Beamer zum einem überall einsetzbaren 3D Multitouch-Screen. Und das sind nur wenige Beispiele, die Ideen zahlreicher "Bastler" und Firmen geht hier durchaus weiter. Selbst Microsoft Research präsentierte vor ein paar Monaten im TechForum einen Einkaufswagen der sich selbst steuert.

Wer also sagt Ihnen, dass Sie mit dieser Technologie nicht früher oder später konfrontiert werden? Egal ob im Projekt, in Ihrer nächsten Präsentation oder durch den privaten Laptop, es ist durchaus möglich, dass Ihnen der Sensor früher oder später begegnet.

Historie

Aber blicken wir erst mal zurück. Seit nun mehr 1 1/2 Jahren kann man ihn kaufen, den Controller der vormals unter dem Projektnamen Natal von Microsoft und der Firma PrimeSense entwickelt wurde. Schon damals war klar, dass nicht nur die Xbox 360 Konsolenjunkies mit dieser hippen kostengünstigen Innovation beglückt werden – nein – Bill Gates höchstpersönlich kündigte ein gutes halbes Jahr vor Verkaufsstart an die Technologie auch auf Windows zu portieren.

Seither sind viele Monate ins Land gezogen. Monate in denen der ein oder andere findige Geek bereits den doch recht nützlichen USB Stecker am Ende des Kabels entdeckte. Und so kam es wie es kommen mußte, ein wahrer Krieg auf YouTube & Co. tobte darüber, wer den nun den originellsten Hack mit Libraries wie CLNUI, OpenKinect oder gar OpenNI implementiert.

Doch damit ist jetzt Schluß! Seit dem 1. Februar ist sie endlich erhältlich, die Kinect für Windows. Nun ist es für jeden Entwickler ganz offiziell und ohne Nebenwirkungen möglich, ein wenig Spieltrieb zu entwickeln … auch oder gerade wenn man aufgrund der tausenden Zeilen Line-Of-Business-Code vielleicht ein wenig eingerostet ist.

Hardware

Aber wie funktioniert es eigentlich, dieses kleine schicke schwarze Gadget, welches das obere Ende meines Flatscreens ziert und mir bisweilen das Gefühl gibt irgendwie unter Beobachtung zu stehen? Ein Blick auf die Hardware zeigt oberflächlich gesehen erst mal folgende Komponenten:

Will man aber ein wenig mehr wissen als einem Verpackung und Beipackzettel mit auf den Weg geben wird man schnell merken, dass man am Web nicht vorbei kommt. Und so präsentiert sich die Kinect nach ein wenig Recherche mit folgenden Details:

  • RGB Kamera: Die RGB Kamera liefert Bilder mit einer Auflösung von 1280×960 bei einer Bildwiederholfrequenz von 30fps. Damit lassen sich zwar keine High-Speed-Sportfilme machen, allerdings ist ein durchaus flüssiges Bild in einer eigenen Anwendung möglich.
  • Infrarot Projektor: Hier wird konstant ein spezielles Infrarot Lichtmuster ausgesendet dessen Wellenlänge so angepasst ist, das es gegenüber dem Umgebungslicht weitestgehend unempfindlich ist. Dieses Licht wiederum wird durch Objekte reflektiert und mit dem Tiefensensor empfangen.
  • Tiefensensor: Einer der maßgeblichen Unterschiede zur Xbox360 Variante der Kinect ist hier versteckt. Der Tiefensensor in Form eines CMOS Sensors empfängt die Reflektionen nämlich auch für Objekte die nur etwa 40cm entfernt sind. Heraus kommt dabei ein monochromes Bild das über Intensitätstiefe den Abstand wiedergibt. Wie bei der RGB Kamera auch, werden hier 30fps verarbeitet.
  • Mikrofon-Array: Hier sind ganze vier Mikrophone verbaut die zusammen mit einem 24-Bit Analog-Digital-Wandler und Kinect internen Echo- und Rauschunterdrückungs-Verfahren dafür sorgen, dass Audioquellen entsprechend lokalisiert und mit einer Abtastrate von 16kHz verarbeitet werden können.
  • Motorisierter Tilt: Der vertikale Blickfeldwinkel der Kinect liegt bei 43°. Je nachdem in welcher Höhe der Controller steht kann man selbigen um 27° nach oben bzw. unten neigen um die Objekte ins Kinect Sichtfeld zu bringen.

Aber genug der nackten technischen Daten die bei näherer Betrachtung eher in die für mich fremden und unendlichen Weiten der Elektrotechnik und Physik fallen. Denn primär bin ich Entwickler und als solcher geht es für mich zu Begin eines jeden Projekts erst mal darum "die Kiste zum Laufen zu bringen" – um es mal umgangssprachlich auszudrücken. Für all diejenigen unter Ihnen die sich dennoch berufen fühlen sei an dieser Stelle auf das US Patent US 2010/0020078 hingewiesen das sich die Methode des Structured-Light 3D Scannings zu Nutze macht.

Ausblick

Während ich Ihnen in diesem Artikel die Grundlagen geliefert habe, werde ich ab dem nächsten Teil langsam ans Eingemachte gehen. Sie werden dabei unter anderem Themen wie Streaming, Skeleton API, Voice Recognition und Face Tracking kennenlernen. Und wer weiß, vielleicht gehören auch Sie bald zum Kreise der Kinect-Koryphäen. Ganz so, wie diese beiden jungen Herren des Microsoft SQL Server Teams.

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen