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
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.
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
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
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
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
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