13.07.2015 Aufrufe

Microsoft Kinect-Kamera - Hochschule für Telekommunikation Leipzig

Microsoft Kinect-Kamera - Hochschule für Telekommunikation Leipzig

Microsoft Kinect-Kamera - Hochschule für Telekommunikation Leipzig

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

1.3 AnwendungsbeispieleDie Anwendungsbeispiele sind mannigfaltig. Die Unterhaltungsindustrie macht sich diesesSystem schon zu nutzen, um ein vielseitigeres Spieleerlebnis zu bieten. WeitereMöglichkeiten bieten die Steuerung von Multimediaanwendungen oder Hardware. Weiterhinließe sich dieses System in der Industrie zur Bearbeitung von 3D-Animationen nutzen. Auchkomplexere Software wie Betriebssysteme, ließen sich damit steuern.2. Fachlich-logischer Entwurf2.1 ProgrammstrukturFür die Erstellung des Algorithmen „<strong>Kinect</strong> Graphing“ wurde das Programm „Eclipse“ in derVersion Juno Service Release 2 verwendet.Für das Programm „<strong>Kinect</strong> Parsing“ wurde „<strong>Microsoft</strong> Visual Studio Ultimate 2012“ in derVersion 11.0.60315.01 (Update 2) genutzt.Um Daten zur <strong>Kamera</strong> zu senden und zu erhalten, wurden von <strong>Microsoft</strong> bereitgestellte<strong>Kinect</strong> - Datenbanken verwendet.PAP Abbildungen siehe folgende Seiten:


2.1.1 PAP Abbildung 1- Koordinaten von <strong>Kamera</strong>-


2.1.2 PAP Abbildung 2.1-Koordinatenabgleich mit festgelegtem Bereichund Verarbeitung <strong>für</strong> die Ausgabe in Gnuplot-


2.1.3 PAP Abbildung 2.2-Koordinatenabgleich mit festgelegtem Bereichund Verarbeitung <strong>für</strong> die Ausgabe in Gnuplot-


2.2 Zerlegung in TeilprogrammeZur Realisierung des komplexen Systems, ist der Ablauf in drei Teilschritten unterteilt, sieheAbb. 4.Abb. 4 - Zerlegung in Teilprogramme / Zusammenspiel


2.2.1 Gesten- und KoordinatenerfassungSchritt 1: Starten der <strong>Kamera</strong> und Erfassung der Geste und ihrer Koordinaten sowie Sicherungder erfassten Koordinaten in einem TextdokumentBeschreibung des TeilprogrammsZum sicherstellen des Betriebes der <strong>Kamera</strong>, benötigt diese ein sg. <strong>Microsoft</strong> SDK. Diesesbeinhaltet Treiberpakete <strong>für</strong> die <strong>Kamera</strong> die eine Schnittstelle mit dem Computer bilden. Siesind nicht programmierbar und werden vom Hersteller, als Opensource Software zumDownload angeboten. Nach der Installation des SDK-Tools erfolgt ein Systemstart der<strong>Kamera</strong>. Um die Funktionalität der <strong>Kamera</strong> zu überprüfen, können verschiedeneTestprogramme ausgeführt werden. Dieses sind standardmäßig in den SDK-Tools enthalten.In unserem Beispiel wird der Funktionstest der <strong>Kamera</strong> mithilfe des Programms „SkelletonBasics“ durchgeführt. DieserTest zeigt, obBildinformationen von der<strong>Kamera</strong> zum PC übertragenwerden. Es zeigt beiFunktionalitäteineLiniendarstellung des Körpers.Alle Gliedmaßen sindverbunden. Siehe Abb. 5DiemitgeliefertenDatenbanken (Treiberpakete)müssen, um Zugriff auf diegewünschten Koordinaten zuerhalten in <strong>Microsoft</strong> VisualStudio (MVS) eingebundenwerden. Dies wird realisiertindem Verweise in MVSerstellt werden. Was kann mansich unter diesen Datenbankenvorstellen? Ein Vergleich zudiesen Datenbanken sind dieBibliotheken wie man sie ausC++ oder Codeblocks kennt,Abb. 5 Auszug aus dem SDK-Tool Skeleton Basics – Darstellung desKörpers aus Sicht der <strong>Kamera</strong>beispielsweise „stdio.h“ oder „stdlib.h“. Sie dienen dazu um vordefinierte Befehle aufrufenzu können, wie beispielsweise „For- oder Whileschleifen, Ein- und Ausgabe, Deklarierungen,etc.. Dieses Prinzip macht sich <strong>Microsoft</strong> auch zu Nutze, um möglichst wenig Quelltext zuerzeugen.Folgende Datenbanken sind in <strong>Microsoft</strong> Visual Studio eingebunden und in Abbildung 6erkennbar:Abb. 6 Datenbanken der <strong>Kinect</strong>-Steuerung


Nun wurde der Algorithmus entwickelt welcher die Koordinaten aus der <strong>Kinect</strong>-<strong>Kamera</strong>aufzeichnet. Dieser wurde so geschrieben, dass eine bestimmte Anzahl an Koordinatenaufgezeichnet werden.Die Aufzeichnung wird durchgeführt wenn die Datei „<strong>Kinect</strong> Parsing.exe“ ausgeführt wird.500 Bilder (Frames) werden im Programm gespeichert. Ist diese festgelegte Anzahl Frameserreicht, endet die For-Schleife und der Algorithmus speichert alle Koordinaten in einTextdokument „input.txt“ ab. Abbildung 7 zeigt einen Teil des Aufzeichnungsvorganges.ca. 34 cm in positiverRichtung auf der Abszissenur diese Koordinatenwerden bei derAusgabeberücksichtigt, weiteresdazu in Abschnitt 2.2.2Bewegung im Halbkreis vonrechts nach links – gut zuerkennen an den Änderungender AbszisseDiese Koordinaten werdenin der Darstellung nichtverwendet – außerhalb desdefinierten BereichesAbb. 7 Aufzeichnung der Koordinaten von der durchgeführten Bewegung (mit Kommentaren)Bildbeschreibung: Die ausgeführte Bewegung ist ein Halbkreis mit der rechten Hand aus derSicht der Person von rechts nach links (der <strong>Kamera</strong> zugewandt).


2.2.2 Auslesen und Konvertierung der KoordinatenSchritt 2: Auslesen der Textdatei mit dessen gespeicherten Koordinaten, Bearbeitung derausgelesenen Daten und Speicherung zur Übergabe an GnuPlot.Beschreibung des TeilprogrammsDieser Schritt wird nach der vorher ausgeführten Datei „<strong>Kinect</strong> Parsing.exe“ vom Nutzergestartet.Dieses Teilprogramm bezieht die Koordinaten aus der Datei „input.txt“ auf welche ein vorherdefinierter Pointer im Speicher verweist. Es wurde im Algorithmus ein fester Wertebereich<strong>für</strong> die Z-Koordinate gesetzt. Dieser dient dazu nur in einem bestimmten Bereich vor der<strong>Kamera</strong> aufzuzeichnen. Wird dieser beispielsweise unter- oder überschritten, werdenentsprechende Koordinaten im Zeigerbild nicht abgebildet. Dies soll verhindern, dass falscheBewegungen abgebildet werden. Alle passenden Koordinaten werden anschließend in eineTextdatei „output.txt“ geschrieben. Siehe Abb. 8Abb. 8 Bearbeitung der Koordinaten <strong>für</strong> die Ausgabe in Zeichenprogramm – Koordinaten nichtim definierten Bereich werden entfernt „data point removed“


4.3 Quelltext des Teilprogrammes zum Auslesen und Konvertierung der Koordinatenund Quelltext zur Darstellung der Koordinaten in Zeichenprogramm/*************************************************************************************************************************************************************Programm: <strong>Kinect</strong> Graphing v1.0Mitwirkende: Kai Loose (S121111)Dennis Bäuscher (S121102)*************************************************************************************************************************************************************/#include #include int main(){char filename = "input.txt";printf("opening file: %s\n", "input.txt");int i=0, length=0;;FILE *fp;//neuen Pointer fp auf Datei/File, Addressierung von Fileif((fp = fopen("input.txt", "r+")) == NULL) //input.txt soll in fp geladen werden, datei öffnen, r+=lesen und sschreiben{printf("No such file\n");//Ausgabe und Programm beenden falls File nicht existertexit(1);}else{fscanf(fp, "%d", &length); //Zeilen von fp als integer auslesen und in "length" schreibenprintf("length is: %d\n", length);double array[length][3];//double Array mit "length" Zeilen und 3 Spalten <strong>für</strong> X, Yund Z Koordinaten erstellenwhile (i

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!