GPN12:Kinect-Touchpad: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{#css:GPN12:Stylesheet}}
{{#css:GPN12:Stylesheet}}
= Kinect-Projektor-Hacking =
= Kinect Projektor Hacken =
In diesem Projekt soll es darum gehen, was man alles mit einer Kinect und einem Projektor anstellen kann. Mit der Kinect können beliebige Flächen oder Körper in 3D erfasst werden und mit dem Projektor beliebig eingefärbt werden.  
In diesem Projekt soll es darum gehen, was man alles mit einer Kinect und einem Projektor anstellen kann. Mit der Kinect können beliebige Flächen oder Körper in 3D erfasst werden und mit dem Projektor beliebig eingefärbt werden.  
Neben den technischen Herausforderungen würde ich gerne auch in die künsterlische Richtung gehen und schon während der GPN interaktive Kunstinstallationen aufbauen.  
Neben den technischen Herausforderungen würde ich gerne auch in die künsterlische Richtung gehen und schon während der GPN interaktive Kunstinstallationen aufbauen.  
Zeile 9: Zeile 9:
== Riesentouchpad aus Beamer und Kinect ==
== Riesentouchpad aus Beamer und Kinect ==


Mit dem Beamer könnte man eine Tafel oder eine Wand zu einem großen Touchscreen umbauen. Wenn man ein Whiteboard als Hintergrund nehmen würde, könnte man sogar darauf malen und darüber z.B. mit einem Spiel interagieren. Ein Beispiel wäre ein Towerdefense: [http://www.kickstarter.com/projects/1773873912/doodle-defense] (ist sogar schon OpenSource)


== 3D Projektionen ==


Das Ziel des Projekts ist ein großer Touchscreen aus einem Beamer und einer Kinect.  
Hier geht es eher darum, Menschen oder beliebige Objekte als Projektionflächen einzusetzen. Mit dem Skelett-Tracker der Kinect könnte man jemandem ein Smiley auf den Bauch malen oder etwas in diese Richtung: [http://vimeo.com/18713117]
Mit dem Beamer kann man beliebige Inhalte auf den Boden, einen Tisch oder eine Wand projizieren, mit der Kinect kann man feststellen, wenn jemand die Fläche berührt.
Interaktive Hüpfkästchen oder ein interaktiver Tisch wären damit dann gut machbar.  


Die Technik dahinter ist nichts Neues, nur habe ich bisher keine OpenSource Lösung für diese Anwendung gesehen und ich glaube, dass man mit dieser Riesen-Touchpad viel Spaß haben kann.
Damit auf der GPN schnell losgehackt werden kann, habe ich schon mal einen Prototypen [https://github.com/NikolasE/Touchscreen] geschrieben und ein paar Bilder gemacht:
 
Um während der GPN was vorzeigbares bauen zu können, habe ich in den letzten Wochen einen ersten Prototypen implementiert.  
 
 
Aktueller Zwischenstand:
 
Beamer und Projector können schnell und einfach kalibriert werden (dauert 30s), so dass jeder Punkt in der Welt beliebig gefärbt werden kann. Hier sind ein paar DemoBilder, was möglich ist:


<gallery widths=200px>
<gallery widths=200px>
Zeile 35: Zeile 28:
Auf den ersten beiden Bildern wird alles gefärbt, was sich vor der Wand befindet. Beim Farbverlauf wurde die Entfernung zur Wand auf eine Farbskala übertragen und jeder Punkt mit seiner entsprechenden Farbe angestrahlt. Für das letzte Bild hat einer unserer Roboter (ein PR2 von Willow Garage) Model gestanden. Hier hängt die Farbe vom Abstand zum Fußboden ab.
Auf den ersten beiden Bildern wird alles gefärbt, was sich vor der Wand befindet. Beim Farbverlauf wurde die Entfernung zur Wand auf eine Farbskala übertragen und jeder Punkt mit seiner entsprechenden Farbe angestrahlt. Für das letzte Bild hat einer unserer Roboter (ein PR2 von Willow Garage) Model gestanden. Hier hängt die Farbe vom Abstand zum Fußboden ab.


== Bau des Touchpads ==


Da der Beamer meist nicht direkt über dem Feld installiert werden kann, wird das Bild recht stark verzerrt werden, was algorithmisch ausgeglichen werden sollte. Zudem muss klar sein, welches Pixel angesprochen werden muss, wenn ein bestimmter Fleck auf dem Tisch seine Farbe wechseln soll. Daher ist es notwendig, die Position des Beamers und der Kinect relativ zum Tisch zu bestimmen. Für die Kinect mit der Tiefeninformation ist das recht einfach machbar, für den Beamer muss man dann etwas Mathe rausholen. Für die Beamerkalibrierung (Bestimmung der Projektionsmatrix/Homographie) kann man den Beamer als inverse Kamera betrachten und über die normalen markerbasierten Algorithmen gehen.  
Für die technische Umsetzung (Kalibrierung, Gestenerkennung) gibt's noch eine eigene Seite: [[GPN12:KinectTech]]
 
 
== Wer wird gesucht? ==
 
- Alle, die sich für Bildverarbeitung interessieren und wissen wollen, was man alles mit einer Kamera anstellen kann. (für die Diskussion der technischen Dateils:  [[GPN12:KinectTech]])
- Alle, die sich gerne künstlerisch austoben wollen, Ideen für ein Spiel oder eine Installation haben
- Alle, die mal eine Demo ausprobieren wollen um sie danach in den höchsten Tönen zu loben
- Alle, die sich mit Processing, OpenFrameworks und ähnlichen Techniken auskennen
- Alle anderen, die gerne mal mit der Kinect spielen wollen
 
Der Code soll natürlich openSource sein und möglichst einfach zu benutzen sein (wenig Abhängigkeiten, möglichst auch unter Windows), damit er nicht nach der GPN einfach verschwindet.  


=== Kalibrierungsmuster ===
Ich würde mich sehr freuen, wenn sich ein paar Leute zum Hacken und Spielen finden würden :)


Die Marker werden im Kinect-Bild erkannt und mit der bekannten Tiefe können ihnen 3d-Positionen zugeordnet werden. Diese Positionen werden dann in Tischkoordinaten (x,y,0) umgerechnet, und damit die Projektionsmatrix berechnet.
--[[Benutzer:Nikolas|Nikolas]] 21:47, 8. Apr. 2012 (CEST)
Soll dann ein bestimmes Bild auf dem Tisch angezeigt werden, kann darüber die auszugleichende Verzerrung berechnet werden.
Weiter Bilder auch im [https://github.com/NikolasE/Touchscreen github].


=== Erkennung der Nutzerinteraktion ===
Über die Tiefenwerte wird eine Ebene in den Tisch gefittet. Für jeden Punkt, den die Kinect sieht, kann damit der Abstand der Ebene und der nächste Punkt in der Ebene berechnet werden. Sobald ein Punkt sehr nahe am Tisch ist, kann ein MouseDown ausgelöst werden, und das Object verfolgt werden, bis es sich wieder vom Tisch entfernt, was dann ein MouseUp darstellt. Bewegt sich ein Objekt nahe der Oberfläche (2-20cm) könnte auch ein MouseOver ausgegeben werden.
Aufgaben hier wäre hier eine möglichst glatte Mausbewegung und eine Erkennung der verschiedenen Events. Da der Tisch multitouch-fähig sein soll, müssen auch mehrere Objekte gleichzeitig getrackt werden. (z.B. für eine Zoom-Geste mit zwei Händen).


{{Navigationsleiste GPN12}}
{{Navigationsleiste GPN12}}

Version vom 8. April 2012, 20:47 Uhr

Kinect Projektor Hacken

In diesem Projekt soll es darum gehen, was man alles mit einer Kinect und einem Projektor anstellen kann. Mit der Kinect können beliebige Flächen oder Körper in 3D erfasst werden und mit dem Projektor beliebig eingefärbt werden. Neben den technischen Herausforderungen würde ich gerne auch in die künsterlische Richtung gehen und schon während der GPN interaktive Kunstinstallationen aufbauen.



Riesentouchpad aus Beamer und Kinect

Mit dem Beamer könnte man eine Tafel oder eine Wand zu einem großen Touchscreen umbauen. Wenn man ein Whiteboard als Hintergrund nehmen würde, könnte man sogar darauf malen und darüber z.B. mit einem Spiel interagieren. Ein Beispiel wäre ein Towerdefense: [1] (ist sogar schon OpenSource)

3D Projektionen

Hier geht es eher darum, Menschen oder beliebige Objekte als Projektionflächen einzusetzen. Mit dem Skelett-Tracker der Kinect könnte man jemandem ein Smiley auf den Bauch malen oder etwas in diese Richtung: [2]

Damit auf der GPN schnell losgehackt werden kann, habe ich schon mal einen Prototypen [3] geschrieben und ein paar Bilder gemacht:

Auf den ersten beiden Bildern wird alles gefärbt, was sich vor der Wand befindet. Beim Farbverlauf wurde die Entfernung zur Wand auf eine Farbskala übertragen und jeder Punkt mit seiner entsprechenden Farbe angestrahlt. Für das letzte Bild hat einer unserer Roboter (ein PR2 von Willow Garage) Model gestanden. Hier hängt die Farbe vom Abstand zum Fußboden ab.


Für die technische Umsetzung (Kalibrierung, Gestenerkennung) gibt's noch eine eigene Seite: GPN12:KinectTech


Wer wird gesucht?

- Alle, die sich für Bildverarbeitung interessieren und wissen wollen, was man alles mit einer Kamera anstellen kann. (für die Diskussion der technischen Dateils: GPN12:KinectTech) - Alle, die sich gerne künstlerisch austoben wollen, Ideen für ein Spiel oder eine Installation haben - Alle, die mal eine Demo ausprobieren wollen um sie danach in den höchsten Tönen zu loben - Alle, die sich mit Processing, OpenFrameworks und ähnlichen Techniken auskennen - Alle anderen, die gerne mal mit der Kinect spielen wollen

Der Code soll natürlich openSource sein und möglichst einfach zu benutzen sein (wenig Abhängigkeiten, möglichst auch unter Windows), damit er nicht nach der GPN einfach verschwindet.

Ich würde mich sehr freuen, wenn sich ein paar Leute zum Hacken und Spielen finden würden :)

--Nikolas 21:47, 8. Apr. 2012 (CEST)