Il classico gioco della morra cinese in chiave moderna. Le mosse dei giocatori sono riconosciute dai framework di gesture recognition Intel Perceptual SDK e Microsoft Kinect che comunicano tramite SignalR hostato su Azure.
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Morra cinese in salsa gesture con contorno di SignalR by Massimo Bonanni, Marco Dal Pino, Nicolò Carandini
1. Marco Dal Pino,
Nicolò Carandini,
Massimo Bonanni
Morra cinese in salsa gesture con contorno di
SignalR
DomusDotNet (www.domusdotnet.org),
DotNetToscana (www.dotnettoscana.org)
2. Chi siamo!
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Marco Dal Pino
Freelance Consultant .NET, Embedded
@marcodalpino
www.mobileprog.net
m.dalpino@dpcons.com
Massimo Bonanni Nicolò Carandini
Senior .NET Developer @ THAOS Senior Developer @ TPCWare
@massimobonanni @TPCWare
http://codetailor.blogspot.com blogs.ugidotnet.org/Nick60
massimo.bonanni@domusdotnet.org nicolo.carandini@domusdotnet.org
3. Agenda
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
• Introduzione
• La mente: SignalR
• Il braccio destro: Intel Perceptual SDK
• Il braccio sinistro: Kinect SDK
• Facciamo una partita? (demo)
4. Introduzione
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
ASP.NET SignalR
5. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
ASP.NET SignalR
Incredibly simple real-time web for .NET
6. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
client/server ?
REQUEST
INTERNET
RESPONSE
INTERNET
<HTML> Page
7. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Uno, due, tre… stella!
Quando il server riceve dati da un
client, deve poter inviare dati
agli altri client.
Per farlo posso usare le tecniche di
polling, long polling e websocket.
Utilizzando SignalR.
8. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
• SignalR è la nuova libreria che aggiunge
funzionalità Real-Time alle applicazioni web
• Fa parte della famiglia ASP.NET !
9. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
• Implementa, ove possibile, WebSockets.
• Fa il downgrade in modo trasparente alle altre tecniche
di polling.
• Fornisce una API di alto livello, molto semplice da
usare, per fare RPC da server a client in un'applicazione
ASP.NET (si possono chiamare funzioni JavaScript lato
client da codice .NET lato server, e viceversa).
• Offre funzionalità di gestione degli eventi di connessione
e sconnessione e la gestione delle autorizzazioni.
10. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Match Making
11. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Svolgimento di un turno di gioco
12. SignalR
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Pubblicare il servizio su Azure
13. Perceptual
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Il braccio destro: Intel Perceptual SDK
14. Perceptual
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
• Video Camera RGB HD 720p
• Sensori di profondità: proiettore IR +
Camera IR
• Array di microfoni stereo
Video Camera
RGB HD 720p
Sensore di
profondità 3D
Doppio Array
di microfoni Base multi
attacco
16. Perceptual
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Gesture Recognition Module
Input: flusso immagini RGB, distanza, stream infrarosso
Output: gesture riconosciute o risultati di tracciamento intermedi
• Blob: risultati intermedi
• Tracciamento di nodi geometrici: nodi di scheletro umano o parti di esso
• Notifica di Pose o gesture: predefinite, eventi attivaz. disattivaz.
• Notifica di Alert: errori (nodevice, out of view ecc)
17. Perceptual
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Codice….
18. Perceptual
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Pro
• Documentazione ampia (con molti sample)
http://software.intel.com
• Gesture e posture native
Contro
• Utilizzabile solo da vicino
• SDK non accessibile a tutti (ma cresce porting in C#)
• Diffusione scarsa
• Costo device alto (prevista integrazione in UB next
gen.)
19. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Il braccio sinistro: Kinect SDK
20. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
• Video Camera RGB (CMOS)
• Sensori di profondità: proiettore IR +
Camera IR (CMOS)
• Inclinazione motorizzata (±27 gradi)
• 4 Microfoni Video Camera
RGB
Sensori di
profondità
Batteria di 4
microfoni
Inclinazione
Motorizzata
21. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Architettura
Microsoft. Speech.dll
KinectInteraction Microsoft.Kinect.dll (v11)
Speech Runtime
(v11)
Kinect for Windows
Runtime + Drivers
22. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Sensor Data Stream
C D A
Color Depth Audio
IR AC
Infrared Accelerometer
23. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Recognition Stream
ST S FT
Skeleton Tracking Speech Recognition Face Tracking
D A C D ST
Skeleton
Depth Audio Color Depth Tracking
IS
Interaction Stream
D ST
Skeleton
Depth Tracking
25. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
KinectInteraction
Framework
Insieme di classi e
componenti che forniscono
funzionalità di base per
l’implementazione
dell’interazione tra il device
e le nostre applicazioni.
26. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Kinect Fusion
27. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Pro
• SDK di facile utilizzo
• Documentazione ampia (con molti sample)
• Possibilità di gestire figura intera o metà (seated mode)
• Possibilità di gestire fino a 4 device
• Gestione di due player in maniera completa
Contro
• Gesture non out-of-the-box (solo Grip e Press)
• Device ingombrante
• Hub USB dedicato
• Costo device alto (ma è compresa la licenza di distribuzione)
28. Kinect
Marco Dal Pino,
Nicolò Carandini,
DomusDotNet
Massimo Bonanni (www.domusdotnet.org), DotNetToscana
(www.dotnettoscana.org)
Codice….