IoT Saturday PN 2019 - S8-6 Francesco NotFrancesco Not
La gran parte dei progetti IoT parte dallo sviluppo di un Proof-of-Concept basato su piattaforme di prototipazione rapida (Arduino, Raspberry Pi, ecc.) , che permettono di valutare velocemente la fattibilità dell'idea e mettono le basi per l'implementazione della soluzione. Quando il PoC è validato, il sistema funziona ed il backend è operativo, è il momento di pensare all'industrializzazione. Ottimizzazioni, portabilità, prototipi, test, certificazioni, produzione... quanto complesso è realizzare un prodotto?
Di progetti fatti con Arduino se ne sono visti tanti, e tanti se ne continuano a vedere. Se ne vedono un po' meno con Netduino, il microcontrollore che gira con il .NET Micro Framework. In questa sessione vedremo come il nostro giocattolino può diventare un dispositivo di input per il nostro computer. Costruiremo un semplice circuito, e useremo Netduino per raccogliere i dati dall'ambiente esterno e inviarli ad un'applicazione Windows Store.
Costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time e batch analysis e integrazione con Dynamics 365. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
Async: scalabilità e responsiveness senza pari! @ CDaysMatteo Baglini
Per ottenere applicazioni scalabili con un consumo minimo di risorse e una UI sempre reattiva,
dobbiamo scrivere software che opera in maniera asincrona.
In questa sessione vedremo perchè è importante sfruttare questo tipo di programmazione e
quali strumenti mette a disposizione il .NET Framework.
http://www.communitydays.it/events/communitydays-2013/misc04/
IoT Saturday PN 2019 - S8-6 Francesco NotFrancesco Not
La gran parte dei progetti IoT parte dallo sviluppo di un Proof-of-Concept basato su piattaforme di prototipazione rapida (Arduino, Raspberry Pi, ecc.) , che permettono di valutare velocemente la fattibilità dell'idea e mettono le basi per l'implementazione della soluzione. Quando il PoC è validato, il sistema funziona ed il backend è operativo, è il momento di pensare all'industrializzazione. Ottimizzazioni, portabilità, prototipi, test, certificazioni, produzione... quanto complesso è realizzare un prodotto?
Di progetti fatti con Arduino se ne sono visti tanti, e tanti se ne continuano a vedere. Se ne vedono un po' meno con Netduino, il microcontrollore che gira con il .NET Micro Framework. In questa sessione vedremo come il nostro giocattolino può diventare un dispositivo di input per il nostro computer. Costruiremo un semplice circuito, e useremo Netduino per raccogliere i dati dall'ambiente esterno e inviarli ad un'applicazione Windows Store.
Costruire un PoC IoT completo: gestione allarmi, device heartbeat, real-time e batch analysis e integrazione con Dynamics 365. L'intera soluzione sarà costruita utilizzando la piattaforma Cloud Microsoft (Stream Analytics, Logic Apps, SQL Database, Power BI, Dynamics 365).
Il tutto in 1 ora e come sempre scrivendo meno codice possibile!
Async: scalabilità e responsiveness senza pari! @ CDaysMatteo Baglini
Per ottenere applicazioni scalabili con un consumo minimo di risorse e una UI sempre reattiva,
dobbiamo scrivere software che opera in maniera asincrona.
In questa sessione vedremo perchè è importante sfruttare questo tipo di programmazione e
quali strumenti mette a disposizione il .NET Framework.
http://www.communitydays.it/events/communitydays-2013/misc04/
Hey there! Are you ready to create something awesome? In questa talk vedremmo l'evoluzione del .NET MF verso questo nuovo toolkit di prototipazione rapida, di come cambi l'approccio sia costruttivo che implementativo verso i micro dispositivi. Durante il talk saranno esplorati i nuovi strumenti messi a disposizione, il cambi di paradigma per l'accesso all'hw, i nuovi device ed i relativi moduli. Vedremmo poi come sia possibile integrare nuove componenti sia hardware che software all'interno di Visual Studio e di .NET Gadgeteer
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
AppStudio e' un ambiente RAD web based per lo sviluppo di Universal App (Windows Phone 8.1 e Windows 8.1) per la visualizzazioni di sorgenti dati. In questa sessione vedremo come sia facile realizzare da zero un'app che acceda a sorgenti remote e come sia, infine, possibile personalizzare il codice sorgente per poter implementare le proprie personalizzazioni.
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
Visto il successo dello scorso anno, anche quest’anno il DotNetCampus ospita un Cert Path dedicato a chi vuole avvicinarsi al mondo delle certificazioni di prodotto e di tecnologia Microsoft. Microsoft, così come altre importanti aziende sul mercato, propone diversi percorsi di certificazione che ognuno può intraprendere, anche in autonomia, per guadagnare competenza e ottenere un riconoscimento. Una certificazione è generalmente un titolo che si ottiene dopo uno o più esami conseguiti con successo in un centro di formazione abilitato. Nel Cert Path vogliamo spiegarvi come affrontare alcuni esami di base per ottenere il titolo di MCP (Microsoft Certified Professional).
L'Internet of Things è una realtà e primo o dopo avrà il suo impatto significativo nelle nostre aziende.
E a quel punto, i device saranno un asset di cui gestire il lifetime, alla pari dei nostri server, reti e cloud.
Azure IoT è la piattaforma su cui possiamo sviluppare la nostra soluzione IoT e cerchiamo di comprendere cosa significa amministrare un parco device.
Alcuni temi: protocolli di comunicazione e sicurezza del device e della comunicazione. Provisioning dei device. Gestione e monitoraggio dei dispositivi. Strumenti ed API a disposizione per l'IT Pro.
Predictive Maintenance per le aziende del nord-est con Azure e IoTMarco Parenzan
Due grandi fenomeni stanno caratterizzando l'IT degli ultimi anni.
Il cloud di Azure permette ad una qualunque azienda, compresa la piccola e media impresa italiana tipica del nostro tessuto imprenditoriale triveneto, di erogare servizi IT, worldwide e con qualità.
Internet of Things (IoT), assieme al movimento dei "makers", permette di aggiungere "intelligenza" a qualunque manufatto o prodotto, affinchè questo si relazioni con i servizi cloud che abbiamo sviluppato.
Infiniti sono gli scenari possibili e noi ne analizzeremo uno. Sotto il nome di Predictive Maintenance si identificano tutta quella serie di servizi che possiamo erogare con il Cloud e l'IoT per acquisire dati dai prodotti che già si vendono a clienti worldwide; in caso di degrado delle prestazioni, i dati acquisiti potranno essere analizzati al fine di pianificare una manutenzione preventiva, prima che avvenga una più onerosa rottura. Questo apre non solo nuovi mercati, ma anche nuovi prodotti, servizi o canali di vendita.
Il tutto realizzabile con le risorse disponibili sul territorio e con la tecnologia Microsoft.
La versione 2 del Kinect, ed il suo SDK, consentono di implementare applicazioni Windows Store che possono essere pubblicate nello store ed essere disponibili da subito per l’utente consumer. In questa sessione vedremo le caratteristiche base del sensore, come questo possa essere utilizzato in una Windows Store App e quali tool ci mette a disposizione l’SDK per semplificare la realizzazione di nuove app e per abilitare le applicazioni già esistenti all’utilizzo del sensore stesso.
Sessione tenuta durante i CommunityDays 2015 a Milano il 26/03/2015.
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
Hey there! Are you ready to create something awesome? In questa talk vedremmo l'evoluzione del .NET MF verso questo nuovo toolkit di prototipazione rapida, di come cambi l'approccio sia costruttivo che implementativo verso i micro dispositivi. Durante il talk saranno esplorati i nuovi strumenti messi a disposizione, il cambi di paradigma per l'accesso all'hw, i nuovi device ed i relativi moduli. Vedremmo poi come sia possibile integrare nuove componenti sia hardware che software all'interno di Visual Studio e di .NET Gadgeteer
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
AppStudio e' un ambiente RAD web based per lo sviluppo di Universal App (Windows Phone 8.1 e Windows 8.1) per la visualizzazioni di sorgenti dati. In questa sessione vedremo come sia facile realizzare da zero un'app che acceda a sorgenti remote e come sia, infine, possibile personalizzare il codice sorgente per poter implementare le proprie personalizzazioni.
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
Visto il successo dello scorso anno, anche quest’anno il DotNetCampus ospita un Cert Path dedicato a chi vuole avvicinarsi al mondo delle certificazioni di prodotto e di tecnologia Microsoft. Microsoft, così come altre importanti aziende sul mercato, propone diversi percorsi di certificazione che ognuno può intraprendere, anche in autonomia, per guadagnare competenza e ottenere un riconoscimento. Una certificazione è generalmente un titolo che si ottiene dopo uno o più esami conseguiti con successo in un centro di formazione abilitato. Nel Cert Path vogliamo spiegarvi come affrontare alcuni esami di base per ottenere il titolo di MCP (Microsoft Certified Professional).
L'Internet of Things è una realtà e primo o dopo avrà il suo impatto significativo nelle nostre aziende.
E a quel punto, i device saranno un asset di cui gestire il lifetime, alla pari dei nostri server, reti e cloud.
Azure IoT è la piattaforma su cui possiamo sviluppare la nostra soluzione IoT e cerchiamo di comprendere cosa significa amministrare un parco device.
Alcuni temi: protocolli di comunicazione e sicurezza del device e della comunicazione. Provisioning dei device. Gestione e monitoraggio dei dispositivi. Strumenti ed API a disposizione per l'IT Pro.
Predictive Maintenance per le aziende del nord-est con Azure e IoTMarco Parenzan
Due grandi fenomeni stanno caratterizzando l'IT degli ultimi anni.
Il cloud di Azure permette ad una qualunque azienda, compresa la piccola e media impresa italiana tipica del nostro tessuto imprenditoriale triveneto, di erogare servizi IT, worldwide e con qualità.
Internet of Things (IoT), assieme al movimento dei "makers", permette di aggiungere "intelligenza" a qualunque manufatto o prodotto, affinchè questo si relazioni con i servizi cloud che abbiamo sviluppato.
Infiniti sono gli scenari possibili e noi ne analizzeremo uno. Sotto il nome di Predictive Maintenance si identificano tutta quella serie di servizi che possiamo erogare con il Cloud e l'IoT per acquisire dati dai prodotti che già si vendono a clienti worldwide; in caso di degrado delle prestazioni, i dati acquisiti potranno essere analizzati al fine di pianificare una manutenzione preventiva, prima che avvenga una più onerosa rottura. Questo apre non solo nuovi mercati, ma anche nuovi prodotti, servizi o canali di vendita.
Il tutto realizzabile con le risorse disponibili sul territorio e con la tecnologia Microsoft.
La versione 2 del Kinect, ed il suo SDK, consentono di implementare applicazioni Windows Store che possono essere pubblicate nello store ed essere disponibili da subito per l’utente consumer. In questa sessione vedremo le caratteristiche base del sensore, come questo possa essere utilizzato in una Windows Store App e quali tool ci mette a disposizione l’SDK per semplificare la realizzazione di nuove app e per abilitare le applicazioni già esistenti all’utilizzo del sensore stesso.
Sessione tenuta durante i CommunityDays 2015 a Milano il 26/03/2015.
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
Speech SMAU Milano del 19/10/2012 tenuto da Francesco Abbo sviluppatore Xonne.
La realizzazione di App mobile sfruttando le potenzialità di OpenGL e i concetti della realtà aumenta. Presentazione delle tecnologie ed approccio allo sviluppo di un prototipo.
Slide del webinar Intel rivolte a tutti coloro che, avendo già una conoscenza base della programmazione NDK per Android, vogliono esplorare gli strumenti necessari per compilare codice nativo espressamente dedicato a dispositivi basati su processori Intel. E' affrontato il porting di codice c/c++ per dispositivi basati su architettura Intel originariamente creato su altre architetture. Sono presentati 3 casi d’uso, mostrando con livelli di difficoltà crescenti il processo completo di creazione di una semplice applicazione Android basata su NDK, confrontando i flag di compilazione necessari per ottimizzare un'applicazione Android basata su NDK affinché sia utilizzabile su dispositivi basati su architettura Intel.
Empower every Azure Function to achieve more!!Massimo Bonanni
The Azure Functions seem easy to use but what if our business scenario cannot be implemented using one of the "default" triggers or bindings? "Extension" is the keyword in this case! In this session, we see how to enhance our functions with custom triggers and custom bindings to make the most of the power of Serverless.
Session delivered at ServerlessDay Warsaw on 21/10/2021.
Durable Functions vs Logic App : la guerra dei workflow!!Massimo Bonanni
Hai la necessità di implementare un workflow o un integrazione tra servizi?
Ti serve scalabilità e non vuoi preoccuparti degli aspetti infrastrutturali?
Non sai da dove iniziare?
Inizia da questa sessione! Il serverless è la risposta per la scalabilità e l'astrazione infrastrutturale, ma per l'aspetto tecnologico puoi scegliere tra Durable Functions e Logic App. Questa sessione ti mostrerà pro e contro di entrambe le tecnologie fornendoti gli strumenti necessari per una scelta oculata.
Sessione del meetup #PitchOnline di #Coding del 21/07/2021
The document discusses using Durable Functions to manage state in Azure Functions. Durable Functions allow for adding state management, checkpoints, and restarts to address limitations of stateless Azure Functions. It describes Durable Function components like orchestrators and activities that can be used to build workflows. Examples are given of how Durable Functions can be used to implement patterns like function chaining, fan-out/fan-in, human interaction, and aggregation that are difficult to do with stateless functions. Durable Entities are also introduced as a way to define operations for reading and updating small pieces of state.
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
L'architettura serverless va sempre più di moda e innovative tecnologie come le Azure Functions ci consentono di implementarla facilmente. Come possiamo calare in questa realtà un prodotto consolidato come SQL Server che all'apparenza sembra non essere tagliato per questi scenari? In questa sessione vedremo come sfruttare SQL Server e l'estensibilità delle Azure Functions per costruire solutioni Serverless.
Sessione tenuta il 11/06/2021 a SQL Start 2021.
Serverless è una architettura basata sugli eventi e quali migliori scenari se non quelli IoT sono fondati sugli eventi? Migliaia di device che inviano telemetrie alla nostra soluzione e che dobbiamo gestire. In questa sessione vedremo un semplice approccio a scenari di questo genere che utilizza le Durable Entities per gestire la logica associata ai device del nostro sistema. Un esempio pratico per capire pregi e difetti delle Durable Entities che possono essere utili in moltissimi scenari in cui gestire eventi è essenziale.
Sessione tenuta durante Azure Global Virtual 2021.
This document summarizes a presentation about stateful patterns in Azure Functions using Durable Functions. The presentation introduces Durable Functions as a way to add state management to Azure Functions. It discusses common stateful patterns like function chaining, fan-in/fan-out, and human interaction and how Durable Functions addresses issues with implementing these patterns with regular stateless functions through orchestrations, activities, and entities. The presentation concludes by emphasizing how Durable Functions solves concurrency issues but may not always be the right choice depending on requirements around latency.
Sessione tenuta a CodeGen 2021 il 13/02/2021
Serverless è una architettura basata sugli eventi e quali migliori scenari se non quelli IoT sono fondati sugli eventi? Migliaia di device che inviano telemetrie alla nostra soluzione e che dobbiamo gestire. In questa sessione vedremo un semplice approccio a scenari di questo genere che utilizza le Durable Entities per gestire la logica associata ai device del nostro sistema. Un esempio pratico per capire pregi e difetti delle Durable Entities che possono essere utili in moltissimi scenari in cui gestire eventi è essenziale.
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
Session provided in community meetup #PitchOnline (SharpCoding community) on 21/01/2021.
Can I implement unit tests on my Azure Functions? How can I monitor my Azure Functions in a production environment? These are the questions that born into the head of the developer immediately after realizing that the Azure Functions can be a handy tool for designing a whole range of scenarios. In this session, you learn how to implement functions that are unit testable and which is the best approach to make them monitorable.
Empower every Azure Function to achieve more!!Massimo Bonanni
This document contains information from a presentation on Azure Functions including:
- An overview of Azure Functions and their pay-per-use model with instant scalability.
- Details on the anatomy of a function including triggers, bindings, and their associated classes.
- Explanations of the startup and runtime phases of functions and how triggers and bindings are configured.
- Recommendations to write efficient functions that avoid unnecessary resource usage.
- Links provided for additional documentation, code samples, and the speaker's contact information.
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
The document discusses testing and monitoring Azure Functions. It explains that Azure Functions should be written to allow dependencies to be mocked or stubbed for testing. The document demonstrates how to make Azure Functions testable using constructor injection to substitute mock services. It also discusses using logging and custom metrics to monitor Azure Functions performance and errors when deployed, including built-in integration with Application Insights. Code samples and a live demo are provided.
Everything you always wanted to know about API Management (but were afraid to...Massimo Bonanni
Azure API Management is an Azure service that allows developers to implement a consistent and secure access layer to their APIs. It provides features like throttling to prevent DOS attacks, JWT token validation for security, and a developer portal for API documentation and testing. The key components of API Management include the API gateway, publisher portal, developer portal, and policies for pre/post processing requests. Products are used to surface APIs to developers through subscriptions.
Xmas Serverless Transformation: when the elf doesn’t scale!Massimo Bonanni
Babbo Natale è in difficoltà! E' noto che l'elfo non scala! Con l'approssimarsi del periodo natalizio, le letterine dei bimbi aumentano vertiginosamente e la gestione tradizionale presta il fianco. Babbo Natale non può pretendere che gli elfi lavorino più di quello che già fanno (il sindacato degli elfi è inflessibile) e non può delocalizzare la produzione perché si trova già in un posto sperduto! L'unica soluzione è ottimizzare e razionalizzare il processo sfruttando il cloud e l'approccio serverless: Xmas Serverless Transformation ovvero come rispondere ai picchi di carico senza sfruttare gli elfi! Slide della sessione tenuta all'evento Xmas Dev 2018.
This document discusses updates to Azure Functions runtime including .NET Core 2.1 support, new extensibility model, and tooling updates. It also describes Durable Functions going GA and improvements to consumption plans, app service plans, and DevOps integration. The document provides tips for optimizing function performance such as avoiding long running functions and writing stateless functions. It concludes by thanking the audience and providing contact information.
This document discusses the Service Fabric reliable actor model. It begins by explaining the origins of the actor model in computer science and how it relates to concurrency and message passing. It then describes how Service Fabric implements the reliable actor pattern, including how actors are represented as .NET/Java classes, have reliable state storage, and lifecycle management. The document discusses architecture details like the actor service and runtime. It also covers topics like partitioning, concurrency handling, reentrancy, reminders, and when to use the actor model.
Testing a Service Fabric solution and live happy!!Massimo Bonanni
This document discusses testing Service Fabric solutions. It emphasizes the importance of unit testing microservices to ensure reliability and stability. It identifies three main obstacles to unit testing microservices - the Service Fabric platform, external dependencies, and other microservices. It proposes solutions such as mocking the platform, abstracting proxies, and creating layers of indirection to overcome these obstacles. The document also discusses chaos testing to evaluate how solutions handle errors and complex state transitions in production-like conditions.
This document provides an introduction to the actor model in Microsoft Service Fabric. It discusses key concepts of actors like message passing, state management, and concurrency. Actors are designed for high scalability and can distribute work across a cluster of machines. The document recommends understanding if the actor model fits one's requirements before building an application with it. It also provides some best practices and limitations to keep in mind for actor development.
Project Gesture & Real Sense: il potere nelle mani!!
Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!
1. Kinect + .NET = NUI : Interfacce
naturali facili con Kinect!!!
Massimo Bonanni
massimo.bonanni@domusdotnet.org
http://codetailor.blogspot.com
@massimobonanni
2. Agenda
• Natural User Interface
• Introduzione al Kinect
– Cosa c’è dentro
– Architettura
• Kinect SDK
– Camera Data
– Depth data
– Skeletal tracking
– Audio
• Q&A
2
3. Natural User Interface
Si definisce NUI l’interfaccia di un sistema in cui gli utenti riescono ad
interagire utilizando un approccio «naturale» cioè riescono ad utilizzare
le funzionalità del sistema senza l’uso di dispositivi artificiali (come
mouse, trackball o tastiera)
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.
3
5. NUI: Vantaggi
• Rapido apprendimento delle funzionalità;
• L’utente è in grado di diventare «esperto»
sull’interfaccia in minor tempo;
• Può aiutare portatori di handicap nell’utilizzo
del sistema.
5
6. Kinect: Cosa c’è dentro
Video Camera
RGB
Sensori di
profondità
Batteria di 4
microfoni
• Video Camera RGB (CMOS) Inclinazione
Motorizzata
• Sensori di profondità: proiettore IR + Camera IR (CMOS)
• Inclinazione motorizzata (±27 gradi)
• 4 Microfoni
6
9. Kinect: Come funziona
La nostra
Il proiettore ad applicazione
infrarossi illumina il utilizza le info
soggetto con dei dell’SDK
pattern
L’SDK è in grado di
convertire lo stream della
depth cam in dati
utilizzabili
La camera infrarossi
misura la distanza
con un approccio «a
luce strutturata»
9
10. Kinect: Cosa serve
• Kinect;
• Cavo usb per
collegamento a pc;
• Kinect SDK;
• DirectX9;
• .........tanta fantasia!!!
10
11. Kinect: Requisiti minimi
• Sistema Operativo
– Windows 7 (x86 and x64)
• Hardware
– Processore dual-core 2.66GHz o superiore
– 2Gb ram
– Scheda grafica DiretcX9 o superiore
– USB 2.0 dedicata
– Kinect con cavo usb per collegamento al pc
• Software
– Visual Studio 2010 Express o superiori
– .NET Framework 4.0
– Runtime DirectX 9
– Microsoft Speech Platform SDK v11 (solo per lo speech recognition)
11
12. Kinect: Architettura
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.
12
13. Kinect: Architettura
I componenti dell’SDK sono i seguenti:
Applications
Video Components Audio Components
Windows Core Audio 5
A/V capture and transcoding
3 NUI API and Speech APIs
Media Foundation | DirectShow 4
DMO codec for mic array
2 Device Device
Video stream control Audio stream control User Mode
setup access
WinUSB device stack WinUSB camera stack USBAudio audio stack Kernel Mode
Kernel-mode drivers for Kinect for Windows
USB Hub Hardware
1
Motor Cameras Audio mic array
Kinect sensor
Kinect for Windows User-created
Windows SDK components components
13
14. Kinect: Architettura
• Hardware
L’hardware comprende i sensori visti in precedenza è l’hub USB che permette
il loro collegamento al pc.
• Microsoft Kinect drivers :
a) Permettono l’accesso all’array di microfoni con le API Audio standard di Windows.
b) Forniscono gli stream della video camera e dei sensori di profondità.
c) Forniscono la possibilità di utilizzare più device contemporaneamente.
14
15. Kinect: Architettura
• NUI API
Un insieme di API che permettono di recuperare i dati dai sensori di immagine
e di controllare il device stesso (ad esempio brandeggiare il dispositivo).
• KinectAudio DMO
Estende le funzionalità dell’array di microfoni supportato in Windows 7 per
fornire le funzionalità di Beamforming (mappatura sonora dell’area) e
localizzazione della sorgente sonora.
• Windows 7 standard APIs
Le API audio, speech e media presenti in Windows 7 e Microsoft Speech.
15
17. Kinect: XBox o Windows
• Attualmente esistono due versioni di Kinect:
– Kinect for XBox
– Kinect for Windows
• E’ possibile utilizzare il Kinect for XBox per fare esperimenti
con l’SDK per Windows
• Si ottiene un errore se si utilizza il Kinect per XBox in
produzione
17
18. Kinect : SDK
• L’SDK è scaricabile dall’indirizzo http://kinectforwindows.org
• Vengono installati contestualmente l’SDK (con il Kinect Sample Browser), i
drivers, il Runtime (quello da distribuire con le applicazioni ) e lo Speech
Recognition Language Pack.
18
19. Kinect: Default Mode vs Near Mode
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
19
20. Kinect: La classe KinectSensor
La classe
KinectSensor
permette l’accesso
alle funzionalità del
Kinect:
20
21. Kinect: La classe KinectSensor
Recuperiamo l’istanza del KinectSensor a partire dalla
collezione KinectSensors:
Recupero il primo dei
sensori disponibili
Abilito lo stream video
Avvio la ricezione 640x480 30 fps
dei frame video
21
22. Kinect: Camera Data
La classe KinectSensor mette a disposizione l’evento
ColorFrameReady per la gestione dei frame video.
22
24. Kinect: Camera Data
Per utilizzare l’evento VideoFrameReady è necessario:
1. Recuperare il device dalla collezione KinectSensors della classe KinectSensor;
2. Abilitare lo stream video con la risoluzione/fps desiderato;
3. Sottoscriversi all’evento ColorFrameReady;
4. Avviare gli stream dell’istanza di KinectSensor.
E’ anche possibile eseguire un polling direttamente sullo stream video.
24
25. Kinect: Camera Data
• Risoluzioni ammesse
– 640x480
– 1280x960
• Numero di bytes per pixel 2 o 4
• FPS
– 12
– 15
– 30
• Formato immagine:
– RGB (pixel da 4 bytes: blu, verde, rosso e alfa)
– YUV (pixel da 4 bytes: ciano, magenta, giallo e nero)
– YUV-RAW (pixel da 2 bytes: ciano, magenta, giallo e nero, solo 640x480 15 fps)
25
29. Kinect: Depth Data
Per utilizzare l’evento DepthFrameReady è necessario:
1. Recuperare il device dalla collezione KinectSensors della classe KinectSensor;
2. Abilitare lo stream depth con la risoluzione/fps desiderato;
3. Sottoscriversi all’evento DepthFrameReady;
4. Avviare gli stream dell’istanza di KinectSensor.
E’ anche possibile eseguire polling direttamente sullo stream di profondità
29
30. Kinect: Depth Data
• Risoluzioni ammesse
– 640x480 (30 fps)
– 320x240 (30 fps)
– 80x60 (30 fps)
• Numero di bytes per pixel 2
• Contenuto immagine:
– Distanza (in millimetri, tra 400mm e 4000mm in base alla modalità)
– Player index (player index 1, 2 o 0 se non c’è un player)
30
31. Kinect: Depth Data
Per ogni punto (x,y), il valore di tipo Short (2 bytes) ottenuto dal Kinect ha la
seguente struttura:
ed i valori di profondità e player index sono dati dalle formule
31
33. Kinect: Depth Data
Possiamo sapere se un punto si trova troppo vicino, troppo lontano o nella
zona sconosciuta utilizzando tre proprietà dello stream di profondità:
KinectSensor.DepthStream.TooNearDepth
KinectSensor.DepthStream.UnknownDepth KinectSensor.DepthStream.TooFarDepth
33
35. Kinect: Skeletal tracking
• L’SDK permette di avere informazioni riguardo la posizione di alcuni
punti del corpo dei player rilevati.
• L’algoritmo di skeletal tracking è basato sul «Machine Learning»
• La classe KinectSensor mette a disposizione l’evento
SkeletonFrameReady per la gestione dei frame di di skeletal
tracking:
E’ anche possibile eseguire polling sullo Skeleton Stream esposto dalla
KinectSensor.
35
37. Kinect: Skeletal Tracking
Per utilizzare l’evento KeletonFrameReady è necessario:
1. Recuperare il device dalla collezione KinectSensors della classe KinectSensor;
2. Abilitare lo stream Skeletal Tracking;
3. Sottoscriversi all’evento SkeletonFrameReady;
4. Avviare gli stream dell’istanza di KinectSensor.
37
38. Kinect: La classe Skeleton
La classe Skeleton contiene le informazioni
sugli «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).
38
39. Kinect: Joints
• Ogni scheletro ha 20 oggetti Joint che tracciano la posizione del corpo del player;
• La posizione del joint nello spazio è contenuta nella proprietà Position (di tipo
SkeletonPoint):
– X: posizione x (compreso tra -1 e 1);
– Y: posizione y (compreso tra -1 e 1);
– Z: distanza dal device (in metri).
39
40. Kinect: Skeletal Tracking
• Il rilevamento dei sensori è affetto da errore (problemi costruttivi, luminosità
eccessiva dell’ambiente, rumore visivo e via discorrendo) e i dati restituiti
hanno delle fluttuazioni che non sempre sono gradite nelle applicazioni.
• Lo Skeleton Stream esposto dalla KinectSensor fornisce la possibilità di
impostare dei filtri per eliminare il rumore:
40
41. Kinect: TransformSmoothParameters
• Smoothing : specifica lo smoothing da applicare. I valori sono compresi tra 0 e 1.
Più il valore si avvicia a 1 e più viene applicato il fattore di smoothing;
• Correction : specifica la correzione da apportare ai dati. I valori sono compresi tra 0
e 1. Più piccolo il valore inserito e meno è la correzione sui dati grezzi;
• Prediction : specifica il numero di frame previsti;
• Jitter Radius : specifica il raggio di riduzione del jitter (in metri). Ogni jitter esterno
al raggio è riportato nel raggio impostato;
• MaximumDeviation Radius : specifica il raggio massimo (in metri) che i punti filtrati
possono deviare rispetto ai dati grezzi
Non esistono dei valori «buoni» da utilizzare, è necessario eseguire delle prove per
capire quali sono i più adatti per la specifica applicazione
41
42. Kinect: «Default Mode» vs «Near Mode»
Il comportamento dello Skeletal Tracking varia in base
al fatto che ci si trovi in «Default Mode» o «Near Mode»
Si tratta della proprietà
Skeleton.Position valorizzata quando
lo scheletro è completamente
tracciato
42
44. Kinect: AllFrameEvent
La classe KinectSensor mette a disposizione un evento per
ottenere contemporaneamente tutti e tre i frame visti in
precedenza:
L’FPS, in questo caso, è pari al più basso tra i differenti stream.
44
45. Kinect: Audio
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
45
46. Kinect: KinectAudioSource
La classe KinectSensor espone
la proprietà AudioSource di tipo
KinectAudioSource attraverso la
quale è possibile gestire tutte le
funzionalità audio.
46
47. Kinect : Sound Position
Il Kinect, permette di :
•Conoscere l’angolo e la «confidence» della sorgente sonora (Sound
Source Angle);
•Impostare la direzionalità dei microfoni del sensore in modo da rilevare
l’audio solo da una certa direzione (Beam Angle)
In entrambi i casi l’intervallo di copertura è:
-50 0 +50
47
48. Kinect : Sound Source Angle
Per gestire la variazione di angolo della sorgente sonora, è
sufficiente gestire l’evento SoundSourceAngleChanged della
classe KinectAudioSource:
48
49. Kinect : Audio Streaming
• La classe KinectAudioSource, grazie al metodo
Start(), consente di recuperare lo stream
dell’audio proveniente dal sensore.
• Lo stream può essere, ad esempio, registrato
in tempo reale.
49
50. Kinect: Speech Recognition
L’SDK del Kinect si integra perfettamente con lo
Speech Platform SDK per implementare voice
recognition.
Il sensore altro non fa che supportare uno
SpeechRecognizer utilizzabile dallo
SpeechRecognitionEngine dello Speech Platform.
50
52. Conclusioni
L’SDK è in continua evoluzione con continui rilasci.
Ad ogni rilascio viene migliorata la stabilità dei driver,
Skeletal Tracking e precisione dei dati recuperati dal
sensore di profondità.
Attualmente abbiamo un SDK maturo per cominciare a
sviluppare nuove tipologie di applicazioni
52