1 st Kinect Workshop Consumer Depth Sensors Natural User Interaction (NUI) Natural Interaction Research Team (NIRTeam) Ευκφμιοσ Συντυχάκθσ Α.Μ. 2243 Ελευκζριοσ Μανουςάκθσ Α.Μ. 2185
Ειςαγωγι Στόχος Workshop Ειςαγωγι ςτα Natural User Interfaces Ειςαγωγι ςτισ Τεχνολογίεσ RGB & Depth των NUI ςυςκευών (π.χ. Kinect) Επίδειξθ Ενδεικτικών Εφαρμογών
Available Depth Sensors Microsoft Kinect Sensor To Microsoft Kinect ςχεδιάςτθκε αρχικά για τθν κονςόλα Xbox 360, αλλά γριγορα αναπτφχκθκαν αλγόρικμοι αποκωδικοποίθςθσ των εξόδων του για τθ χριςθ του ςτον υπολογιςτι από διάφορουσ developers. Asus Xtion Pro LIVE Sensor Σχεδιαςμζνο από τθν PrimeSense ςε ςυνεργαςία με τθν Asus, το Xtion απευκφνεται ςτουσ developers. Microsoft Kinect Xtion Pro LIVE
Microsoft Kinect Sensors IR light RGB Camera Depth Sensor Multi-Array Mic Additional features Motorized Tilt Accelerometer Depth Sensor Range 0.8 to 3.5 meters 4 Microphones Viewing angle 43 vertical by 57 horizontal Χρειάηεται εξωτερικι τροφοδοςία
Asus Xtion Pro LIVE Sensors Depth Sensor RGB Camera IR light Microphones Additional features Depth Sensor Range 0.8 to 3.5 meters 2 Microphones Viewing angle 45º vertical, 58º horizontal, 70º diagonal Δεν χρειάηεται εξωτερικι τροφοδοςία
Explanation of a Depth Image Ο IR (infrared) προβολζασ προβάλει ζνα point array όπωσ το εικονιηόμενο. Ο Depth Sensor ο οποίοσ είναι ζνασ μονόχρωμοσ CMOS (complimentary metal-oxide semiconductor) αιςκθτιρασ χρθςιμοποιεί τθ κζςθ του κάκε point για να διατυπώςει μια εικόνα βάκουσ. Depth IR light Sensor IR array Για περιςςότερεσ πλθροφορίεσ δείτε: http://www.primesense.com/en/... Depth Image
Depth Sensor Interoperability Το kinect και το Xtion παρζχουν τρεισ εξόδουσ: 1. Image, 2. Depth, 3. Audio. Τισ εξόδουσ αυτζσ τισ επεξεργαηόμαςτε μζςω του NUI library και τισ χρθςιμοποιοφμε ανάλογα ςτθν εφαρμογι μασ. Πζντε γνωςτά NUI libraries είναι: 1. OpenNI/NITE 2. Libfreenect 3. CL NUI 4. Microsoft Kinect SDK 5. Evoluce SDK
Depth Sensor Available APIs (Application Programming Interfaces) OpenNI/NITE Φτιαγμζνο για να υποςτθρίηει το Kinect αλλά και το Xtion Pro. Είναι το API που διανζμει θ Asus μαηί με το Xtion Pro. Libfreenect CL NUI Είναι το πρώτο Kinect Hack API, πριν θ Microsoft δθμοςιεφςει το Kinect SDK Ευρζωσ γνωςτό ςτθν κοινότθτα των ρομποτικών ςυςτθμάτων. Microsoft Kinect SDK (Beta) Δθμοςιεφκθκε πρόςφατα από τθ Microsoft δθμιουργώντασ μια μεγάλθ ερευνθτικι κοινότθτα. Evoluce SDK Kinect API φτιαγμζνο από τθν Evoluce AG, για τθ χριςθ του ςτα Windows 7
Depth Sensor Available APIs OpenNI/NITE Native programming languages: Available Wrappers: C/C++,C#(Windows), C/C++ (Linux) Unity, Java, VB.NET, Python Depth camera Drivers: RGB camera Drivers: Audio Drivers: Accelerometer: Skeleton Tracking: Calibration Posture: Yes Yes No No Yes Skeleton Joints : 15 Hand Tracking Framework: OS support: Game Engine Support: License includes commercial use Needed Yes Windows, Linux, Mac OSX Unity 3D (C#) OGRE (C++) C a l i b r a t e d u s e r s k e l e t o n Σχετικά δφςκολο ςτθν εγκατάςταςι του. Αρκετζσ ζτοιμεσ μζκοδοι για Gesture Recognition. Πολφ διαδεδομζνο, με πολλζσ εφαρμογζσ ςε διάφορουσ τομείσ.
Depth Sensor Available APIs (Kinect Only) Libfreenect Native programming languages: Python,C Available Wrappers: Actionscript, C++, C#, Java, Javascript, Lisp Depth camera Drivers: Yes RGB camera Drivers: Yes Audio Drivers: No Accelerometer: No Skeleton Tracking: No Calibration Posture: - Skeleton Joints : - Hand Tracking Framework: No OS support: Windows, Linux, Mac OSX Game Engine Support: - License includes commercial use D e p t h I m a g e w i t h L i b f r e e n e c t Πολφ δφςκολο ςτθν εγκατάςταςθ για ζναν αρχάριο. Αρκετζσ εφαρμογζσ.
Depth Sensor Available APIs (Kinect Only) CL NUI Native programming languages: C/C++,C# Available Wrappers: None Depth camera Drivers: Yes RGB camera Drivers: Yes Audio Drivers: Yes Accelerometer: Yes Skeleton Tracking: No Calibration Posture: - Skeleton Joints : - Hand Tracking Framework: No OS support: Windows Game Engine Support: - License includes commercial use CL N U I A c c e l e r o m e t e r t e s t Εφκολο ςτθν εγκατάςταςθ. Αρκετά διαδεδομζνο. Φτωχό High level API.
Depth Sensor Available APIs (Kinect Only) Microsoft Kinect SDK (Beta) Native programming languages: Available Wrappers: Depth camera Drivers: RGB camera Drivers: Audio Drivers: Accelerometer: Skeleton Tracking: Calibration Posture: C++,C#,VB.NET None Yes Yes Yes No Yes Skeleton Joints : 20 Hand Tracking Framework: Not Needed No OS support: Windows 7 Game Engine Support: - License does not include commercial use S k e l e t a l V i e w e r s a m p l e o n M i c r o s o f t S D K Πολφ εφκολο ςτθν εγκατάςταςθ. Πολλά παραδείγματα και κώδικασ για τθν εξοικείωςθ ενόσ αρχάριου. Documentation με τθν επεξιγθςθ του κώδικα. Ενεργι υποςτιριξθ του developer community.
Depth Sensor Available APIs (Kinect Only) Evolunce SDK (High level SDK) Native programming languages: Available Wrappers: Depth camera Drivers: RGB camera Drivers: Audio Drivers: Accelerometer: Skeleton Tracking: Calibration Posture: C/C++,C# None Yes Yes No No Yes Skeleton Joints : 15 Hand Tracking Framework: Needed Yes OS support: Windows 7 Game Engine Support: Unity 3D (C#) OGRE (C++) License does not include commercial use W i n & i, a n E v o l u c e S D K A p p l i c a t i o n Εφκολο ςτθν εγκατάςταςι του. Ζτοιμεσ μζκοδοι για Gesture Recognition. Βαςίηεται ςτο OpenNI/NITE τθσ Primesense
Depth Sensor Available APIs API versus features supported Depth cam RGB cam Audio Accelerometer Skeleton Tracking Calibration Posture Skeleton Joints Hand Tracking OpenNi/NITE Needed 15 Libfreenect CL NUI MS Kinect SDK Not needed 20 Evoluce SDK Needed 15 API versus Languages supported C/C++ C# Java Python Lisp VB.NET Actionscript Javascript OpenNi/NITE Libfreenect CL NUI MS Kinect SDK Evoluce SDK
Application Type Example Application OpenNI /NITE Libfreenect CL NUI MS Kinect SDK Hand tracking Touch-free user interface Full Body Tracking Pedestrian Detection Object Tracking Real Time object tracking Speech recognition Home automation Depth Image Sitting position Game engine support PointCloud 3D environment imaging Control Cursor with hand (while sitting in front of the PC) 3D Animated Skeleton for Model Movement Evoluce SDK Multiple sensor support 3D Modeling Hand gesture recognition Full body gesture recognition Any-OS compatible application Characteristics versus Application Type Deaf language Recognizer Motor Disabilities Rehabilitation program NUI Game Commercial Application Virtual dressing room Joints rotation Flight simulator
Οδθγόσ εγκατάςταςθσ OpenNI/NITE Step 1 Κάνουμε απεγκατάςταςθ όλων των drivers του kinect/xtion Step 2 Κατεβάηουμε και εγκακιςτοφμε τισ νεότερεσ Stable ι Unstable εκδόςεισ των: -OpenNI Binaries -OpenNI Compliant Middleware Binaries -OpenNI Compliant Hardware Binaries Step 3 Ανοίγουμε το Device Manager για να βεβαιωκοφμε ότι τα παραπάνω βιματά μασ ιταν επιτυχθμζνα. Αν θ εγκατάςταςθ ιταν ςωςτι κα δοφμε κάτι παρόμοιο με τθν εικόνα δεξιά. Step 4 Ανοίγουμε C:\Program Files\OpenNI\Samples\Bin\Release Εδώ υπάρχουν τα samples του OpenNI και C:\Program Files\Prime Sense\NITE\Samples\Bin\Release για τα samples του ΝΙΤΕ. Step 5 Εάν τα παραπάνω λειτουργοφν τότε εγκαταςτιςαμε με επιτυχία το OpenNI/NITE. Μπορείτε να βρείτε τισ βιβλιοκικεσ: OpenNI: C:\Program Files\OpenNI\Bin NITE: C:\Program Files\Prime Sense\NITE\Bin
Οδθγόσ εγκατάςταςθσ Libfreenect Για τθν εγκατάςταςθ του libfreenect υπάρχει οδθγόσ για κάκε λογιςμικό ςτθν ςελίδα του OpenKinect: http://openkinect.org/wiki/getting_started Το libfreenect είναι το πιο δφςκολο ςτθν εγκατάςταςι του, αλλά με το τεράςτιο developer Community παρζχονται πολλζσ δυνατότθτεσ και source code για τθν ανάπτυξθ εφαρμογών.
Οδθγόσ εγκατάςταςθσ CL NUI Για τθν εγκατάςταςθ του CL NUI δεν ζχουμε παρά να πλοθγθκοφμε ςτθν ςελίδα http://codelaboratories.com/nui και να κατεβάςουμε τον CL NUI Platform Installer.
Οδθγόσ εγκατάςταςθσ Microsoft Kinect SDK Ζνασ εκτενισ οδθγόσ εγκατάςταςθσ, αλλά και οδθγόσ για τα πρώτα βιματα ςτθν χριςθ του kinect ςε C#, είναι το Kinect for Windows SDK Quickstarts. http://channel9.msdn.com/series/kinectsdkquickstarts Επεξθγθματικά βίντεο, PowerPoint παρουςιάςεισ, αλλά και ζτοιμο κώδικα με τισ βαςικζσ αρχζσ χριςθσ του kinect με C#.
Οδθγόσ εγκατάςταςθσ Evoluce SDK Για τθν εγκατάςταςθ του Evoluce SDK δεν ζχουμε παρά να πλοθγθκοφμε ςτθν ςελίδα http://www.evoluce.com/_win-and-i/en/software/overview/index.php?we_objectid=55 και να κατεβάςουμε το SDK. Η Evoluce παρζχει και κάποια παραδείγματα κώδικα (samples) με τα οποία μποροφμε να εξοικειωκοφμε με το API τθσ.
Kinect Specific Features Κατά το initialize του kinect device διαλζγουμε τι πλθροφορία κζλουμε. Μποροφμε να διαλζξουμε ζνα ι περιςςότερα από τα παρακάτω: UseDepth Ενεργοποιεί το IR light και το Depth Sensor και μασ δίνει πλθροφορία βάκουσ. UseDepthAndPlayerIndex Ενεργοποιεί το IR light και το Depth Sensor και μασ δίνει πλθροφορία βάκουσ και επίςθσ ςε ποιόν ανικει το κάκε pixel. UseColor Ενεργοποιεί τθν RGB Camera και μασ δίνει ζγχρωμθ εικόνα. UseSkeletalTracking Ενεργοποιεί το IR light και το Depth Sensor και μασ δίνει ςυντεταγμζνεσ των ςκελετών (των Users) που ζχουν ανιχνευτεί. Kinect Audio Για το initialize του Microphone Array, χρειάηεται μια ςειρά εντολών που περιγράφεται ςτο παραπάνω Tutorial.
UseDepth and UseDepthAndPlayerIndex Από το depth stream παίρνουμε 2 byte πλθροφορίασ για κάκε pixel ςτο οποίο περιζχεται θ καρτεςιανι απόςταςθ ςε χιλιοςτά, από τθν κάμερα μζχρι το κοντινότερο αντικείμενο ςτισ x,y ςυντεταγμζνεσ, ςτο ςφςτθμα αξόνων του sensor. Ζχουμε 2 επιλογζσ: Depth Όταν επιλζγουμε μόνο depth, τα 12 λιγότερο ςθμαντικά bit (0 11) του κάκε pixel περιζχουν depth data και τα υπόλοιπα 4 δεν χρθςιμοποιοφνται. Depth and PlayerIndex Όταν επιλζγουμε depth και player index, τα 3 λιγότερο ςθμαντικά bits (bits 0 2) του κάκε pixel περιζχουν το player index (δείκτθ του παίκτθ) και τα υπόλοιπα περιζχουν το depth data.
UseColor Από το Image stream παίρνουμε κανονικι εικόνα όπωσ μια απλι webcam. Και εδώ ζχουμε 2 επιλογζσ κωδικοποίθςθσ τθσ εικόνασ: ImageType.Color 32-bit, linear X8R8G8B8- formatted color bitmaps, in srgb color space. ImageType.ColorYuv 16-bit, gamma-corrected linear UYVY-formatted color bitmaps.
UseSkeletalTracking Με το MS Kinect SDK ζχουμε 20 joints για τα οποία ζχουμε τισ εξισ πλθροφορίεσ: ID : Το όνομα του ςυγκεκριμζνου joint Position : Μια Vector4 μεταβλθτι όπου X - Η κζςθ του Joint ςτον άξονα x Y - Η κζςθ του Joint ςτον άξονα y Z - Η κζςθ του Joint ςτον άξονα z W - Το Tracking Confidence που ζχει το kinect για το ςυγκεκριμζνο Joint (παίρνει τιμζσ 0-1.0) Tracking State : Σε ποιο ςτάδιο βρίςκεται θ ανίχνευςθ του Joint. Εδώ υπάρχουν 3 πικανά αποτελζςματα: Tracked, PositionOnly,NotTracked
Kinect Audio Ικανότθτεσ τoυ Audio API του kinect SDK: Raw Audio Capture (C#, C++) Echo Cancellation (C++) Record Audio (C#) Speech Recognition (C#) Detect Sound Source and Beam (C#, C++) Παράδειγμα εφαρμογής Detect Sound Source και Beam
Live Kinect SDK Installation Kinect SDK Requirements Hardware: 32 bit (x86) or 64 bit (x64) processor Dual-core 2.66-GHz or faster processor Dedicated USB 2.0 bus 2 GB RAM A retail Kinect for Xbox 360 sensor which includes special USB/power cabling Software: Microsoft Visual Studio 2010 Express or other Visual Studio 2010 edition.net Framework 4.0
Indicative Research Areas with use of NUI devices Τα NUI devices είναι νζεσ ςυςκευζσ οι οποίεσ χρθςιμοποιοφν κακιερωμζνθ τεχνολογία υλικών. Ανατρζχοντασ ςτθν βιβλιογραφία ςυναντάμε μια ολοζνα αυξανόμενθ τάςθ υλοποίθςθσ κλαςικών και μθ ςυςτθμάτων με τθν χριςθ NUI devices. Οι υλοποιιςεισ αυτζσ προζρχονται από διάφορεσ ερευνθτικζσ περιοχζσ όπωσ: Augmented Reality Ambient Intelligent Environments Computational Vision and Robotics Disabilities Gesture Recognition Data Visualization
NUI exemplar applications: HoloDesk Application details Research Area: Project Name: Developed by: Reference: Augmented Reality HoloDesk Microsoft Research Labs http://research.microsoft.com/apps/video/dl.aspx?id=154571
NUI exemplar applications: Interactive Light Display Application details Research Area: Project Name: Developed by: Reference: Ambient Intelligent Environments Interactive Light Display Jared St. Jean http://developkinect.com/news/interactive-display/kinect-i...
NUI exemplar applications: StarMac Application details Research Area: Project Name: Developed by: Reference: Computational Vision and Robotics StarMac Hybrid Systems Lab http://hybrid.eecs.berkeley.edu/
NUI exemplar applications: NAVI Application details Research Area: Project Name: Developed by: Reference: Disabilities NAVI (Navigational Aids for the Visually Impaired) University Of Konstanz, Germany http://hci.uni-konstanz.de/blog/2011/03/15/navi/?lang=en
NUI exemplar applications: Tedcas Application details Research Area: Project Name: Developed by: Reference: Gesture Recognition in Hospitals Tedcas Tedesys http://www.xbox.com/en-us/kinect/kinect-effect
NUI exemplar applications: SimplyCube & Kinect Application details Research Area: Project Name: Developed by: Reference: Motion Capture SimplyCube & Kinect SimplySim http://www.simplysim.net/blog/2011/01/11/
NUI exemplar applications: Interactive Hopscotch Application details Research Area: Project Name: Developed by: Reference: Data Visualization Interactive Hopscotch MediaLab Helsinki http://kinect.dashhacks.com/kinect-/...
Natural Interaction Research Team Application(s) Application details Research Area: Project Name: Developed by: Head Pose Estimation Window View NIRTeam
Natural Interaction Research Team Application(s) Application details Research Area: Project Name: Developed by: Gesture Recognition Puzzle Image Ευκφμιοσ Συντυχάκθσ (NIRTeam)
Natural Interaction Research Team Application(s) Application details Research Area: Project Name: Developed by: Gesture Recognition Presentation Helper Ευκφμιοσ Συντυχάκθσ (NIRTeam)
Βιβλιογραφία http://kinectforwindows.org/ http://openkinect.org/wiki/main_page http://openni.org/ http://codelaboratories.com/home/ http://channel9.msdn.com/niners/code4fun http://channel9.msdn.com/coding4fun/kinect/kinect-audio-positioning http://www.evoluce.com/
Ευχαριςτοφμε για την προςοχή ςασ!