ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ. Διασύνδεση του Microsoft Kinect με 3D Gaming Engine και υλοποίηση συστήματος Real-Time Dynamic Skeleton Retargeting



Σχετικά έγγραφα
Μοντελοποίηση τρισδιάστατου κόσμου σε πραγματικό κόσμο: το παράδειγμα του Kinect. ιδάσκων: Φ. Αζαριάδης Φοιτήτρια: Άρτεμις-Αγγελική Σφύρη

RobotArmy Περίληψη έργου

Β2.6 Άλλες Περιφερειακές Συσκευές και Κάρτες Επέκτασης

ΕΙΚΟΝΙΚΗ ΠΡΑΓΜΑΤΙΚΟΤΗΤΑ. Γάντι δεδομένων. Το γάντι δεδομένων είναι. Τρισδιάστατος ήχος

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Εισαγωγή στο 3DS Max 2009

«Προγραµµατισµός του LEGO Mindstorm NXT για το διαγωνισµό "Move the Ball!"»

Μάθημα 5: To Μοντέλο Αναφοράς O.S.I.

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας

Εισαγωγή στη σχεδίαση κινούμενων γραφικών

Τσικολάτας Α. (2011) Οι ΤΠΕ ως Εκπαιδευτικό Εργαλείο στην Ειδική Αγωγή. Αθήνα

Διαδραστική τέχνη και υπολογιστική όραση. Θοδωρής Παπαθεοδώρου Ανωτάτη Σχολή Καλών Τεχνών

Κεφάλαιο 1. Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή computer aided design and manufacture (cad/cam)

Προσομοίωση Συστημάτων

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Βαγγέλης Τσιλιγωνέας. Διατμηματικό Πρόγραμμα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήματα M.Sc. In Information Systems

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

ΑΥΤΟΝΟΜΟΙ ΠΡΑΚΤΟΡΕΣ ΠΛΗ 513

Σχεδιαστικά Προγράμματα Επίπλου

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

Εξοικείωση με το NXT-G

ΚΑΤΑΓΡΑΦΗ ΤΟΥ ΙΧΝΟΥΣ ΤΗΣ ΟΠΤΙΚΗΣ ΑΝΑΖΗΤΗΣΗΣ: ΜΙΑ ΜΕΘΟΔΟΣ ΔΙΕΡΕΥΝΗΣΗΣ ΤΗΣ ΕΠΙΛΕΚΤΙΚΟΤΗΤΑΣ ΤΗΣ ΟΠΗΣ ΩΣ ΒΑΣΙΚΟΥ ΧΑΡΑΚΤΗΡΙΣΤΙΚΟΥ ΤΟΥ ΣΧΗΜΑΤΟΣ

Ενδεικτική πολυ-εργασία 1 - εφαρμογή στην υπολογιστική όραση

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα

Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

BY THE MYSTERY MACHINE ΣΤΈΛΛΑ ΠΑΠΑΔΟΠΟΎΛΟΥ, ΦΩΤΕΙΝΉ ΠΑΝΤΟΚΡΆΤΟΡΑ, ΜΑΡΊΑ ΞΕΝΙΤΟΠΟΎΛΟΥ, ΠΈΤΡΟΣ ΠΑΠΑΠΈΤΡΟΥ, ΆΓΓΕΛΟΣ ΣΤΑΘΕΡΌΠΟΥΛΟΣ

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

Πακέτο Lego Mindstorms

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Εισαγωγή στα συστήματα σχεδιομελέτης και παραγωγής με χρήση υπολογιστή - Computer aided design and manufacture (cad/cam)

Δεδομένων. Μοναστηρίου 7, Άγιος Στέφανος. Tηλ.: Φαξ: Website:

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

ΕΝΙΑΙΟ ΠΛΑΙΣΙΟ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΠΟΥΔΩΝ

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Φύλλο εργασίας 1 Εισαγωγή στη Ρομποτική

ΕΝΟΤΗΤΑ 7: ΑΙΣΘΗΤΗΡΕΣ ΥΠΕΡΥΘΡΩΝ

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ

ΚΕΦΑΛΑΙΟ Μηχανική Μάθηση

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

1. Περιεχόμενα συσκευασίας Απαιτήσεις συστήματος Budget III Web Camera Τεχνική Υποστήριξη από την Crypto...

Προγραμματισμός. Το περιβάλλον του scratch

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Εναρμονίζοντας τα Drive

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Χ. Βέργος Καθηγητής

710 -Μάθηση - Απόδοση

Άσκηση 8 Ελαστικές και μη ελαστικές κρούσεις Αρχή διατήρησης της ορμής

ΠΑΝΕΠΙΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΡΟΜΠΟΤΙΚΗ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ LEGO MINDSTORMS NXT. ΚΕΦΑΛΑΙΟ 7ο. Δραστηριότητες για το ΝΧΤ-G και το Robolab

Χρήση του RAW ORF. Κείμενο, παρουσίαση, έρευνα: Ιορδάνης Σταυρίδης DNG ARW X3F DCR NEF CRW RAW RAF CR2 SRF MRW

ΡΟΜΠΟΤΙΚΗ ΟΡΑΣΗ. Όταν ένα ρομπότ κινείται σε άγνωστο χώρο ή σε χώρο που μπορεί να αλλάξει η διάταξή του τότε εμφανίζεται η ανάγκη της όρασης μηχανής.

Ανάπτυξη Χωρικής Αντίληψης και Σκέψης

ΦΥΣΙΚΗ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ

710 -Μάθηση - Απόδοση

Εισαγωγή στην επανάληψη

Διαδραστικά Συστήματα Προβολής Conceptum

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Διαδραστικά Συστήματα Προβολής Conceptum

Κεφάλαιο 11 Πολυμέσα

x = r cos φ y = r sin φ

Κεφάλαιο 11 Πολυμέσα. Εφ. Πληροφορικής Κεφ. 11 Καραμαούνας Π. 1

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

Μαλούτα Θεανώ Σελίδα 1

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Μέρος Α Γνωριμία με το περιβάλλον προγραμματισμού του ρομπότ OTTO

C6T ΣΥΝΔΕΘΕΊΤΕ ΆΨΟΓΑ ΣΤΟ ΣΠΊΤΙ, ΤΟ ΓΡΑΦΕΊΟ, ΤΟ ΚΑΤΆΣΤΗΜΆ ΣΑΣ. ΕΠΙΚΟΙΝΩΝΉΣΤΕ ΜΕ ΤΗΝ ΟΙΚΟΓΈΝΕΙΑ ΚΑΙ ΠΑΡΑΚΟΛΟΥΘΉΣΤΕ ΤΑ ΚΑΤΟΙΚΊΔΙΆ ΣΑΣ.

21/6/2012. Μέθοδοι Κινηματικής ανάλυσης ΒΑΣΙΚΟΙ ΟΡΙΣΜΟΙ ΣΥΧΝΟΤΗΤΑ ΔΕΙΓΜΑΤΟΛΗΨΙΑΣ ΣΥΧΝΟΤΗΤΑ ΔΕΙΓΜΑΤΟΛΗΨΙΑΣ. Στόχος μεθόδων κινηματικής ανάλυσης

Slalom Race Computer Game on Scratch

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1. Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Πολυτεχνείο Κρήτης Τμήμα ΗΜΜΥ Χειμερινό Εξάμηνο Intelligence Lab. Αυτόνομοι Πράκτορες. Κουσανάκης Βασίλης

Αυτόματος κλιμακοστασίου με τη χρήση PLC. 1 Θεωρητικό μέρος

Μαλούτα Θεανώ Σελίδα 1

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Ένα βιντεοπαιχνίδι είναι ένα ηλεκτρονικό παιχνίδι το οποίο περιλαμβάνει αλληλεπίδραση με μια διεπαφή χρήστη για την παραγωγή οπτικής ανάδρασης σε μια

Προσόντα με υψηλή αξία για τους εργοδότες σε σχέση με την αναπηρία

Ψυχαγωγικό Λογισμικό

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Εικόνες και γραφικά. Τεχνολογία Πολυµέσων 05-1

Ένα αναλογικό σήμα περιέχει άπειρες πιθανές τιμές. Για παράδειγμα ένας απλός ήχος αν τον βλέπαμε σε ένα παλμογράφο θα έμοιαζε με το παρακάτω:

Εισαγωγή στην επανάληψη

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

11/1/18. Κεφάλαιο 2. Κατανόηση των ψηφιακών εξαρτηµάτων. Εξέταση του υπολογιστή: Από τι αποτελείται. Στόχοι. Κατανόηση του υπολογιστή σας

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

Η εργασία που επέλεξες θα σου δώσει τη δυνατότητα να συνεργαστείς με συμμαθητές σου και να σχεδιάσετε μια εικονική εκδρομή με το Google Earth.

ΕΣΔ 200: ΔΗΜΙΟΥΡΓΙΑ ΠΕΡΙΕΧΟΜΕΝΟΥ ΙΙ. Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

ΤΟΠΟΓΡΑΦΙΚΑ ΔΙΚΤΥΑ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑΣΚΟΠΗΣΗ ΘΕΩΡΙΑΣ ΣΥΝΟΡΘΩΣΕΩΝ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

ΣΥΝΔΕΘΕΊΤΕ ΆΨΟΓΑ ΣΤΟΝ ΕΞΩΤΕΡΙΚΌ ΧΏΡΟ ΤΟΥ ΣΠΙΤΙΟΎ ΣΑΣ

ΧΡΩΜΑΤΙΚΟΣ ΤΑΞΙΝΟΜΗΤΗΣ ΜΕ ΡΟΜΠΟΤΙΚΟ ΒΡΑΧΙΟΝΑ ΚΑΙ ΧΡΗΣΗ ΤΟΥ ΜΙΚΡΟΕΛΕΓΚΤΗ BASIC STAMP ΤΗΣ PARALLAX

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ

Εφαρμογές Πληροφορικής

Ένας ψηφιακός κατάλογος για την Κοινωνία της Πληροφορίας. ΤΕΕ Ειδικής Αγωγής 1 Β Βαθμίδας

Βίντεο και κινούµενα σχέδια

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

Προσφερόμενα Διπλώματα (Προσφερόμενοι Τίτλοι)

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Διασύνδεση του Microsoft Kinect με 3D Gaming Engine και υλοποίηση συστήματος Real-Time Dynamic Skeleton Retargeting Φοιτητής: Αρβανίτης Κωνσταντίνος Επιβλέπων Καθηγητής: Κυριάκος Σγάρμπας Αυτή η διπλωματική εργασία υποβάλλεται σε εκπλήρωση των απαιτήσεων για την απόκτηση του πτυχίου Ηλεκτρολόγου Μηχανικού στον Τομέα Τηλεπικοινωνιών & Τεχνολογίας Πληροφορίας Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Πάτρα, Ιούνιος 2015

Διπλωματική Εργασία Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών Αρβανίτη Κωνσταντίνου του Γεωργίου Αριθμός Μητρώου : 6953 Θέμα «Διασύνδεση του Microsoft Kinect με 3D Gaming Engine και υλοποίηση συστήματος Real-Time Dynamic Skeleton Retargeting» Επιβλέπων Σγάρμπας Κυριάκος, Επικ. Καθηγητής Αριθμός Διπλωματικής Εργασίας:

Πάτρα, Ιούνιος 2015 ΠΙΣΤΟΙΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Διασύνδεση του Microsoft Kinect με 3D Gaming Engine και υλοποίηση συστήματος Real-Time Dynamic Skeleton Retargeting» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Αρβανίτη Κωνσταντίνος του Γεωργίου Αριθμός Μητρώου : 6953 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών την / / Ο Διευθυντής του Τομέα Ο Επιβλέπων Νικόλαος Φακωτάκης Καθηγητής Σγάρμπας Κυριάκος Επίκουρος Καθηγητής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ Περίληψη Προπτυχιακό Φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Διασύνδεση του Microsoft Kinect με 3D Gaming Engine και υλοποίηση συστήματος Real-Time Dynamic Skeleton Retargeting από τον Αρβανίτη Κωνσταντίνο Στόχος της παρούσας Διπλωματικής εργασίας είναι η επέκταση των δυνατοτήτων ενός υπάρχοντος 3D Game Engine, συγκεκριμένα του Hive 3D της Eyelead Software, μέσω της διασύνδεσής του με το Microsoft Kinect. Η δυνατότητα διάδρασης ενός ή και περισσοτέρων χρηστών με μία 3D εφαρμογή απουσία φυσικού χειριστηρίου προσθέτει άπειρες δυνατότητες στο σχεδιασμό της. Στα πλαίσια αυτής της εργασίας, σχεδιάστηκε κατάλληλη βιβλιοθήκη C++ για τη διασύνδεση του Microsoft Kinect με το Hive 3D, στα πρότυπα της υπάρχουσας βιβλιοθήκης OpenNI της Primesense, η οποία είχε σχεδιάσει τους αισθητήρες πάνω στους οποίους βασίστηκε το Microsoft Kinect. Η βιβλιοθήκη αυτή προσφέρει στο χρήστη απλοποιημένη πρόσβαση στις λειτουργίες του Microsoft Kinect, καθώς και τη δυνατότητα προσαρμογής της κίνησης του χρήστη σε κάθε 3D model ανεξαρτήτως σκελετού ή σειράς περιστροφής του μοντέλου. Aim of this thesis is the expansion of an existing 3D Game Engine s abilities, more precisely of Hive3D from Eyelead Software, through an interface with Microsoft Kinect. The possibility of interactivity between one or more users with a 3D application without a physical controller provides endless possibilities during its design. For the purposes of this thesis, a C++ library has been designed in order to connect Microsoft Kinect with Hive3D, based on the existing library OpenNI from Primesense, the sensors of which were the prototype of Microsoft Kinect. This library gives the user simplified access to Microsoft Kinect s features, as well as the ability to adapt user s motions to a 3D model regardless its skeleton or its rotation order.

Ευχαριστίες Θα ήθελα κατ αρχήν να ευχαριστήσω θερμά το καθηγητή μου Κυριάκο Σγάρμπα, του οποίου οι υποδείξεις και η διάθεση για προσφορά ήταν πραγματικά σημαντική. Επίσης, θα ήθελα να ευχαριστήσω τον CTO της Eyelead Software, Ιωσήφ Ψιστάκη, ο οποίος κατείχε σημαντικό ρόλο στο κομμάτι της επίβλεψης και κυρίως της καθοδήγησης. Οι παρατηρήσεις του και η έμπρακτη βοήθειά του ήταν τουλάχιστον απαραίτητες για την ολοκλήρωση της βιβλιοθήκης και μάλιστα σε αυτό το επίπεδο. Ακόμα, θα ήθελα να ευχαριστήσω τον Σωκράτη Γαλιατσάτο, graphic designer της Eyelead Software, για την βοήθειά του στην παροχή υλικού και εμπειρίας, αλλά και τον Ιάσονα Νικόλα, συμφοιτητή και συνεργάτη εντός της Eyelead Software για την πραγματικά σημαντική βοήθειά του. Κλείνοντας, θα ήθελα να ευχαριστήσω ιδιαίτερα την οικογένειά μου, τους φίλους μου και όσους ανθρώπους ήταν κοντά μου όλο αυτό το διάστημα για την υποστήριξή τους. Χωρίς την υπομονή τους και την στήριξή τους η αποπεράτωση του έργου μου θα ήταν αρκετά πιο επώδυνη.

Περιεχόμενα 1 Microsoft Kinect...1 1.1 Σύντομη Περιγραφή...1 1.2 Ιστορικά Στοιχεία...1 1.2.1 Εξέλιξη του Kinect...1 1.2.2 Πρόγονοι...2 1.2.3 Παρόμοια εξαρτήματα...3 1.2.4 Ανταγωνισμός...3 1.2.5 Απόγονοι...3 1.3 Τεχνολογία...4 1.3.1 Κάμερα RGB...5 1.3.2 Κάμερα βάθους...5 1.3.3 Κινητήρας κλίσης...6 1.3.4 Σειρά μικροφώνων...6 1.4 Πώς λειτουργεί...6 1.4.1 Κατασκευή πίνακα βάθους...6 1.4.2 Προσδιορισμός θέσης σώματος...7 1.4.3 Δημιουργία βάσης δεδομένων...7 1.4.4 Προσδιορισμός των μελών σώματος και αρθρώσεων εικονικού σκελετού..9 1.4.5 Εικόνες βάθους...9 1.4.6 Τυχαία δάση απόφασης... 10 1.4.7 Εκπαίδευση δέντρων απόφασης... 10 1.4.8 Προσδιορισμός θέσης αρθρώσεων εικονικού σκελετού... 11 1.5 SDK... 13 1.5.1 Kinect for Windows SDK... 13 1.5.2 OpenNI και NiTE... 14 1.6 Εφαρμογές του Kinect... 14 1.6.1 Εικονική Πραγματικότητα... 14 1.6.2 Ευφυή Περιβάλλοντα... 15 1.6.3 Τεχνητή Όραση και Ρομποτική... 17 1.6.4 Αναπηρίες... 17 1.6.5 Αναγνώριση χειρονομιών... 18 2 Hive 3D... 20 2.1 Ορισμός Game Engine... 20 2.2 Eyelead Software... 20 2.3 Hive 3D... 20 2.3.1 Αρχιτεκτονική... 20

2.3.2 Στοιχεία... 22 2.4 Άλλες γνωστές Game engines... 25 2.4.1 Unity... 25 2.4.2 Unreal Engine 4... 26 2.4.3 CryENGINE... 26 3 Υλοποίηση... 27 3.1 Στόχος... 27 3.2 Επιλογή SDK... 27 3.3 Κανόνες χτισίματος βιβλιοθήκης... 28 3.4 Skeleton Retargeting... 29 3.5 Εφαρμογές... 32 3.6 Hive3D API και Skeleton Retargeting... 33 3.7 Συμπεράσματα... 35 3.8 Μελλοντικές Βελτιώσεις... 35 Βιβλιογραφία... 37 Παράρτημα Α... 39 Λίστα Συναρτήσεων Βιβλιοθήκης... 39 Παράρτημα Β... 43 Wiki page Βιβλιοθήκης... 43

1 Microsoft Kinect 1.1 Σύντομη Περιγραφή Το Microsoft Kinect είναι μία περιφερειακή συσκευή εισόδου που επιτρέπει την ανίχνευση και την καταγραφή της ανθρώπινης κίνησης και φωνής. Η συσκευή προσφέρει Φυσική Διεπαφή Χρήστη (Natural User Interface - NUI) που επιτρέπει στους χρήστες να αλληλεπιδρούν ενστικτωδώς και χωρίς την παρουσία ενδιάμεσης συσκευής, όπως ένα χειριστήριο. Είναι διαθέσιμο για το XBOX 360 καθώς και για Windows PC. Αν και αρχικά αναπτύχθηκε για την χρησιμοποίησή του σε παιχνίδια, η τεχνολογία του εφαρμόστηκε και σε πιο πρακτικές εφαρμογές όπως στην εκπαίδευση, την τηλεϊατρική, τις διαδικτυακές αγορές και τη διαφήμιση. 1.2 Ιστορικά Στοιχεία 1.2.1 Εξέλιξη του Kinect Παρουσιάστηκε επίσημα για πρώτη φορά τον Ιούνιο του 2009 στο 15ο Electronic Entertainment Expo (E3) στο Los Angeles με το όνομα Project Natal. Ακολουθώντας την παράδοση στην Microsoft να χρησιμοποιούν πόλεις ως κωδικές ονομασίες των projects, το Project Natal πήρε το όνομά του από την πόλη Natal της Βραζιλίας, από την οποία κατάγεται ο υπεύθυνος του project Alex Kipman. Ωστόσο, το όνομα έχει και μια δεύτερη ανάγνωση, καθώς natal σημαίνει «γενετήσιος, σχετικός με γέννηση», αντικατοπτρίζοντας το όραμα της Microsoft για το project ως «την γέννηση της νέας γενιάς της οικιακής διασκέδασης». Αν και η αρχική πρόθεση ήταν ο αισθητήρας να περιέχει ανεξάρτητο μικροεπεξεργαστή, ο οποίος θα εκτελεί διεργασίες όπως ο εντοπισμός σκελετού, τον Ιανουάριο του 2010 αποκαλύφθηκε ότι κάτι τέτοιο δεν θα ισχύσει τελικά. Αντίθετα, την επεξεργασία των δεδομένων θα διαχειρίζεται ένας από τους πυρήνες του ΧΒΟΧ360, δεσμεύοντας μονοψήφιο ποσοστό της διαθέσιμης υπολογιστικής ισχύος, σύμφωνα με δηλώσεις του Alex Kipman. Η επίσημη παρουσίαση του project έγινε στις 13 Ιουνίου του 2010 και πάλι στα πλαίσια του E3 στο Calen Center. Εκεί ανακοινώθηκε ότι το επίσημο όνομα της συσκευής θα ήταν Kinect, ένας συγκερασμός των λέξεων kinematic και connect. Τον Νοέμβριο του ίδιου έτους ξεκίνησε η επίσημη κυκλοφορία του στη Βόρεια Αμερική, στην Αυστραλία, στην Ιαπωνία και στην Ευρώπη. Το ποσό που διατέθηκε στα πλαίσια της διαφημιστικής καμπάνιας ήταν μεγαλύτερο από το αντίστοιχο ποσό που διατέθηκε για την ανάπτυξη του αρχικού XBOX. Αυτό σε συνδυασμό και με την επανάσταση που έφερε η συσκευή, οδήγησε στην κατάκτηση του ρεκόρ Guinness ως το περιφερειακό παιχνιδοκονσόλας με τις γρηγορότερες πωλήσεις, καθώς τις πρώτες 60 μέρες κυκλοφορίας του (4 Νοεμβρίου 2010 3 Ιανουαρίου 2011) πουλήθηκαν κατά μέσο όρο 133.333 συσκευές την ημέρα. 1

1.2.2 Πρόγονοι Power Glove Αν και το Kinect ήταν η πραγματική επανάσταση στην ανίχνευση κίνησης στα παιχνίδια, η πρώτη εταιρεία η οποία προσπάθησε να ωθήσει την αγορά προς αυτή την κατεύθυνση ήταν η Nintendo. Το 1989, η Mattel και η PAX σχεδίασαν για το NES το Power Glove, ένα γάντι χειριστήριο με κουμπιά αντίστοιχα με το χειριστήριο του NES συν ένα πάνελ αριθμών από το 0 μέχρι το 9 κι ένα κουμπί προγραμματισμού. Ο χρήστης πατούσε το κουμπί προγραμματισμού κι έναν αριθμό για να δώσει εντολές, όπως η αλλαγή του ρυθμού πυροβολισμών των κουμπιών A και B. Το πιο σημαντικό όμως είναι ότι με το Power Glove ο παίχτης μπορεί να εκτελέσει διάφορες κινήσεις με το χέρι του για να ελέγξει τον χαρακτήρα στην οθόνη. Οι αισθητήρες στο Power Glove βασίζονται σε οπτικές ίνες, οι οποίες είναι φθαρμένες κοντά στο σημείο που λυγίζουν ώστε να προκαλείται η μετάδοση λιγότερου φωτός όταν λυγίζουν. Υπάρχουν δυο ηχεία υπερήχων (πομποί) στο γάντι και τρία μικρόφωνα υπερήχων (δέκτες) στην οθόνη. Τα ηχεία υπερήχων εκπέμπουν κατά σειρά έναν μικρό αριθμό παλμών συχνότητας 40 khz και το σύστημα μετράει το χρόνο που χρειάζεται ο ήχος να φτάσει το μικρόφωνα. Ένας υπολογισμός τριγωνισμού εκτελείται για να προσδιορίσει τις συντεταγμένες X,Y και Z κάθε ηχείου, οι οποίες και προσδιορίζουν της περιστροφή του χεριού ως προς τους άξονες Y και Z. Η μόνη περιστροφή που δεν μπορεί να υπολογιστεί είναι ως προς τον X άξονα του χεριού, καθώς μπορεί να περιστρέφεται ως προς αυτόν χωρίς να αλλάζει η θέση των ηχείων. Αποτελεί μια φτηνότερη εκδοχή του VPL DataGlove, προσαρμοσμένο όμως για να μπορεί να χρησιμοποιηθεί από υποδεέστερο hardware και σε πιο προσιτή τιμή. Μόλις 2 παιχνίδια βγήκαν στην αγορά για το Power Glove : το Super Glove Ball, ένα 3D παιχνίδι λαβυρίνθου και το Bad Street Brawler, ένα παιχνίδι μάχης. Οι πωλήσεις τους ήταν πολύ φτωχές, όπως ήταν και οι γενικότερες πωλήσεις και κριτικές του Power Glove. Wii Η επόμενη κίνηση ήταν πάλι από πλευράς Nintendo και μάλιστα στήριξε μια ολόκληρη κονσόλα πάνω της. Ο λόγος για το Wii, η πρώτη κονσόλα, η οποία έφερε πραγματική επανάσταση στον τρόπο χειρισμού των παιχνιδιών, καθώς πλέον οι κινήσεις που εκτελείς με το χέρι ήταν ο βασικός τρόπος χειρισμού των περισσότερων παιχνιδιών του κι όχι απλά μία εντυπωσιακή εναλλακτική όπως ίσχυε κατά κόρον στο NES με το Power Glove. Μέλος της έβδομης γενιάς παιχνιδοκονσόλων (μαζί με το XBOX360 και το Playstation 3), κυκλοφόρησε στις 19 Νοεμβρίου του 2006 στη Βόρειο Αμερική, ενώ μέσα στο Δεκέμβρη του ίδιου έτους κυκλοφόρησε και σε Ιαπωνία, Αυστραλία και Ευρώπη. Η κονσόλα κυκλοφόρησε μαζί με τα χειριστήριά της, το Wii Remote και το Nunchuck, και έναν αισθητήρα κίνησης. To Wii Remote όντας το βασικό χειριστήριο της κονσόλας, περιέχει ενσωματωμένα επιταχυνσιόμετρα και εντοπιστή υπέρυθρων για να προσδιορίζεται η θέση τους όταν δείχνουν προς τα LED του αισθητήρα κίνησης. Αυτός ο σχεδιασμός δίνει στον χρήστη τη δυνατότητα να ελέγχει το παιχνίδι εκτελώντας φυσικές κινήσεις παράλληλα με το πάτημα κουμπιών. Το χειριστήριο συνδέεται με την κονσόλα μέσω Bluetooth και περιλαμβάνει δόνηση και εσωτερικό ηχείο. Το Nunchuck συνδέεται με το Wii Remote μέσω καλωδίου, επεκτείνοντας με αυτό τον τρόπο της δυνατότητες χειρισμού, καθώς πέρα από αναλογικό μοχλό και 2 κουμπιά, έχει ενσωματωμένο ξεχωριστό επιταχυνσιόμετρο. 2

Οι πωλήσεις του ήταν εντυπωσιακές, καθώς μέχρι τον Ιούνιο του 2014 έχουν πωληθεί 101.15 εκατομμύρια κομμάτια παγκοσμίως, καθιστώντας έτσι το Wii ως την οικιακή κονσόλα της Nintendo με τις περισσότερες πωλήσεις και την τρίτη σε πωλήσεις οικιακή κονσόλα πίσω από PlayStation 2 και PlayStation. Οι κριτικές ήταν ανάμικτες, καθώς τον αρχικό ενθουσιασμό από τους κριτικούς κατά την περίοδο της πρώτης εμφάνισής του, διαδέχτηκε η επιφυλακτικότητα των χρηστών κυρίως λόγω της ανάγκης διαρκούς κίνησης του χρήστη, καθώς και του υποδεέστερου hardware σε σύγκριση με τον ανταγωνισμό. 1.2.3 Παρόμοια Εξαρτήματα Η πιο απλή χρήση του Kinect, η οποία υπήρξε και το αντικείμενο εκμετάλλευσής του από hackers κατά την πρώτη περίοδο κυκλοφορίας του, είναι ως webcam. Ωστόσο, το Kinect σαφώς και δεν ήταν πρωτοπόρο σε αυτό το κομμάτι, καθώς πριν από αυτό προηγήθηκαν πολλά αντίστοιχα εξαρτήματα είτε σε οικιακές είτε σε φορητές κονσόλες. Αντίστοιχες συσκευές ήταν το DreamEye για το Dreamcast, το GameBoy Camera για το Game Boy Color, το EyeToy για το Playstation 2 και το Xbox Live Vision Camera για το Xbox 360. 1.2.4 Ανταγωνισμός Πέρα από το Wii, το οποίο, αν και ήδη αναφέρθηκε ως πρόγονος λόγω της μεγάλης χρονικής απόστασης μεταξύ της κυκλοφορίας τους στην αγορά, ανήκει στην ίδια γενιά με το Xbox 360, ανταγωνιστικό προϊόν είναι το PS Eye που κυκλοφόρησε για το PlayStation 3. Ωστόσο, η λειτουργία του είναι περισσότερο κοντά στο Wii παρά στο Kinect, καθώς εντοπίζει την κίνηση των αντίστοιχων χειριστηρίων του PlayStation 3, γνωστά ως PS Move. Σε σχέση με τα κλασικά χειριστήρια του Wii έχουν πολύ καλύτερη απόκριση, ενώ σε σχέση με το Kinect το PS Eye υπερτερεί στα μέγιστα παραγόμενα fps ( 60 έναντι 30 του Kinect), αν και έχουν ίδια ανάλυση κάμερας, γεγονός που δικαιολογεί την καλύτερη απόκριση του PS Eye. Πρακτικά, μιλάμε για συσκευές με διαφορετική φιλοσοφία, καθώς το PS Eye μπορεί να θεωρηθεί ως ένα καλύτερο Wii (μέχρι πριν την έκδοση του Wii Motion Plus controller που εξισορρόπησε την απόσταση), ενώ το Kinect είναι ένα βήμα μπροστά όσο αφορά την τεχνολογία, αλλά και τη φιλοσοφία. Αν ψάξουμε για ίδιες στη λειτουργία συσκευές, θα συναντήσουμε το Carmine της Primesense και το Xtion της Asus, που πρακτικά είναι ακριβώς η ίδια συσκευή, μόνο που είναι συμβατές μόνο με υπολογιστή. Σε σχέση με το Kinect είναι ελαφρώς ανώτερες στον τεχνικό τομέα, καθώς είναι μικρότερες, παρέχουν καλύτερη ποιότητα RGB εικόνας, ενώ όταν χρησιμοποιούνται δύο συσκευές ταυτόχρονα το αποτέλεσμα είναι καλύτερο, καθώς υπάρχουν λιγότερες παρεμβολές. Εντούτοις, η τεράστια διαφορά στις πωλήσεις σε σχέση με το Kinect τις καθιστά εμπορικά ακίνδυνες ανταγωνίστριες. 1.2.5 Απόγονοι Η επόμενη γενιά παιχνιδικονσόλων έφερε και την εμφάνιση περισσότερων εξαρτημάτων εντοπισμού κίνησης. Η Nintendo, αν και πρωτοπόρος σε αυτό τον τομέα, προτίμησε να μην εξελίξει την προηγούμενη τεχνολογία που εισήγαγε μέσω του Wii. Απεναντίας, το Wii U, η επόμενη κονσόλα της Nintendo, έδωσε προτεραιότητα στην δραστική αλλαγή της μορφής των χειριστηρίων προχωρώντας από το Wii Remote στο Wii U GamePad. Από την πλευρά της η Sony απομακρύνθηκε από το μοτίβο του Wii 3

που ακολούθησε με το Ps Eye και κινήθηκε πιο κοντά στη λογική του Kinect. Το PlayStation Camera του PS4 και πάλι χρειάζεται χειριστήριο για τον εντοπισμό του χρήστη και τον χειρισμό της κονσόλας, ωστόσο σε σχέση με τον προκάτοχό του είναι πολύ πιο κοντά στα πρότυπα φυσικής διάδρασης χρήστη που εισήγαγε το Kinect. Τέλος, η Microsoft έκανε ένα εντυπωσιακό άλμα καθώς το Kinect 2 για το Xbox One είναι πολύ ανώτερο τεχνικά και από το κλασικό Kinect αλλά και από κάθε ανταγωνιστική συσκευή. Διατηρώντας το καθαρό NUI που εισήγαγε το Kinect, πηγαίνει πολλά βήματα παραπέρα. Ο εντοπισμός 6 χρηστών αντί για 2 και μάλιστα με πολύ μεγαλύτερη ακρίβεια, η αναγνώριση εκφράσεων προσώπου, φωνητικών εντολών, ακόμα και του σφυγμού του χρήστη, η δυνατότητα λειτουργίας στο σκοτάδι και ο άμεσος προσδιορισμός του περιβάλλοντος του χρήστη είναι ανάμεσα στα πολλά εντυπωσιακά που μπορεί να κάνει το Kinect One. Ειδική αναφορά πρέπει να γίνει και στο Capri της Primesense, το 3D sensor που προορίζεται για μικρές συσκευές όπως κινητά και τα tablets. Μέχρι αυτή τη στιγμή δεν έχει βγει επίσημα στην αγορά, ωστόσο είναι σίγουρο ότι θα ανοίξει καινούργιους ορίζοντες λόγω των υψηλών δυνατοτήτων του και της κατά πολύ μεγαλύτερης φορητότητάς του. Feature Kinect for Windows Kinect for Windows 1 2 Color Camera 640 x 480 @30 fps 1920 x 1080 @30 fps Depth Camera 320 x 240 512 x 424 Max Depth Distance ~4.5 M 8 M Min Depth Distance 40 cm in near mode 50 cm Depth Horizontal Field of 57 degrees 70 degrees View Depth Vertical Field of 43 degrees 60 degrees View Tilt Motor yes no Skeleton Joints Defined 20 joints 25 joints Full Skeletons Tracked 2 6 USB Standard 2.0 3.0 Supported OS Win 7, Win 8 Win 8 Price $249 $199 1.3 Τεχνολογία Το Kinect βασίζεται σε λογισμικό που έχει αναπτύξει η Rare, θυγατρική της Microsoft Game Studios, και σε τεχνολογία κάμερας εύρους της Ισραηλινής εταιρείας PrimeSense, η οποία ανέπτυξε ένα σύστημα που αναγνωρίζει συγκεκριμένες κινήσεις των χεριών του χρήστη, καθιστώντας δυνατή τη χρήση ηλεκτρονικών συσκευών χωρίς την ανάγκη χειριστηρίων μέσω υπεριώδους προβολέα και αισθητήρα και ενός ειδικού microchip για να ακολουθεί την κίνηση αντικειμένων και ατόμων στις τρεις διαστάσεις. 4

Μπορεί να εντοπίσει μέχρι και έξι άτομα, εκ των οποίων τα δύο να είναι ενεργοί παίχτες. Λειτουργεί ιδανικά σε ένα εύρος απόστασης μεταξύ 1.2m και 3.5m, αν και μπορεί να διατηρήσει τον εντοπισμό του χρήστη σε εύρος 0.7m μέχρι 7m. Ο χώρος κίνησης που απαιτείται από το χρήστη είναι περίπου 6m 2. 1.3.1 Κάμερα RGB Ο ρόλος της RGB κάμερας είναι πολύ μικρότερος σε σύγκριση με τις υπόλοιπες κάμερες που είναι ενσωματωμένες στο Kinect. Ονομάζεται RGB εκ του Red Green Blue ( Κόκκινο Πράσινο Μπλε), των χρωμάτων δηλαδή που εντοπίζει μέσω του φίλτρου χρώματος Bayer που έχει. Λειτουργεί ως πηγή video είτε για απλή καταγραφή ή για video chat μεταξύ χρηστών, ενώ μέσω αυτής γίνεται η αναγνώριση προσώπου του χρήστη. Παρέχει βίντεο 8-bit VGA ανάλυσης 640 x 480 στα 30 frames per second (fps), ωστόσο το υλικό είναι ικανό να παρέχει βίντεο ανάλυσης μέχρι και 1280 x 1024, με χαμηλότερο όμως frame rate καθώς και βίντεο διαφορετικού format, όπως YUV. Γενικά, το frame rate ανάλογα με την ανάλυση κυμαίνεται από ~9Hz μέχρι 30 Hz. Τέλος, έχει γωνιακό πεδίο όρασης 62 οριζόντια και 49 κάθετα Πέρα από την προφανή λειτουργία του ως παροχή video για τις δυνατότητες video chat μεταξύ χρηστών, η RGB κάμερα προσφέρει τα απαραίτητα στοιχεία για να είναι εφικτή η αναγνώριση προσώπου. 1.3.2 Κάμερα βάθους Η κάμερα βάθους παρέχει μονόχρωμο βίντεο βάθους σε VGA ανάλυση (320x240) με 16-bit βάθος και 2.048 επίπεδα ευαισθησίας. Το Kinect μπορεί επίσης να προβάλει εικόνα απευθείας από την IR κάμερα ακόμα και σε ανάλυση 1280x1024 σε χαμηλότερο όμως frame rate. Το γωνιακό πεδίο όρασης της κάμερας βάθους είναι 57 οριζόντια και 43 κάθετα και η απόσταση βέλτιστης λειτουργίας είναι μεταξύ 0.8m και 3.5m. 5

1.3.3 Κινητήρας κλίσης Ο κινητήρας κλίσης στη βάση του Kinect μπορεί να στρέφει τη συσκευή κατά 27 προς τα πάνω ή προς τα κάτω, αλλάζοντας το πεδίο όρασης των αισθητήρων αντίστοιχα. Επειδή, το μοτέρ κλίσης χρειάζεται περισσότερη ενέργεια από όση μπορούν να δώσουν οι USB θύρες του Xbox 360, η συσκευή χρησιμοποιεί έναν επιπρόσθετο αντάπτορα που συνδυάζει την επικοινωνία μέσω USB και την παροχή επιπρόσθετης ενέργειας. Τα επόμενα μοντέλα Xbox 360 περιλαμβάνουν μία ειδική AUX θύρα που διορθώνει αυτή την ανάγκη. 1.3.4 Σειρά μικροφώνων Η σειρά μικροφώνων αποτελείται από 4 μικρόφωνα, ποιότητας ήχου 16-bit με συχνότητα δειγματοληψίας 16kHz. Έχουν δυνατότητα απομόνωσης θορύβου και ενίσχυσης φωνής καθώς και αναγνώρισης φωνητικών εντολών σε πολλές γλώσσες. Στην αρχή, η φωνητική αναγνώριση ήταν διαθέσιμη μόνο στην Ιαπωνία, τις ΗΠΑ, τον Καναδά και το Ηνωμένο Βασίλειο. Πλέον, αυτή η δυνατότητα υποστηρίζεται σε 11 χώρες σε όλο τον κόσμο. 1.4 Πώς λειτουργεί Αντίθετα με το προφανές συμπέρασμα ότι το Kinect μέσω του εξοπλισμού και μιας σειράς αλγορίθμων υπολογίζει τις κινήσεις του σώματος του χρήστη, η αλήθεια είναι ελαφρώς διαφορετική. Πρακτικά, το Kinect «συμπεραίνει» τις κινήσεις που εκτελεί ο χρήστης. Η διαδικασία του προσδιορισμού της θέσης του σώματος αποτελείται από 3 στάδια. Πρώτα, κατασκευάζεται ένας χάρτης βάθους (depth map) χρησιμοποιώντας την τεχνική δομημένου φωτός, στην συνέχεια προσδιορίζονται τα μέλη σώματος μέσω εκμάθησης μηχανής (machine learning) που έχει προηγηθεί και, τέλος, υπολογίζονται οι θέσεις των αρθρώσεων ενός 3D σκελετού που αναπαριστά τη θέση και την στάση του χρήστη. Τα μαθηματικά που χρησιμοποιεί το σύστημα είναι πανεπιστημιακού επιπέδου. 1.4.1 Κατασκευή πίνακα βάθους Το Kinect χρησιμοποιεί έναν προβολέα και έναν αισθητήρα υπέρυθρων και όχι την RGB κάμερα για τον υπολογισμό του βάθους. Η RGB κάμερα, ωστόσο, χρησιμοποιείται σε μεγάλο βαθμό κατά την βελτιστοποίηση των δεδομένων. Η τεχνική της ανάλυσης ενός ήδη γνωστού μοτίβου ονομάζεται τεχνική δομημένου φωτός και 6

ορίζει ότι προβάλλοντας ένα γνωστό μοτίβο πάνω στη σκηνή, μπορείς να συμπεράνεις το βάθος από την παραμόρφωση του μοτίβου σε κάθε σημείο. Το Kinect συνδυάζει το δομημένο φως, εκπέμποντας μέσω του προβολέα ένα γνωστό μοτίβο στιγμάτων, με δύο κλασικές τεχνικές της υπολογιστικής όρασης: τον υπολογισμό βάθους μέσω εστίασης και τον στεροσκοπικό υπολογισμό βάθους. Ο υπολογισμός βάθους μέσω εστίασης βασίζεται στο γεγονός ότι τα αντικείμενα φαίνονται πιο θολά, όσο πιο μακριά βρίσκονται. Το Kinect βελτιώνει δραματικά την ακρίβεια αυτής τεχνικής, καθώς χρησιμοποιεί έναν αστιγματικό φακό με διαφορετικά μήκη εστίασης για την κατεύθυνση στον x και στον y άξονα. Οπότε, όταν ο προβολέας δείχνει έναν κύκλο, πρακτικά γίνεται μία έλλειψη της οποίας ο προσανατολισμός μεταβάλλεται ανάλογα με το βάθος. Αντίστοιχα, ο στερεοσκοπικός υπολογισμός βάθους προκύπτει από την έννοια της παράλλαξης, η οποία δηλώνει ότι η αλλαγή της θέσης του παρατηρητή οδηγεί σε αλλαγή της γωνίας του προς παρατήρηση αντικειμένου σε σχέση με αυτόν. Οπότε, όταν παρατηρείς τη σκηνή από διαφορετική γωνία, τα αντικείμενα τα οποία βρίσκονται κοντά μετακινούνται περισσότερο σε σχέση με τα αντικείμενα που βρίσκονται μακριά. Το Kinect αναλύει τη μεταβολή της γωνίας ενός μοτίβου σημείων προβάλλοντάς το από μία θέση και παρατηρώντας το από μια άλλη. Αυτός είναι και ο ρόλος του προβολέα και του αισθητήρα υπέρυθρων. 1.4.2 Προσδιορισμός θέσης σώματος Η αρχική και πλέον κλασική προσέγγιση που είχε χρησιμοποιηθεί μέχρι τότε στους αισθητήρες κίνησης ήταν η εξής: ο χρήστης έπρεπε αρχικά να μείνει για μερικά δευτερόλεπτα σε μία στάση προσαρμογής (PSI Pose), έτσι ώστε ο αλγόριθμος να εντοπίσει τα μέλη του σώματος κάνοντας απλή αντιστοίχιση. Από εκεί και πέρα τα πράγματα ήταν απλά, καθώς αρκούσε ο αλγόριθμος εντοπισμού να ακολουθεί την κίνηση του σώματος. Η βασική ιδέα πίσω από αυτό είναι ότι όταν έχεις μία περιοχή αναγνωρισμένη ως χέρι στο πρώτο frame, στο επόμενο frame το χέρι δεν γίνεται να έχει μετατοπιστεί πολύ μακριά, οπότε απλά προσπαθεί να κάνει αντιστοίχιση σε περιοχές κοντινές στην προηγούμενη θέση. Θεωρητικά αυτοί οι αλγόριθμοι είναι καλοί, ωστόσο πρακτικά αποτυγχάνουν όταν η θέση του σώματος χαθεί για κάποιο λόγο και είναι ιδιαίτερα κακοί στο να αντιμετωπίζουν την ύπαρξη άλλων αντικειμένων, τα οποία εμποδίζουν τον εντοπισμό του χρήστη, ακόμα και για πολύ μικρό χρονικό διάστημα. Επιπρόσθετα, ο εντοπισμός παραπάνω του ενός χρηστών ταυτόχρονα είναι δύσκολος, ενώ μόλις χαθεί η θέση του σώματος, χρειάζεται χρόνος για να επανεντοπιστεί, αν και εφόσον είναι εφικτό. Η αντιμετώπιση της Microsoft σε αυτό το ζήτημα ήταν να σχεδιάσουν ένα σύστημα εντοπισμού της θέσης του σώματος, το οποίο δεν θα βασιζόταν στον εντοπισμό του κάθε μέλους του σώματος, αλλά στην τοπική ανάλυση κάθε pixel. 1.4.3 Δημιουργία Βάσης Δεδομένων Γενικά, το ανθρώπινο σώμα είναι ικανό να εκτελέσει ένα τεράστιο εύρος στάσεων - κινήσεων (poses), οι οποίες είναι δύσκολο να προσομοιωθούν. Αντί αυτού, η ομάδα έρευνας της Microsoft δημιούργησε μία μεγάλη βάση δεδομένων ανθρώπινων κινήσεων μέσω motion capture (mocap). Ο στόχος ήταν να κρατήσουν την ευρεία ποικιλία στάσεων που παίρνουν οι άνθρωποι σε μία υποθετική δραστηριότητα διασκέδασης. Η βάση δεδομένων αποτελείται από περίπου 500.000 frames μερικών εκατοντάδων ενεργειών όπως οδήγηση, χορός, λακτίσματα, τρέξιμο, περιήγηση σε 7

menus κτλ. Στην περίπτωση μη ορατών στάσεων, περιμένουμε από το σύστημα να προβεί σε γενίκευση των δεδομένων. Πιο συγκεκριμένα, δεν χρειάζεται να καταγράφονται όλοι οι πιθανοί συνδυασμοί των διάφορων άκρων, καθώς ένα μεγάλο εύρος στάσεων είναι επαρκές. Επίσης, δεν χρειάστηκε να καταγράψουνε σε mocap τις περιστροφές ή την συμμετρία στον κατακόρυφο άξονα, τη θέση της σκηνής, το σχήμα και το μέγεθος του σώματος ή τη θέση της κάμερας, καθώς όλα αυτά προκύπτουν (ημι) αυτόματα. Καθώς το σύστημα δεν χρησιμοποιεί συνεχή δεδομένα, αυτό που πρακτικά ενδιαφέρει είναι μόνο στατικές πόζες και όχι κίνηση. Συχνά, αλλαγές στην στάση από ένα mocap frame σε ένα άλλο είναι τόσο μικρές που είναι αμελητέες. Οπότε, αποβάλλονται πολλές παρόμοιες, περιττές στάσεις σε σχέση με το Δείγματα από 3D μοντέλα που χρησιμοποιούνται στη βάση δεδομένων. Πάνω στήλη: Απλά μοντέλα Κάτω στήλη: Μοντέλα με τυχαίο ρουχισμό και μαλλιά - μούσια αρχικό mocap δεδομένο, χρησιμοποιώντας το αλγόριθμο ομαδοποίησης "πιο μακρινού γείτονα" (furthest neighbor clustering), όπου η απόσταση ανάμεσα στις στάσεις p1 και p2 ορίζεται ως max j p 1 j - p 2 j 2, η μέγιστη Ευκλείδεια απόσταση των μελών j του σώματος. Καταλήγουμε σε ένα υποσύνολο 100.000 στάσεων, τέτοιες ώστε καμία στάση να μην έχει απόσταση μικρότερη από 5cm σε σχέση με μία άλλη. Η διαρκής επανάληψη της διαδικασίας του mocap, της δειγματοληψίας από το μοντέλο, της εκπαίδευσης του συστήματος και του ελέγχου της ακρίβειας πρόβλεψης των αρθρώσεων του σκελετού ήταν απαραίτητη, έτσι ώστε να βελτιστοποιηθεί η ποιότητα της mocap βάσης δεδομένων με περιοχές από τμήματα στάσεων που δεν είχαν συμπεριληφθεί. Τα πρώτα πειράματα έγιναν με τη mocap βάση δεδομένων του Carnegie Mellon University (CMU) που είχαν αποδεκτά αποτελέσματα, αν και καλύφθηκε πολύ μικρότερο εύρος περιοχών από στάσεις. 8

Οι ερευνητές δημιούργησαν μια τυχαία δρομολόγηση εκτέλεσης διεργασιών μέσω της οποίας μπορούσαν να πειραματιστούν με δοκιμαστικές εικόνες με ήδη ονομασμένα τα μέλη του σώματος. Οι στόχοι ήταν δύο, ρεαλισμός και ποικιλία. Για να δουλέψει σωστά το υπό εκπαίδευση μοντέλο, έπρεπε τα δείγματα να μοιάζουν πολύ με κανονικές εικόνες και να περιλαμβάνουν μεγάλο εύρος των πιθανών διαφοροποιήσεων στην εμφάνιση που ήλπιζαν να αναγνωριστούν κατά τη διάρκεια των δοκιμών. Αν και τυχόν διαφοροποιήσεις στο βάθος/κλίμακα της εικόνας και στη μετατόπιση του σώματος του χρήστη μπορούν να υπολογιστούν από επεξεργασία των δεδομένων, άλλες αλλαγές όπως η θέση της κάμερας, η θέση του σώματος και το μέγεθος και το σχήμα του σώματος δεν γίνεται να υπολογιστούν, οπότε προκύπτουν κατευθείαν ως δεδομένα που εξάγουμε από τις εικόνες. Η διαδικασία δειγματοληψίας ξεκινάει παίρνοντας ως δείγματα από συνθετικά μοντέλα ένα τυχαίο σύνολο παραμέτρων και στη συνέχεια, χρησιμοποιώντας κλασικές τεχνικές γραφικών, υπολογίζεται το βάθος και σχεδιάζονται εικόνες τμημάτων του σώματος έχοντας ως βάση 3D μοντέλα. Στη συνέχεια, γίνεται αντιστοίχιση με κάποιο από τα 15 μοντέλα αναφοράς, ανάλογα με το μέγεθος και το σχήμα του σώματος, χρησιμοποιώντας το MotionBuilder. Άλλες τυχαίες μεταβλητές που επηρεάζουν το αποτέλεσμα είναι η θέση κάμερας, ο θόρυβος κάμερας, ο ρουχισμός και η κόμμωση του χρήστη. 1.4.4 Προσδιορισμός μελών σώματος και αρθρώσεων εικονικού σκελετού Ένα ιδιαίτερα σημαντικό κομμάτι είναι η ονοματοδοσία των ενδιάμεσων τμημάτων του σώματος. Ορίζονται πολλές ετικέτες για τα μέλη του σώματος, χρησιμοποιώντας χρωματικό κώδικα, οι οποίες καταλήγουν να καλύπτουν πλήρως το σώμα. Κάποια από αυτά τα μέλη προσδιορίζονται για να προκύπτουν άμεσα από αυτά οι αρθρώσεις του σκελετού που αναπαριστά τις κινήσεις του χρήστη, ενώ άλλα απλά καλύπτουν τα ενδιάμεσα κενά ή είναι απαραίτητα για την πρόβλεψη της θέσης άλλων αρθρώσεων. Η ακρίβεια αυτού του τρόπου προσδιορισμού μπορεί να αλλάξει ανάλογα με την αντίστοιχη εφαρμογή. Για παράδειγμα μία εφαρμογή που χρειάζεται μόνο το πάνω μέρος του σώματος, μπορεί να δεχθεί το κάτω μέρος ως ένα ενιαίο κομμάτι, για εξοικονόμηση χώρου και πόρων. Τα μέλη πρέπει να διαχωρίζονται με τέτοιο τρόπο ώστε να είναι μεν επαρκώς μικρά για να γίνεται σωστά η αντιστοίχιση, αλλά όχι τόσο πολυάριθμα ώστε να προκύπτει σπατάλη χώρου στο σύστημα. 1.4.5 Εικόνες βάθους Χρησιμοποιούμε απλά στοιχεία για τη σύγκριση βάθους. όπου το d Ι(x) είναι το βάθος στο pixel x στην εικόνα Ι και οι παράμετροι θ = (u,v) είναι τα δοθέντα διανύσματα θέσης u και v. Η κανονικοποίηση των διανυσμάτων θέσης κατά 1/d I(x) διασφαλίζει ότι οι παράμετροι θα είναι ανεξάρτητες του βάθος: σε κάθε συγκεκριμένο σημείο του σώματος, θα προκύπτει ένα συγκεκριμένο διάνυσμα θέσης στο χώρο ανεξάρτητα από την απόσταση του σώματος από την κάμερα. Άρα, οι τιμές των στοιχείων είναι ανεπηρέαστες από τυχόν μετατόπιση στο χώρο. Αν ένα pixel αναφοράς βρίσκεται στο παρασκήνιο ή εκτός των ορίων της εικόνας, τότε το ζητούμενο d I(x) θα έχει μία πολύ μεγάλη θετική σταθερά για τιμή. Ατομικά, το κάθε προς εξέταση στοιχείο προσφέρει ένα αδύναμο δείγμα σχετικά με το σε ποιο μέλος του σώματος ανήκει αυτό το pixel, ωστόσο σε συνδυασμό με το δάσος απόφασης είναι επαρκές για να προσδιοριστούν με ακρίβεια όλα τα μέλη του σώματος που είναι εκπαιδευμένο το 9

σύστημα να εντοπίζει. Η επιλογή των στοιχείων προς εξέταση έγινε και με γνώμονα το μικρό υπολογιστικό τους κόστος: δεν απαιτείται προεπεξεργασία, κάθε στοιχείο για να υπολογιστεί χρειάζεται το πολύ 3 pixel και την εκτέλεση το πολύ 5 αριθμητικών πράξεων. Όλα αυτά μπορούν άμεσα να γίνουν στη GPU. 1.4.6 Τυχαία δάση απόφασης Τα τυχαία δέντρα και δάση απόφασης έχουν αποδειχτεί ότι είναι γρήγοροι και αποτελεσματικοί κατηγοριοποιητές πολλών κλάσεων, ικανοί για πολλές διεργασίες και ιδανικοί προς ενσωμάτωση στη GPU. Όπως φαίνεται και στην εικόνα παρακάτω, το δάσος είναι ένα σύνολο T δέντρων απόφασης, όπου το καθένα αποτελείται από πολλαπλούς κόμβους και φύλλα. Κάθε κόμβος αποτελείται από ένα στοιχείο f θ και ένα όριο - κριτήριο διαδρομής τ. Για να κατηγοριοποιηθεί ένα pixel x σε μία εικόνα Ι, ξεκινάμε από την αρχή του δέντρου εκτελώντας διαρκώς την εξίσωση 1 και ακολουθούμε τη διαδρομή που προκύπτει από το δέντρο απόφασης. Στον τελευταίο κόμβο (φύλλο) έχει αποθηκευτεί μία γνωστή κατανομή P t(c I,x) που αναφέρεται σε μία ετικέτα μέλους σώματος c. Από όλες τις κατανομές των δέντρων προκύπτει μία μέση κατανομή η οποία δίνει την τελική κατηγοριοποίηση: Τυχαίο δάσος απόφασης 1.4.7 Εκπαίδευση δέντρων απόφασης Κάθε δέντρο εκπαιδεύεται χρησιμοποιώντας διαφορετικό σύνολο από τυχαίες συνθετικές εικόνες. Ένα τυχαίο υποσύνολο από 2000 example pixels από κάθε εικόνα επιλέγεται για να διασφαλιστεί έστω μία υποτυπώδης κατανομή ανάμεσα στα μέλη του σώματος. Κάθε δέντρο εκπαιδεύεται ακολουθώντας τον παρακάτω αλγόριθμο: 1. Προτείνονται τυχαία ένα σύνολο από παραμέτρους φ =( θ, τ ). 2. Διαχωρίζουμε το σύνολο των παραδειγμάτων Q = {(I,x)}σε δεξιά και αριστερά υποσύνολα για κάθε φ: 10

3. Υπολογίζουμε το φ παίρνοντας το μέγιστο κέρδος πληροφορίας όπου η εντροπία Shannon H(Q) υπολογίζεται από το κανονικοποιημένο ιστόγραμμα των ετικετών των μελών σώματος l I (x) για κάθε (I,x) που ανήκει στο Q. 4. Αν το μέγιστο κέρδος G(φ*) είναι επαρκές και το βάθος στο δέντρο είναι πέρα από το μέγιστο, τότε επανάλαβε για δεξιά και αριστερά υποσύνολα Q l ( φ*) και Q r(φ*). Για να ελαχιστοποιηθεί ο χρόνος εκπαίδευσης χρησιμοποιούμε κατανεμημένα συστήματα. Για να εκπαιδεύσουμε 3 δέντρα με βάθος 20 με 1 εκατομμύριο εικόνες χρειάζεται περίπου 1 ημέρα χρησιμοποιώντας συνολική υπολογιστική ισχύ 1000 πυρήνων. 1.4.8 Προσδιορισμός θέσης αρθρώσεων εικονικού σκελετού Η αναγνώριση των μελών του σώματος, όπως αναφέρεται παραπάνω, προϋποθέτει ανά pixel πληροφορία. Αυτή η πληροφορία πρέπει να αντληθεί από τα pixels για να δημιουργηθούν αξιόπιστες προτάσεις για τις θέσεις των αρθρώσεων του 3D σκελετού. Αυτές οι προτάσεις είναι η τελική έξοδος του αλγορίθμου, και μπορούν να χρησιμοποιηθούν από έναν αλγόριθμο παρακολούθησης για να επαναρχικοποιηθεί και να ανακτήσει τη λειτουργία του σε περίπτωση αποτυχίας. Μία απλή επιλογή είναι να συγκεντρωθούν οι πιθανότητες που προσδιορίζουν τη θέση των 3D κέντρων μάζας στο χώρο για κάθε μέλος του σώματος χρησιμοποιώντας το γνωστό, υπολογισμένο βάθος. Ωστόσο, τα απομακρυσμένα pixels υποβαθμίζουν σοβαρά την ποιότητα ενός τέτοιου γενικού υπολογισμού. Αντί αυτού χρησιμοποιούμε μία μέθοδο τοπικής αναζήτησης βασισμένη στον αλγόριθμο mean shift με σταθμισμένο Γκαουσιανό πυρήνα. Ορίζουμε ένα τύπο υπολογισμού πυκνότητας ανά μέλος σώματος: όπου το x είναι μία συντεταγμένη στο τρισδιάστατο χώρο, Ν ο αριθμός των pixels της εικόνας, wic το βάρος του pixel, x i η προβολή του x i στο χώρο δεδομένου του βάθους d I(x i), και b c είναι ένα ήδη γνωστό εύρος ζώνης ανά μέλος σώματος. Το βάρος pixel w ic λαμβάνει υπόψη και την πιθανότητα μέλους σώματος στο pixel και την τιμή βάθους του pixel: 11

Αυτό διασφαλίζει ότι οι υπολογισμοί είναι ανεξάρτητοι από το βάθος και δίνεται μία μικρή αλλά σημαντική βελτίωση στην ακρίβεια της πρόβλεψης της θέσης των αρθρώσεων. Ανάλογα με τον προσδιορισμό των μελών του σώματος, η προηγούμενη P(c I,x) μπορεί να προ συνυπολογιστεί από ένα μικρό σύνολο μελών. Για παράδειγμα, τα 4 μέλη σώματος που καλύπτουν το κεφάλι συμψηφίζονται για να προκύψει η άρθρωση του κεφαλιού. Οπτικοποίηση ενός εκπαιδευμένου δέντρου απόφασης Δύο ξεχωριστά υποδέντρα παρουσιάζονται. Ένα κομμάτι εικόνας βάθους κεντραρισμένο σε κάθε pixel λαμβάνεται, κανονικοποιείται και επεξεργάζεται δυαδικά σε αντικείμενο/φόντο. Το πάχος των γραμμών που φτάνουν σε κάθε pixel είναι ανάλογο του αριθμού των pixels, και εδώ φαίνεται ένα αρκετά ισομερώς κατανεμημένο δέντρο. Όλα τα pixels από τις 15 χιλιάδες εικόνες χρησιμοποιούνται για να δημιουργήσουν την παραπάνω οπτικοποίηση Ο αλγόριθμος mean shift χρησιμοποιείται για να βρεθούν περιοχές πυκνότητας. Όλα τα pixels πάνω από ένα προσδιορισμένο επίπεδο λ c χρησιμοποιούνται ως σημεία έναρξης για το μέλος σώματος c. Η τελική προσέγγιση προκύπτει ως το άθροισμα των w ic τα οποία ανήκουν σε κάθε στρώμα πυκνότητας. Τα εντοπισμένα στρώματα βρίσκονται πάνω στην επιφάνεια του σώματος. Κάθε στρώμα επομένως τοποθετείται πίσω στη σκηνή κατά ένα γνωστό z διάνυσμα θέσης ζ c για να παραχθεί η τελική πρόταση θέσης της άρθρωσης. Αυτή η απλή, αποτελεσματική προσέγγιση δουλεύει καλά στην πράξη. Τα εύρη ζώνης b c, το κατώφλι πιθανότητα λ c, και το απο-επιφάνειαπρος-εσωτερικό διάνυσμα θέσης ζ c βελτιστοποιούνται κατά μέλος μέσα από ένα σύνολο 5000 εικόνων εκτελώντας πλεγματική αναζήτηση. 12

1.5 SDK Μόλις κυκλοφόρησε το Kinect, πέρα από την αποδεδειγμένα εντυπωσιακή αποδοχή που είχε από τους χρήστες του Xbox 360, υπήρξε άμεσα τεράστιο ενδιαφέρον για δημιουργία νέων εφαρμογών από τους developers. Ωστόσο, δεν συνοδευόταν από κάποιο SDK, γεγονός που έβαζε φρένο στις βλέψεις τους. Το βράδυ της κυκλοφορίας του Kinect η ιστοσελίδα της Adafruit Industries προσέφερε αμοιβή $1.000 στον πρώτο που θα ανέβαζε στο GitHub open source drivers για το Kinect. Η αντίδραση της Microsoft ήταν άμεση. Μερικές ώρες μετά, έβγαλε ανακοίνωση για τον επονομαζόμενο Open-Kinect διαγωνισμό, δηλώνοντας ότι «η Microsoft δεν επιδοκιμάζει την παρέμβαση στα προϊόντα της», απειλώντας πως «θα συνεργαστούμε στενά με τις νομικές αρχές και τις οργανώσεις προστασίας προϊόντων για να παραμείνει το Kinect ανέπαφο από επεμβατικές ενέργειες». Η αντίδραση της Adafruit ήταν η αύξηση του επάθλου σε $2.000, το οποίο έφτασε τα $3.000 ως απάντηση σε νέα ανακοίνωση της Microsoft 4 μέρες αργότερα. Την Τετάρτη 10 Νοεμβρίου ανακοινώθηκε ως νικητής του διαγωνισμού ο Héctor Martín, από το Bilbao της Ισπανίας, ο οποίος δημιούργησε έναν Linux driver που επιτρέπει τη χρήση των δυνατοτήτων της RGB και της κάμερας βάθους της συσκευής. Αρκετό καιρό αργότερα, αποκαλύφθηκε ότι πίσω από αυτό τον διαγωνισμό και τη χρηματοδότησή του βρισκόταν ο Johnny Lee, βασικό στέλεχος εκείνη την περίοδο στην ομάδα ανάπτυξης του Kinect. Πλέον, ο δρόμος ήταν ανοιχτός για όλους τους επίδοξους hackers να αναπτύξουν εφαρμογές που θα εκμεταλλεύονταν τις μεγάλες δυνατότητες του Kinect. Από ερασιτέχνες προγραμματιστές μέχρι εργαστήρια ρομποτικής οι εφαρμογές του Kinect ήταν πολλές και εντυπωσιακές. Η Microsoft, παρά τις αρχικές απειλές, τήρησε σε πρώτη φάση στάση αναμονής. Στη συνέχεια, βλέποντας το μεγάλο ενδιαφέρον των developers, αποφάσισε να μπει κι αυτή στο παιχνίδι. Έτσι, έπειτα από μερικούς μήνες, έβγαλε το επίσημο SDK του Kinect με το όνομα Kinect for Windows SDK. Γενικά, κυκλοφόρησαν αρκετά SDKs για το Kinect όπως το OpenKinect και το Cinder, ωστόσο τα σημαντικότερα ήταν το Kinect for Windows SDK της Microsoft και το OpenNI / NiTE της PrimeSense. 1.5.1 Kinect for Windows SDK Στις 21 Φεβρουαρίου 2011, η Microsoft ανακοίνωσε ότι θα κυκλοφορήσει ένα μη εμπορικής χρήσης εργαλείο ανάπτυξης λογισμικού (Software Development Kit SDK) για το Kinect την άνοιξη του 2011, το οποίο, τελικά, κυκλοφόρησε για τα Windows 7 στις 16 Ιουνίου 2011 σε 12 χώρες. Το SDK περιλαμβάνει PC drivers για το Kinect συμβατούς με τα Windows 7. Παρέχει στους προγραμματιστές τη δυνατότητα να δημιουργούν εφαρμογές για το Kinect σε C++, C# ή Visual Basic χρησιμοποιώντας το Microsoft Visual Studio 2010 και περιέχει τα εξής χαρακτηριστικά: 1.Ροή ακατέργαστων δεδομένων: Πρόσβαση σε ροές δεδομένων χαμηλού επιπέδου από τους αισθητήρες βάθους, αισθητήρες κάμερας χρώματος και τη μικροφωνική στήλη τεσσάρων στοιχείων. 2.Εντοπισμός σκελετού: Η δυνατότητα να εντοπίζει την εικόνα του σκελετού ενός η δύο ανθρώπων που κινούνται μπροστά από τον πεδίο όρασης του Kinect χωρίς να χρειάζεται αρχική στάση βαθμονόμησης. Επιπρόσθετα, ανιχνεύει περισσότερες αρθρώσεις ανά χρήστη (αστραγάλους και καρπούς), σε σχέση με άλλα SDKs. 13

3.Ανεπτυγμένες δυνατότητες ήχου: Οι δυνατότητες επεξεργασίας ήχου περιλαμβάνουν περιορισμό θορύβου, ακύρωση ανάκλασης ήχου και εντοπισμό πηγής ήχου μέσω της κατάλληλης διάταξης των μικροφώνων. Ο προγραμματιστής μπορεί να εκμεταλλευτεί αυτές τις δυνατότητες μέσω του Windows speech recognition API. 4.Δείγματα κώδικα και οδηγίες. Στις αρχές του 2012 κυκλοφόρησε η πρώτη επίσημη έκδοση του SDK και μαζί της και η καινούρια έκδοση της συσκευής Kinect η οποία προοριζόταν αποκλειστικά για τη χρήση στον υπολογιστή. Το SDK είχε πολλές διαφορές στη σύνταξη του API της, παρείχε όμως το κατάλληλο υλικό για να μπορούν οι προγραμματιστές να προσαρμόσουν τον κώδικά τους στα καινούρια δεδομένα. Με την επίσημη έκδοση δόθηκε η δυνατότητα ανάπτυξης εμπορικών εφαρμογών με την προϋπόθεση ότι θα γίνεται χρήση της συσκευής Kinect for Windows. 1.5.2 OpenNI και NiTE Δημιουργήθηκε από έναν αφιλοκερδή οργανισμό ο οποίος απαρτίζεται από διάφορες εταιρίες, συμπεριλαμβανομένου και της PrimeSense Ltd. οι οποίες θέλησαν να θέσουν ένα βιομηχανικό πρότυπο λειτουργικότητας για τις συσκευές φυσική διεπαφής χρήστη υπολογιστή (Natural User Interaction Devices) και κυκλοφόρησε το Δεκέμβριο του 2010. Το OpenNI αναπτύχθηκε σε C/C++, έτσι ώστε να μπορεί να χρησιμοποιηθεί από διάφορα λειτουργικά συστήματα, όπως Mac OSX, Ubuntu, Windows. Είναι το επίσημο λογισμικό των Xtion συσκευών της Asus, αλλά μπορεί να λειτουργήσει και με το Kinect. Παρέχει επικοινωνία με τον αισθητήρα βάθους, την κάμερα χρώματος, τα μικρόφωνα και τη μηχανοκίνητη βάση. Το OpenNI, όμως, συνοδεύεται και από μια ενδιάμεση βιβλιοθήκη η οποία λέγεται NiTE και είναι εξοπλισμένο με τεχνολογίες αναγνώρισης φωνής, αναγνώρισης χειρονομιών χεριών, και ανίχνευσης σκελετού. Η ανίχνευση του σκελετού του χρήστη απαιτούσε αρχική στάση βαθμονόμησης αλλά στις πιο πρόσφατες εκδόσεις του, το OpenNI/NiTE, δεν χρειάζεται αρχική στάση βαθμονόμησης (χαρακτηριστικό που είχε μόνο το MS SDK). 1.6 Εφαρμογές του Kinect Από την κυκλοφορία του μέχρι σήμερα το Kinect έχει χρησιμοποιηθεί σε διάφορους κλάδους, όπως: Εικονική Πραγματικότητα (Virtual Reality), Ευφυή Περιβάλλοντα (Ambient Intelligent Environments), Τεχνητή Όραση και Ρομποτική (Computer Vision and Robotics), Αναπηρίες (Disabilities), Αναγνώριση Χειρονομιών (Gesture Recognition). Ακολουθούν χαρακτηριστικά παραδείγματα εφαρμογών ανά κατηγορία. 1.6.1 Εικονική Πραγματικότητα (Virtual Reality) Virtual Clothes-Fitting Το Fitnect, είναι ένα διαδραστικό δοκιμαστήριο ρούχων, όπου οι χρήστες μπορούν να διαλέγουν ρούχα και να τα δοκιμάζουν εικονικά. Το Kinect σκανάρει το σώμα και στη συνέχεια εφαρμόζει πάνω του τα ρούχα της επιλογής του χρήστη, δίνοντάς του άμεσα τη δυνατότητα να διαπιστώσει κατά πόσο αυτή η εμφάνιση του ταιριάζει. Έτσι, 14

δημιουργείται μία καλύτερη εμπειρία στις διαδικτυακές αγορές, κυρίως στην κομμάτι της αγοράς ρούχων. Hack A System Via Avatar Σε μία περίπτωση όπου η ζωή μιμείται την τέχνη, ο ερευνητής ασφάλειας της p0wnlabs, Jeff Bryner, παρουσίασε πώς μπορεί κάποιος χρησιμοποιώντας ένα 3D avatar, να διεισδύσει σε ένα υπολογιστικό σύστημα. Συνδυάζοντας το Kinect, μερικά εργαλεία hacking και ένα 3D περιβάλλον, το Kinectasploit επιτρέπει στον χρήστη να εισβάλλει μέσα στο σύστημα ασφαλείας ενός υπολογιστή χρησιμοποιώντας κινήσεις του σώματος. Το σύστημα λειτουργεί σχεδόν σαν σε βιντεοπαιχνίδι. Σε ένα demo, ο χρήστης hacker πυροβολεί σε WiFi στόχους για να σπάσει την ασφάλειά τους. 1.6.2 Ευφυή Περιβάλλοντα (Ambient Intelligent Environments) RoomAlive Ως Proof of Concept (POC) χαρακτηρίζονται πρωτότυπες επιδείξεις ή εφαρμογές, σκοπός των οποίων είναι η επιβεβαίωση ότι συγκεκριμένες θεωρίες μπορούν να χρησιμοποιηθούν στα πλαίσια της καθημερινότητας. Ως POC μπορεί να θεωρηθεί και το RoomAlive, καθώς οραματίζεται το μέλλον του διαδραστικού παιχνιδιού μέσω προβολών σε επιφάνειες. Το RoomAlive μετατρέπει ένα δωμάτιο σε μία εθιστική εμπειρία διασκέδασης επαυξημένης πραγματικότητας μέσω της χρήσης προβολέων βίντεο. Οι χρήστες μπορούν να ακουμπήσουν, να πυροβολήσουν, να ποδοπατήσουν, να αποφύγουν και να κατευθύνουν προβαλλόμενα αντικείμενα τα οποία συνυπάρχουν αρμονικά με το υπάρχον περιβάλλον. Ο βασικός μηχανισμός πίσω από το RoomAlive είναι ένας προβολέας βάθους κάμερα, γνωστός με το όνομα procam. Αποτελείται από έναν φτηνό προβολέα ευρείας προβολής, ένα Kinect και έναν υπολογιστή. Ο προβολέας χρησιμοποιείται για την προβολή των αντικειμένων και το Kinect για τον 15

εντοπισμό του χρήστη. Με τη χρήση πολλών μονάδων procam, μπορείς να μετατρέψεις το δωμάτιό σου σε μία διαδραστική επιφάνεια. Breaking the Surface Προϊόν συνεργασίας των Scandinavian Design Group, Abida, Intek & Ctrl+N, το Breaking the Surface είναι μία εννοιολογική κατασκευή που δημιουργήθηκε με αφορμή την επέτειο 10 χρόνων της Νορβηγικής πετρελαϊκής εταιρείας Lundin Norway. Έχοντας ως έμπνευση τον τρόπο που οι γεωλόγοι και οι γεωφυσικοί της εταιρείας βλέπουν τον κόσμο κάτω από την επιφάνεια της θάλασσας μέσω λεπτομερών ανακατασκευών του πυθμένα που προέκυψαν από σεισμικά μοντέλα και δείγματα γεωτρήσεων, δημιούργησαν μία αφαιρετική αναπαράσταση αυτής της επιφάνειας χρησιμοποιώντας 529 ακρυλικούς σωλήνες, οι οποίοι τρυπούσαν το ταβάνι μεταξύ του πρώτου και του δεύτερου ορόφου. Το αποτέλεσμα ήταν στον πρώτο όροφο να δημιουργούνται «βραχώδεις» επιφάνειες και στον δεύτερο μία προσομοίωση της επιφάνειας του ωκεανού. Οι χρήστες καλούνται να δουν πώς αντιδράει η εγκατάσταση, καθώς κινούνται στον χώρο από κάτω της. Οι σωλήνες, οι οποίοι συνήθως κρέμονται από ύψος 1.3 μέτρα πάνω από το έδαφος, σηκώνονται για να δημιουργήσουν έναν προστατευτικό θόλο γύρω από κάθε άνθρωπο που βρίσκεται μέσα στην εγκατάσταση. Η αντίστροφη επίδραση της κίνησης των ανθρώπων προκαλεί κινήσεις στους σωλήνες του πάνω ορόφου που μοιάζουν με κύματα. Το σύστημα ελέγχου αποτελείται από 3 βασικά επίπεδα: Επίπεδο αισθητήρων, επίπεδο εφαρμογής και το επίπεδο PLC. Το Kinect βρίσκεται στο επίπεδο εφαρμογής. Πιο συγκεκριμένα, μέσω του openframeworks, στήθηκε ένα σύστημα πραγματικού χρόνου βασισμένο στους αισθητήρες πατώματος και σε αισθητήρες Kinect, δημιουργώντας ένα μοτίβο κίνησης το οποίο και εφαρμόζεται πάνω στο σύστημα. 16

1.6.3 Τεχνητή Όραση και Ρομποτική (Computer Vision and Robotics) Reactive-Kinect Learning Robot Ένα νέο ρομπότ, το οποίο αναπτύσσεται από ερευνητές στο Cornell University, δεν είναι απλά ικανό να βοηθάει σε καθημερινές εργασίες, αλλά μπορεί να προβλέπει πότε θα χρειαστείς βοήθεια. Εξοπλισμένο με έναν αισθητήρα Kinect, το ρομπότ - με δημιουργό τον Ashutosh Saxena και την ομάδα του - δημιούργησε μία βάση με 120 βίντεο για ανάλυση και κατανόηση των κινήσεων του προς βοήθεια χρήστη. Μπορεί να βοηθήσει σε συγκεκριμένες εργασίες, όπως το μαγείρεμα γεύματος, η τακτοποίηση αντικειμένων ή η λήψη φαρμάκων. Για να εντοπίσει τις ενέργειές του χρήστη, οι ερευνητές χρησιμοποιούν σύνθετους αλγορίθμους για να εντοπίσουν σκελετικές κινήσεις που αντιστοιχούν σε μία υποδραστηριότητα, όπως τέντωμα, περπάτημα, κατανάλωση φαγητού ή ποτού. Μπορεί επίσης να μάθει από λάθη, βελτιώνοντας την ακρίβεια της διαδικασίας. Το ρομπότ έχει ήδη επιτύχει ακρίβεια 83.1 % εντοπισμού δραστηριοτήτων υψηλού επιπέδου. Αν κι έχει προγραμματιστεί για την βοήθεια καθημερινών διεργασιών, σχεδιάζεται στο μέλλον να επεκταθεί και σε άλλους τομείς όπως βοηθοί σε χειρουργείο ή βοήθεια στην φροντίδα ηλικιωμένων. Long Distance Art Στις 26 Σεπτεμβρίου 2013, το Vienna Tourist Board διοργάνωσε ένα event, όπου ο Alex Kiessling δημιούργησε έργα τέχνης όχι μόνο στη Βιέννη, αλλά ταυτόχρονα στην Breitscheidplatz του Βερολίνου και στην Trafalgar Square του Λονδίνου. Με την βοήθεια του Struck Design Studio, ο Alex χρησιμοποιεί δύο εργοστασιακά ρομπότ (ABB IRB 4600), τα οποία λαμβάνουν πληροφορίες πραγματικού χρόνου από την Βιέννη μέσω δορυφόρου. Η ομάδα χρησιμοποιεί το VVVV software διαβάζοντας δεδομένα από μία υπέρυθρη ακίδα και ένα Microsoft Kinect. Τα δεδομένα χρησιμοποιούνται για να τροφοδοτούνται τα ρομπότ με συντεταγμένες - διαδικασία δύσκολη, καθώς το λογισμικό τους δεν είναι σχεδιασμένο για να δέχεται δεδομένα πραγματικού χρόνου. Στη συνέχεια, τα ρομπότ αναπαράγουν τις κινήσεις του καλλιτέχνη και ζωγραφίζουν τη δική τους προσέγγιση του έργου του Alex σε πραγματικό χρόνο. 1.6.4 Αναπηρίες (Disabilities) Help With Stroke Recovery Το Stroke Recovery With Kinect είναι ένα project που χρηματοδοτείται από την Microsoft Research και το Seoul National University, με σκοπό την παροχή χαμηλού κόστους κατ οίκον αποκατάσταση σε ασθενείς που υπέστησαν εγκεφαλικό. Οι χρήστες θα λαμβάνουν ασκήσεις που θα βελτιώνουν τις κινητικές τους ικανότητες. Οι ασκήσεις θα καταγράφονται από το Kinect κι ένα πρόγραμμα θα βοηθάει στην καταγραφή της προόδου τους. Αυτό επιτρέπει στους ασθενείς να αναρρώνουν σπίτι υπό την προσωπική φροντίδα της οικογένειάς τους, αντί για την αναγκαστική παραμονή σε νοσοκομείο. Τα επίπεδα ανάρρωσης μπορούν να μετρηθούν και να υπολογιστούν από το σύστημα και οι ερευνητές πιστεύουν ότι οι ασθενείς αναρρώνουν γρηγορότερα μέσω περιβάλλοντος που θυμίζει κατά πολύ παιχνίδι. 17

Yoga Classes for the blind Σε ένα τυπικό μάθημα yoga, οι μαθητές παρακολουθούν τον δάσκαλο για να μάθουν πώς να πάρουν κατάλληλα μία θέση. Ωστόσο, για ανθρώπους με μερική ή πλήρη αναπηρία όρασης είναι από υπερβολικά δύσκολο έως αδύνατο να συμμετέχουν σε τέτοιου είδους ασκήσεις. Τώρα, μία ομάδα από το πανεπιστήμιο της Ουάσιγκτον δημιούργησε ένα λογισμικό, το οποίο παρακολουθεί τις κινήσεις του χρήστη και δίνει οδηγίες μέσω φωνητικών εντολών, ως προς το πώς πρέπει να στέκεται ο χρήστης, ώστε να εκτελέσει σωστά την άσκηση. Το πρόγραμμα λέγεται Eyes-Free Yoga, χρησιμοποιεί το Kinect για να αναγνωρίζει τις κινήσεις του σώματος και προσφέρει οδηγίες για 6 στάση yoga, ανάμεσα στις οποίες είναι οι Warrior I and II, Tree και Chair. 1.6.5 Αναγνώριση Χειρονομιών (Gesture Recognition) Translate Sign Language Ερευνητές στην Κίνα, σε συνεργασία με την Microsoft Research, ανέπτυξε το Kinect Sign Language Translator, ένα σύστημα το οποίο μεταφράζει τη νοηματική γλώσσα είτε σε ομιλία είτε σε κείμενο σε σχεδόν πραγματικό χρόνο. Αυτό επιτρέπει την επικοινωνία μεταξύ ατόμων που μιλούν τη νοηματική γλώσσα και σε αυτούς που δεν τη μιλούν. Επίσης, αυτό είναι βοηθητικό για άτομα τα οποία μιλάνε διαφορετική νοηματική γλώσσα υπάρχουν πάνω από 300 νοηματικές γλώσσες που χρησιμοποιούνται στον κόσμο. Το Kinect, συνδυασμένο με το κατάλληλο λογισμικό, μπορεί να διαβάζει τις κινήσεις των χεριών και να τις μεταφράζει στην κατάλληλη γραπτή ή ηχητική μορφή, κι έπειτα να αντιστρέφει την διαδικασία μέσω ενός avatar, το οποίο μιλάει αντίστοιχα στη νοηματική, καταργώντας έτσι τα όρια στη γλώσσα πιο αποτελεσματικά από ποτέ. 18

Retrieve Data Via Gestures Οι χειρούργοι κατά τη διάρκεια μία εγχείρησης ίσως χρειαστεί να συλλέξουν συγκεκριμένες πληροφορίες σχετικά με τον ασθενή. Αυτό προϋποθέτει να ακουμπήσουν μη αποστειρωμένες επιφάνειες, το οποίο μπορεί να είναι επιβλαβές για την εγχείρηση. Οπότε, θα πρέπει να βγουν από την εγχείρηση ή να στηρίζονται σε εξωτερική βοηθητική ομάδα. Με το GestSure ωστόσο, μπορούν να χρησιμοποιούν κινήσεις των χεριών για να διαχειρίζονται εικόνες μέσω του Kinect μέσα από το χειρουργείο. Όχι μόνο μειώνονται με αυτό τον τρόπο τα προβλήματα από την μεταφορά πληροφορίας, αλλά εξοικονομείται και χρόνος με το να έχουν οι γιατροί άμεση πρόσβαση στην πληροφορία. 19

2 Hive 3D 2.1 Ορισμός Game Engine Ο όρος Game Engine χρησιμοποιείται για να προσδιορίσει το πρόγραμμα που περιλαμβάνει έναν πυρήνα διαφορετικών τεχνολογιών και έχει ως σκοπό την κατά το δυνατόν βέλτιστη δημιουργία παιχνιδιών ή, γενικότερα, 3D εφαρμογών. Μία πλήρης game engine περιλαμβάνει συνήθως έναν επεξεργαστή γραφικών (graphics renderer), επίπεδο δικτύου (network layer), σύστημα ήχου (sound engine), σύστημα φυσικής (physics engine), μεταφραστή script (scripting language interpreter) και μία γραφική διεπαφή χρήστη (graphical previewer/editor). Μερικές πιο ανεπτυγμένες μηχανές περιλαμβάνουν επεξεργαστές για shaders, terrain κι άλλα πιο απαιτητικά στοιχεία. Το Hive3D ανήκει στην κατηγορία των πιο ανεπτυγμένων game engine, όπως και το Unity ή η Unreal Engine. 2.2 Eyelead Software Η Eyelead Software ιδρύθηκε το 2007 ως spin-off του Πανεπιστημίου Πατρών, με το όραμα να παράγει καινοτομικές τεχνολογίες τρισδιάστατων γραφικών και μια πραγματικά cross-platform, πλήρως επεκτάσιμη πλατφόρμα ανάπτυξης παιχνιδιών. Η κεντρική τεχνολογία της Eyelead είναι το Hive3D Development Platform, ένα ενοποιημένο σύστημα που επιτρέπει σε ομάδες ανάπτυξης να συνεργάζονται δικτυακά, σε πραγματικό χρόνο, για την ανάπτυξη του παιχνιδιού τους. Παράλληλα με την διαχείριση και επέκταση του Hive3D, η Eyelead αναπτύσσει τρισδιάστατα παιχνίδια, εξειδικευμένο λογισμικό και παρέχει υπηρεσίες ανάπτυξης λογισμικού και περιεχομένου. Στα πλαίσια των δραστηριοτήτων της, η Eyelead έχει συνεργαστεί στενά με σημαντικές εταιρείες του χώρου όπως η Qualcomm και η Sony. 2.3 Hive 3D Στο Hive3D, η ανάπτυξη υποστηρίζεται από μια ενιαία βάση κώδικα και περιεχομένου. Από αυτή την ενιαία βάση μπορούν αυτόματα να εξαχθούν πολλαπλές παραλλαγές της ίδιας εφαρμογής, κάθε μία με τα δικά της χαρακτηριστικά, και με εγγενή υποστήριξη για όλες τις μοντέρνες πλατφόρμες υπολογιστών και κινητών συσκευών. Μετατροπές και βελτιστοποιήσεις σε κώδικα και περιεχόμενο γίνονται αυτόματα από το Hive3D ώστε να αντιμετωπίζονται κατάλληλα οι απαιτήσεις και οι ιδιαιτερότητες της κάθε συσκευής. Έτσι διευκολύνεται σημαντικά η υλοποίηση νέων λειτουργιών και η έκδοση ενημερώσεων. 2.3.1 Αρχιτεκτονική Το Hive3D είναι βασισμένο στη φιλοσοφία του λειτουργικού συστήματος Unix και χρησιμοποιεί έναν «ελαφρύ» πυρήνα (kernel) για τις βασικές διεργασίες. Τα παιχνίδια, οι editors, τα εργαλεία για debug είναι διεργασίες που βρίσκονται πάνω από τον πυρήνα. Ο γράφος σκηνής στο Hive3D υλοποιείται με ένα σύστημα εικονικών αρχείων (Hive Virtual File System), έτσι κάθε κόμβος στο γράφο σκηνής είναι ένα vfile στο Hive3D. 20