Your SlideShare is downloading. ×
DotNetCampus 2014 - Introduzione a Kinect
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

DotNetCampus 2014 - Introduzione a Kinect

546
views

Published on

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 …

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

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
546
On Slideshare
0
From Embeds
0
Number of Embeds
21
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Template designed by Introduzione a Kinect Template designed by Massimo Bonanni massimo.bonanni@tiscali.it @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 l’interfaccia di un sistema in cui gli utenti riescono ad interagire utilizzando un approccio «naturale» cioè riescono ad utilizzare le funzionalità del sistema senza l’uso 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 l’applicazione del computer o manipolare contenuti sullo schermo.
  • 6. Template designed by NUI : Evoluzione delle interfacce
  • 7. Template designed by • Rapido apprendimento delle funzionalità; • L’utente è in grado di diventare «esperto» sull’interfaccia in minor tempo senza particolare training; • Può aiutare portatori di handicap nell’utilizzo del sistema; • E’ più divertente utilizzare l’applicazione  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 L’SDK è in grado di convertire lo stream della depth cam in dati utilizzabili 3 La nostra applicazione utilizza le info dell’SDK 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 all’asse centrale); Possibilità di restringere l’angolo di ascolto a step di 10°; Noise reduction: -20dB per l’audio proveniente da davanti -26db per l’audio proveniente da dietro Introduzione a Kinect: Caratteristiche
  • 15. Template designed by L’SDK 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 L’SDK è scaricabile dall’indirizzo 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 all’utente 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 all’utente 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 dell’interazione cambia radicalmente. Kinect Design Interactions : Gesture «Dogma» In un gioco la sfida è divertente In un’applicazione la sfida è frustrante
  • 31. Template designed by L’affidabilità è 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 l’uso delle gesture implementate con una mano per le operazioni comuni o quelle che l’utente esegue più spesso (ad esempio spostare un oggetto). Privilegiare l’uso 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 d’azione dell’utente: 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 d’azione
  • 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 l’esecuzione 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 l’utente è 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 L’utilizzo 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 dell’ambiente 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 dell’utente; • 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 l’utente fornendo un suggerimento Kinect Design Interactions : Aiutare l’utente
  • 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 l’utente non è di fronte allo schermo fare in modo di farli ascoltare); • indicare visivamente che il Kinect è in ascolto (magari con l’immagine di un microfono); • se si verificano problemi con l’apparato di ricezione, segnalarlo all’utente 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 dell’utente, 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 massimo.bonanni@tiscali.it Grazie