dotnetcampus 2014 - introduzione a kinect

44
Template designed by Introduzione a Kinect Template designed by Massimo Bonanni [email protected] @massimobonanni codetailor.blogspot.com

Upload: massimo-bonanni

Post on 14-Jan-2015

526 views

Category:

Technology


2 download

DESCRIPTION

Microsoft Kinect è un accessorio originariamente pensato per Xbox 360 ma che si è fatto strada anche per applicazioni non ludiche grazie alla sua semplicità d'uso e al suo SDK per il mondo .NET. In questa sessione introdurremo i concetti e le funzionalità che contraddistinguono la versione 1.0 di Kinect for Windows mettendo il luce pregi e difetti e cercando di dare un'idea di come possa essere sfruttato per realizzare applicazioni NUI di nuova generazione. Slide della sessione "Introduzione a Kinect" tenuta durante il DotNetCampus 2014 a Roma il 10/05/2014

TRANSCRIPT

  • 1. Template designed by Introduzione a Kinect Template designed by Massimo Bonanni [email protected] @massimobonanni codetailor.blogspot.com

2. Template designed by brought to you by 3. Template designed by Mi occupo di progettazione e sviluppo applicazioni con tecnologie Microsoft da sempre. Fondatore e presidente della community DomusDotNet (www.domusdotnet.org) Microsoft Certified Professional Microsoft MVP dal 2011 nella categoria VB.NET Ambassador Intel per Perceptual Computing chi sono 4. Template designed by Introduzione alle Natural User Interface Introduzione a Kinect Come e fatto Requisiti HW e SW Caratteristiche tecniche Funzionalit Kinect Design Interactions agenda 5. Template designed by Si definisce NUI linterfaccia di un sistema in cui gli utenti riescono ad interagire utilizzando un approccio naturale cio riescono ad utilizzare le funzionalit del sistema senza luso di dispositivi artificiali (come mouse, trackball o tastiera) Natural User Interface Una NUI rivolta ad utenti in grado di effettuare movimenti relativamente naturali, azioni e gesti che devono controllare lapplicazione del computer o manipolare contenuti sullo schermo. 6. Template designed by NUI : Evoluzione delle interfacce 7. Template designed by Rapido apprendimento delle funzionalit; Lutente in grado di diventare esperto sullinterfaccia in minor tempo senza particolare training; Pu aiutare portatori di handicap nellutilizzo del sistema; E pi divertente utilizzare lapplicazione NUI: Vantaggi 8. Template designed by Affinch le NUI siano efficaci necessario che utilizzino gli Skill Innati. Uno Skill Innato un movimento insito nella natura umana e nel suo quotidiano (il gesto di sfogliare uno skill innato). Uno Skill Appreso un movimento non naturale e che necessita di un periodo di training (muovere un mouse uno skill appreso). Skill innati vs Skill appresi 9. Template designed by Video Camera RGB (CMOS) Sensori di profondit: proiettore IR + Camera IR (CMOS) Inclinazione motorizzata (27 gradi) 4 Microfoni Introduzione a Kinect: Cosa c dentro Inclinazione Motorizzata Batteria di 4 microfoni Sensori di profondit Video Camera RGB 10. Template designed by Introduzione a Kinect: Come funziona Il proiettore ad infrarossi illumina il soggetto con dei pattern 1 La camera infrarossi misura la distanza con un approccio a luce strutturata 2 LSDK in grado di convertire lo stream della depth cam in dati utilizzabili 3 La nostra applicazione utilizza le info dellSDK 4 11. Template designed by Sistema Operativo Windows 7 Windows 8/8.1 (no WSA) Windows Embedded Standard 7 Windows Embedded Standard 8 Hardware processore 32-bit (x86) or 64-bit (x64) processore dual-core, 2.66-GHz o superiore bus USB 2.0 dedicato RAM 2 GB scheda grafica DirectX 9.0c o superiore Kinect con cavo usb per collegamento al pc Software Visual Studio 2010 Express o superiori .NET Framework 4.0 o successivi Runtime DirectX 9 (DirectX 11 se si utilizza Fusion) Microsoft Speech Platform SDK v11 (speech recognition) Introduzione a Kinect: Requisiti minimi (v 1.8) 12. Template designed by Angolo di visuale: Orizzontale: 57,5 Verticale: 43,5 (da +27 a -27) Introduzione a Kinect: Caratteristiche 13. Template designed by Introduzione a Kinect: Caratteristiche Profondit (Near Mode): Limite fisico: 0,4m 3,0m Limite pratico : 0,8m 2,5m Profondit (Default Mode): Limite fisico: 0,8m 4,0m Limite pratico : 1,2m 3,5m 14. Template designed by Audio: Angolo di ascolto: 100 (da -50 a +50 rispetto allasse centrale); Possibilit di restringere langolo di ascolto a step di 10; Noise reduction: -20dB per laudio proveniente da davanti -26db per laudio proveniente da dietro Introduzione a Kinect: Caratteristiche 15. Template designed by LSDK mette a disposizione una serie di strumenti e una libreria di classi in grado di interagire con i sensori del dispositivo fornendo allo sviluppatore oggetti ed eventi. Introduzione a Kinect: Architettura 16. Template designed by Il device restituisce 3 stream: Video Depth Audio Kinect: Architettura 17. Template designed by Il Kinect pu gestire oggetti a differenti distanze in base alla modalit selezionata: Default Mode: oggetti tra 80 cm e 4 metri; Near Mode: oggetti tra 40 cm e 3 metri. Default Mode vs Near Mode 18. Template designed by Kinect fornisce un insiemi di scheletri dei player rilevati: Al massimo due player contemporanei (pi altri 4 con informazioni ridotte); Ogni scheletro pu essere Tracked o NotTracked; Ogni scheletro prevede un array di 20 Joint ognuno con la propria posizione (x,y,z); Ogni Joint pu essere Tracked, NotTracked o Inferred (NotTracked raro). La classe Skeleton fornisce anche informazioni sulle ossa del player. Skeletal Tracking 19. Template designed by Il device dispone di una batteria di 4 microfoni con delle funzionalit di audio processing hardware: Multichannel echo cancellation (MEC) Sound position tracking Directional Microfone Noise suppression e Noise reduction Kinect: Audio 20. Template designed by LSDK scaricabile dallindirizzo http://www.kinectforwindows.org Vengono installati contestualmente: SDK (con samples) Drivers Runtime (quello da distribuire con le applicazioni ) Speech Recognition Language Pack. Introduzione a Kinect : SDK 21. Kinect Explorer 22. Template designed by KinectFusion permette di eseguire la scansione 3D di un oggetto e la creazione del modello. L'utente pu dipingere una scena con Kinect e contemporaneamente vedere e interagire con un modello 3D dettagliato della scena. Kinect Fusion 23. Template designed by Kinect Fusion 24. Kinect Fusion 25. Template designed by Tre tipologie di gesture: Static Gesture (posture) Continuous Gesture Dynamic Gesture Kinect Design Interactions : Gesture 26. Template designed by Nelle Static Gesture, chiamate anche Posture, l'utente mantiene una posizione (anche solo di una parte del corpo) fino a quando questa non viene riconosciuta. E opportuno non scegliere posture che possono avere diversi significati in diverse culture (ad esempio il pollice in alto) Kinect Design Interactions : Static Gesture Va benissimo in Europa non in Iran!!!! 27. Template designed by Le Continuous Gesture sono le gesture che permettono di tracciare gli utenti che si spostano davanti al Kinect. Sono le gesture pi adatte per i giochi. Kinect Design Interactions : Continuous Gesture 28. Template designed by Le Dynamic Gesture sono quelle gesture che forniscono un feedback allutente a seguito di un movimento eseguito con una determinata parte del corpo. Sono le gesture pi conosciute. Kinect Design Interactions : Dynamic Gesture 29. Template designed by Alcune regole relative alle gesture: Dare sempre un feedback allutente quando il sistema riconosce una gesture; Prevedere gesture confortevoli; Disegnare gesture che, almeno per i controlli di base, siano innate oppure di semplice comprensione; Cercare di implementare gesture da eseguire in maniera rapida e precisa con movimenti quanto pi possibili naturali Kinect Design Interactions : Gesture Dogma 30. Template designed by Il Kinect ancora, spesso, associato al gioco. Quando si utilizza Kinect per applicazioni non ludiche, il punto di vista dellinterazione cambia radicalmente. Kinect Design Interactions : Gesture Dogma In un gioco la sfida divertente In unapplicazione la sfida frustrante 31. Template designed by Laffidabilit uno dei requisiti fondamentali per le applicazioni che fanno uso di gesture: La gesture deve poter essere eseguita in molti modi differenti tutti simili; Non dovrebbero esserci false attivazioni; Dovrebbe esserci consistenza nelle gesture (se una gesture esegue un task in una certa maschera, dovrebbe eseguire sempre lo stesso task anche nelle altre); Le gesture dovrebbero differire tra loro per evitare fraintendimenti Kinect Design Interactions : Affidabilit 32. Template designed by Se la direzione di due gesture la stessa, queste potrebbero confondersi; Se il percorso che due gesture compiono pi o meno lo stesso, queste potrebbero confondersi; Se il punto di inizio e di fine di due gesture sono simili, queste potrebbero confondersi; Se due gesture hanno tempi di esecuzione simili, queste potrebbero confondersi Kinect Design Interactions : Differenziare le gesture 33. Template designed by Privilegiare luso delle gesture implementate con una mano per le operazioni comuni o quelle che lutente esegue pi spesso (ad esempio spostare un oggetto). Privilegiare luso delle gesture implementate con due mani per le funzionalit avanzate (ad esempio lo zoom) Kinect Design Interactions : Una o due mani? 34. Template designed by Nel caso si utilizzino delle posture, tenere presente il raggio dazione dellutente: questo non dovrebbe spostarsi troppo per raggiungere i comandi. Dove possibile, progettare le stesse gesture sia per la posizione in piedi che seduta. Kinect Design Interactions : Range dazione 35. Template designed by Quando implementiamo gesture utilizzando Kinect, necessario fare attenzione alle barriere tecniche dello strumento. Mantenere le braccia al lato del corpo durante lesecuzione delle gesture rende queste pi facili da tracciare, mentre i movimenti delle mani di fronte al corpo pu essere inaffidabile. Gesture che prevedono di estendere le mani al di sopra della testa possono essere tagliate Kinect Design Interactions : Le barriere tecniche del Kinect 36. Template designed by Lo skeleton tracking pi stabile quando lutente rivolto verso il dispositivo La velocit con cui il Kinect esegue lo skeleton tracking e il frame rate della camera devono essere tenuti in considerazione quando si progettano le gesture. Kinect Design Interactions : Le barriere tecniche del Kinect 37. Template designed by Lutilizzo dei comandi vocali pu aprire nuovi scenari in ottica NUI. Generalmente si usano parole o semplici frasi per eseguire comandi di uso non comune. E necessario fare attenzione al rumore di fondo dellambiente in cui ci si trova. In ambienti con tanto rumore non consigliabile utilizzare i comandi vocali Kinect Design Interactions : La voce 38. Template designed by Quando si scelgono i comandi vocali bisogna tener presente alcune considerazioni: Usare parole semplici in modo da favorire una memorizzazione migliore da parte dellutente; Mantenere le frasi corte (al massimo 5 parole); Scegliere parole con un suono differente le une dalle altre. Kinect Design Interactions : Scegliere i comandi 39. Template designed by Nel caso in cui non si riesca a trovare un insieme di parole adatte o le possibili opzioni sono simili, possibile utilizzare una mappa numerica per selezionare le opzioni Kinect Design Interactions : e se le cose si complicano. Dire: camera, stella o tool Dire: 1, 2 o 3 40. Template designed by In caso di riconoscimento non perfetto, opportuno avvertire lutente fornendo un suggerimento Kinect Design Interactions : Aiutare lutente 41. Template designed by E necessario prevedere alcune best practice a livello di UI: visualizzare i comandi disponibili, magari contestualizzandoli in base allo scenario (se lutente non di fronte allo schermo fare in modo di farli ascoltare); indicare visivamente che il Kinect in ascolto (magari con limmagine di un microfono); se si verificano problemi con lapparato di ricezione, segnalarlo allutente in maniera adeguata; il voice recognition non dovrebbe essere l'unico metodo con cui un utente pu interagire con l'applicazione. Implementare la possibilit, da parte dellutente, di utilizzare un altro metodo di input. Kinect Design Interactions : Voice recognition e UI 42. Interaction Gallery 43. Template designed by Q&A 44. Template designed by Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi [email protected] Grazie