SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Template designed by
Introduzione a Kinect
Template designed by
Massimo Bonanni
massimo.bonanni@tiscali.it
@massimobonanni
codetailor.blogspot.com
Template designed by
brought to you by
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
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
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.
Template designed by
NUI : Evoluzione delle interfacce
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
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
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
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
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)
Template designed by
Angolo di visuale:
Orizzontale: 57,5°
Verticale: 43,5° (da +27° a -27°)
Introduzione a Kinect: Caratteristiche
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
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
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
Template designed by
Il device restituisce 3 stream:
• Video
• Depth
• Audio
Kinect: Architettura
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
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
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
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
Kinect Explorer
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
Template designed by
Kinect Fusion
Kinect Fusion
Template designed by
Tre tipologie di gesture:
• Static Gesture (posture)
• Continuous Gesture
• Dynamic Gesture
Kinect Design Interactions : Gesture
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!!!!
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
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
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»
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
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à
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
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?
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
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
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
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
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
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»
Template designed by
In caso di riconoscimento non perfetto, è opportuno avvertire
l’utente fornendo un suggerimento
Kinect Design Interactions : Aiutare l’utente
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
Interaction Gallery
Template designed by
Q&A
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

Weitere ähnliche Inhalte

Ähnlich wie DotNetCampus 2014 - Introduzione a Kinect

Present kinect4 windows
Present kinect4 windowsPresent kinect4 windows
Present kinect4 windowsI3P
 
Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!
Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!
Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!Massimo Bonanni
 
Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...DotNetCampus
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play frameworkCSP Scarl
 
Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Massimo Bonanni
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro droneDotNetCampus
 
Sviluppare applicazioni Metro con Windows 8 e WinRT
Sviluppare applicazioni Metro con Windows 8 e WinRTSviluppare applicazioni Metro con Windows 8 e WinRT
Sviluppare applicazioni Metro con Windows 8 e WinRTcodeblock
 
Presentazione ict easy
Presentazione ict easyPresentazione ict easy
Presentazione ict easyaxelmo69
 
L'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a portaL'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a portaMicrofocusitalia
 
DigitArch - Videocamere di profondità (Enrico Aymerich)
DigitArch - Videocamere di profondità (Enrico Aymerich)DigitArch - Videocamere di profondità (Enrico Aymerich)
DigitArch - Videocamere di profondità (Enrico Aymerich)Sardegna Ricerche
 
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione LelliMatteo Lelli
 
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperienceDesign of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperienceAntonio Notarangelo
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentDomusDotNet
 
Sviluppo di un software in java per il controllo di un braccio robotico trami...
Sviluppo di un software in java per il controllo di un braccio robotico trami...Sviluppo di un software in java per il controllo di un braccio robotico trami...
Sviluppo di un software in java per il controllo di un braccio robotico trami...Glauco Lorenzut
 
Smau milano 2012 arena expo comm francesco-abbo
Smau milano 2012   arena expo comm francesco-abboSmau milano 2012   arena expo comm francesco-abbo
Smau milano 2012 arena expo comm francesco-abboSMAU
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Introduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBoxIntroduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBoxMassimo Bonanni
 

Ähnlich wie DotNetCampus 2014 - Introduzione a Kinect (20)

Present kinect4 windows
Present kinect4 windowsPresent kinect4 windows
Present kinect4 windows
 
Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!
Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!
Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!
 
Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...Gam05   costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
Gam05 costruisci il tuo antifurto perfetto con kinect e gli azure mobile se...
 
Touch&play framework
Touch&play frameworkTouch&play framework
Touch&play framework
 
Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro drone
 
Sviluppare applicazioni Metro con Windows 8 e WinRT
Sviluppare applicazioni Metro con Windows 8 e WinRTSviluppare applicazioni Metro con Windows 8 e WinRT
Sviluppare applicazioni Metro con Windows 8 e WinRT
 
Presentazione ict easy
Presentazione ict easyPresentazione ict easy
Presentazione ict easy
 
L'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a portaL'App store per applicazioni Enterprise: La mobilità porta a porta
L'App store per applicazioni Enterprise: La mobilità porta a porta
 
DigitArch - Videocamere di profondità (Enrico Aymerich)
DigitArch - Videocamere di profondità (Enrico Aymerich)DigitArch - Videocamere di profondità (Enrico Aymerich)
DigitArch - Videocamere di profondità (Enrico Aymerich)
 
Nui for real
Nui for realNui for real
Nui for real
 
Presentazione Android
Presentazione AndroidPresentazione Android
Presentazione Android
 
v2 Presentazione Lelli
v2 Presentazione Lelliv2 Presentazione Lelli
v2 Presentazione Lelli
 
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperienceDesign of G.E.M.I.X.: Game Engine Movie Interaction eXperience
Design of G.E.M.I.X.: Game Engine Movie Interaction eXperience
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background Agent
 
Sviluppo di un software in java per il controllo di un braccio robotico trami...
Sviluppo di un software in java per il controllo di un braccio robotico trami...Sviluppo di un software in java per il controllo di un braccio robotico trami...
Sviluppo di un software in java per il controllo di un braccio robotico trami...
 
OpenGL e realtà aumentata
OpenGL e realtà aumentataOpenGL e realtà aumentata
OpenGL e realtà aumentata
 
Smau milano 2012 arena expo comm francesco-abbo
Smau milano 2012   arena expo comm francesco-abboSmau milano 2012   arena expo comm francesco-abbo
Smau milano 2012 arena expo comm francesco-abbo
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Introduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBoxIntroduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBox
 

Mehr von Massimo Bonanni

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure FunctionsMassimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure FunctionsMassimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsMassimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Massimo Bonanni
 

Mehr von Massimo Bonanni (20)

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
 
IoT in salsa serverless
IoT in salsa serverlessIoT in salsa serverless
IoT in salsa serverless
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
 
IoT in salsa Serverless
IoT in salsa ServerlessIoT in salsa Serverless
IoT in salsa Serverless
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
 

Kürzlich hochgeladen

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 

Kürzlich hochgeladen (9)

Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 

DotNetCampus 2014 - Introduzione a Kinect

  • 1. Template designed by Introduzione a Kinect Template designed by Massimo Bonanni massimo.bonanni@tiscali.it @massimobonanni codetailor.blogspot.com
  • 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
  • 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