40
palais des congrès Paris 7, 8 et 9 février 2012

Au coeur d'un projet Kinect innovant

Embed Size (px)

DESCRIPTION

Dans cette session nous allons faire un retour d'expérience sur un projet Kinect : Publicité interactive. Nous montrerons le processus de création du projet en partant du Design pour allez jusqu'au graphisme et finir par le développement. Une bonne façon de montrer ce que Kinect apporte sur un cas concret.

Citation preview

Page 1: Au coeur d'un projet Kinect innovant

palais des congrès Paris

7, 8 et 9 février 2012

Page 2: Au coeur d'un projet Kinect innovant

Au cœur d’un projet Kinect InnovantMardi 7 février 2012 – 16h00

Johanna RoweDesigner Industriel – MVP SurfaceWinwise

Nicolas CalviConsultant / Formateur – MVP SurfaceWinwise

Page 3: Au coeur d'un projet Kinect innovant

Winwise en chiffres : 9,5 M€, 70 collaborateurs, 800 clients qui nous font confiance.

Winwise a été créé en 1996 autour de 2 métiers:- La Formation, centre agréé Microsoft- Le Conseil

Et 3 types d’intervention chez nos clients:- L’expertise- L’accompagnement- La réalisation de projets aux forfaits

Nos clients sont de tout secteur d’activité et sollicitent nos 5 domaines de compétences:- Interfaces Riches et Naturelles- Architecture- Collaboratif- Business Intelligence et Data Management- Infrastructure

Tous nos collaborateurs sont certifiés sur les nouvelles technologies Microsoft.

Page 4: Au coeur d'un projet Kinect innovant

Problématique de la publicité

Concept de l’application

Technologie Kinect

Problématique des gestuelles

Architecture de l’application

SDK Kinect en action

Sommaire

Page 5: Au coeur d'un projet Kinect innovant

PROBLEMATIQUE DE LA PUBLICITE

Page 6: Au coeur d'un projet Kinect innovant

Publicité actuelle

Bannière web (non vues)Affiches publicitaires classiques (non enregistrées par le cerveau)

Publicités ciblées (géolocalisation, personnalisation)Placement produit (clip, émissions, film, ect.)Publicité animés (Métro)Street marketingJeux avec l’image de la marque

Ad-blindnessPublicité trop classique

Page 7: Au coeur d'un projet Kinect innovant

Publicité actuellePublicité Expérience négative avec la marque « ils me saoule

avec leur pub »

Trop = InefficaceOn ne voit plus On ne retient plus

Page 8: Au coeur d'un projet Kinect innovant

CONCEPT DE L’APPLICATION

Page 9: Au coeur d'un projet Kinect innovant

Nouveau Concept

PublicitéExpérience négative avec la marque « ils me saoule avec leur pub »

PublicitéExpérience positive avec la marque « J’ai fais un truc marrant avec la marque iDTGV »

Marquer l’utilisateur au travers d’une expérience ludique (drôle ou non selon l’image de la marque)

Le cerveau associe quelque chose de positif à la marque

Page 10: Au coeur d'un projet Kinect innovant

Marque

iDTGVMarque fun, jeune et innovante

Ambiance Zen et Zap

« Choisissez avec qui vous voyagez »

Page 11: Au coeur d'un projet Kinect innovant

Story-board - partie 1

Page 12: Au coeur d'un projet Kinect innovant

Story-board - partie 2

Page 13: Au coeur d'un projet Kinect innovant

DEMO

Page 14: Au coeur d'un projet Kinect innovant

TECHNOLOGIE KINECT

Page 15: Au coeur d'un projet Kinect innovant

Technologie Kinect

Créer des interactions avec des personnes et ce sans contacts avec un périphérique.

- Reconnaissance de mouvement- Reconnaissance vocale

Page 16: Au coeur d'un projet Kinect innovant

Technologie Kinect

Le « Moteur » et la « LED »

Le moteur permet d’incliner Kinect sur l’axe vertical afin de régler son champs de vision,

La LED qui peut prendre 3 couleurs (rouge, jaune et vert) est un indicateur de statut.

Page 17: Au coeur d'un projet Kinect innovant

Technologie Kinect

Le « Microphone Array »

4 Microphones qui permettent la prise de son avec Kinect.

Cette structure permet de savoir d’où provient le son.

Page 18: Au coeur d'un projet Kinect innovant

Technologie Kinect

La « Caméra vidéo »

Permet la capture vidéo dans différent format :- 640x480 (en 15 et 30 FPS)- 1280x960 (en 12 FPS)

Page 19: Au coeur d'un projet Kinect innovant

Technologie Kinect

La « Projecteur Infrarouge »

C’est un capteur actif qui projette une grille infrarouge qui servira à la détection de profondeur.

Page 20: Au coeur d'un projet Kinect innovant

Technologie Kinect

La « Caméra Infrarouge »

C’est elle qui capture la grille et permet de renvoyer de informations de profondeur (Depth sur 11 bits) dans différent formats :- 640x480 (en 30 FPS)- 320x240 (en 30 FPS)- 80x60 (en 30 FPS)

Page 21: Au coeur d'un projet Kinect innovant

Technologie Kinect

La « Détection du squelette »

Permet de capter 6 personnes dans son champs de vision :

- 2 personnes capté avec le squelette entier.

- 4 personnes avec leurs centre de gravité.

Page 22: Au coeur d'un projet Kinect innovant

Technologie Kinect

SDK Kinect Commercial

Est un SDK développé par Microsoft Research permettant de programmer Kinect.

Un périphérique dédié avec une meilleurs détection le mode « near »

Page 23: Au coeur d'un projet Kinect innovant

PROBLEMATIQUE DE GESTUELLES

Page 24: Au coeur d'un projet Kinect innovant

Problématique des gestuelles

Tactile Beaucoup d’existant (études ergo)Gestuelles identiques souvent réutilisées (donc connues par les utilisateurs)On pose le doigt sur l’interface directementLe bout d’un doigt est toujours identique

Tout le corps Pas d’existant (gestuelles)Trouver les gestuelles naturellesDes morphologies différentesDes manières de bouger différentes les unes des autresPas en situation de jeu

Page 25: Au coeur d'un projet Kinect innovant

Problématique des gestuelles

Pas d’API pour le faire

Composer avec les aléas de la détection

Eliminer les mouvements parasites

Page 26: Au coeur d'un projet Kinect innovant

Problématique des gestuelles

Gestuelle « Hello » :

Sur un intervalle donné (configurable)

On capte les différentes positions des points du squelette et on en déduit les angles alpha et beta

Si ces angles sont dans un certain intervalle calculé dynamiquement et qu’on a détecté un mouvement on remonte la gestuelle

Page 27: Au coeur d'un projet Kinect innovant

Problématique des gestuelles

Gestuelle « Zen » et « sortie (S) »

Sur un intervalle donné (configurable)

On capte les différentes positions des points du squelette et on en déduit les angles alpha, beta, gamma et delta

Si ces angles sont dans un certain intervalle calculé dynamiquement et que la pause est tenue pendant un certain laps de temps on remonte la gestuelle

Page 28: Au coeur d'un projet Kinect innovant

Problématique des gestuelles

Gestuelle « Clap » :Dans un intervalle de temps donné (configurable)

On capte la position (X,Y,Z) des points et on en déduit les distances d1 et d2

On vérifie que le corps est en face de Kinect® (d2 supérieur à une certaine valeur)

On Valide la position des poignets

On regarde si les poignets sont passés par plusieurs états (écartés, quelconques, joints puis écartés)

Page 29: Au coeur d'un projet Kinect innovant

ARCHITECTURE DE L’APPLICATION

Page 30: Au coeur d'un projet Kinect innovant

Architecture de l’application

XNA 4

Kinect SDK Commercial

.Net 4 (en langage C#)

Page 31: Au coeur d'un projet Kinect innovant

Architecture de l’application

Page 32: Au coeur d'un projet Kinect innovant

Architecture de l’application

Un processus XNA standard

Un processus de détection des gestuelles

Kinect branché sur le processus XNA

Page 33: Au coeur d'un projet Kinect innovant

SDK KINECT EN ACTION

Page 34: Au coeur d'un projet Kinect innovant

SDK Kinect en action

Espace de nom « Microsoft.Kinect »

Récupérer une caméra et gérer son statutprivate void InitializeKinect(){ // On se branche sur le manager des senseurs KinectSensor.KinectSensors.StatusChanged += new EventHandler<StatusChangedEventArgs>(this.KinectSensorsStatusChanged);

// Si il y en a déjà un, on l'ouvre if (KinectSensor.KinectSensors.Count > 0) this.OpenKinect(KinectSensor.KinectSensors.First());}

private void KinectSensorsStatusChanged(object sender, StatusChangedEventArgs e){ if (e.Status == KinectStatus.Connected) this.OpenKinect(e.Sensor); else if (this._kinectSensor == e.Sensor) this.CloseKinect();}

private void OpenKinect(KinectSensor kinect){ this._kinectSensor = kinect;

// Initialisation this._kinectSensor.Start();}

Page 35: Au coeur d'un projet Kinect innovant

SDK Kinect en actionOuvrir le flux vidéo

this._kinectSensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);this._kinectSensor.ColorFrameReady += new EventHandler<ColorImageFrameReadyEventArgs>(this.KinectColorFrameReady);

Ouvrir le flux de profondeurthis._kinectSensor.DepthStream.Enable(DepthImageFormat.Resolution320x240Fps30);this._kinectSensor.DepthFrameReady += new EventHandler<DepthImageFrameReadyEventArgs>(this.KinectDepthFrameReady);

Démarrer la détection des squelettes// SmoothParamater pour éliminer le bruitTransformSmoothParameters parameters = new TransformSmoothParameters{ Correction = 1.0f, JitterRadius = 0.01f, MaxDeviationRadius = 0.01f, Prediction = 1.0f, Smoothing = 0.9f};

this._kinectSensor.SkeletonStream.Enable(parameters);this._kinectSensor.SkeletonFrameReady += new EventHandler<SkeletonFrameReadyEventArgs>(this.KinectSkeletonFrameReady);

Intercepter tous les événements d’un coupthis._kinectSensor.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(this.AllFramesReady);

Page 36: Au coeur d'un projet Kinect innovant

SDK Kinect en action

Traiter une information de squeletteprivate void AllFramesReady(object sender, AllFramesReadyEventArgs e){ // On ouvre le buffer qui contient les informtions des squelettes using (SkeletonFrame frame = e.OpenSkeletonFrame()) { // On vérifie qu’il existe bien des informations exploitables if (frame != null && frame.SkeletonArrayLength > 0) { // On copie les données récupérées par Kinect dans un buffer local Skeleton[] skeletons = new Skeleton[frame.SkeletonArrayLength]; frame.CopySkeletonDataTo(skeletons);

// On ne prend que les squelettes qui sont en mode « tracés » var result = from p in skeletons where p.TrackingState == SkeletonTrackingState.Tracked select p;

foreach (Skeleton item in result) { // … ici on fait le traitement … } } }}

Page 37: Au coeur d'un projet Kinect innovant

SDK Kinect en action

Récupérer les points du corps (20 au total)

Plusieurs états : « Tracked », « Infered » et « NotTracked »

Convertir leurs coordonnées (X,Y,Z)

Faire les traitements adéquat, mais surtout faire des buffers de points pour pouvoir a chaque frame, créer des algorithmes qui se fondent sur une évolutions des positions dans le temps.

Page 38: Au coeur d'un projet Kinect innovant

DEMO

Page 39: Au coeur d'un projet Kinect innovant

Johanna RoweBlog : http://www.johannarowe.com/Facebook : Design in ProgressTwitter : @johanna_roweEmail : [email protected]

Nicolas CalviBlog : http://blog.nicolascalvi.com/Facebook : Black BlogTwitter : @nicolascalviEmail : [email protected]

Contacts

Page 40: Au coeur d'un projet Kinect innovant

Chaque semaine, les DevCampsALM, Azure, Windows Phone, HTML5, OpenDatahttp://msdn.microsoft.com/fr-fr/devcamp

Téléchargement, ressources et toolkits : RdV sur MSDNhttp://msdn.microsoft.com/fr-fr/

Les offres à connaître90 jours d’essai gratuit de Windows Azure www.windowsazure.fr

Jusqu’à 35% de réduction sur Visual Studio Pro, avec l’abonnement MSDN www.visualstudio.fr

Pour aller plus loin

10 février 2012

Live Meeting

Open Data - Développer des applications riches avec le protocole Open Data

16 février 2012

Live Meeting

Azure series - Développer des applications sociales sur la plateforme Windows Azure

17 février 2012

Live Meeting

Comprendre le canvas avec Galactic et la librairie three.js

21 février 2012

Live Meeting

La production automatisée de code avec CodeFluent Entities

2 mars 2012

Live Meeting

Comprendre et mettre en oeuvre le toolkit Azure pour Windows Phone 7, iOS et Android

6 mars 2012

Live Meeting

Nuget et ALM

9 mars 2012

Live Meeting

Kinect - Bien gérer la vie de son capteur

13 mars 2012

Live Meeting

Sharepoint series - Automatisation des tests

14 mars 2012

Live Meeting

TFS Health Check - vérifier la bonne santé de votre plateforme de développement

15 mars 2012

Live Meeting

Azure series - Développer pour les téléphones, les tablettes et le cloud avec Visual Studio 2010

16 mars 2012

Live Meeting

Applications METRO design - Désossage en règle d'un template METRO javascript

20 mars 2012

Live Meeting

Retour d'expérience LightSwitch, Optimisation de l'accès aux données, Intégration Silverlight

23 mars 2012

Live Meeting

OAuth - la clé de l'utilisation des réseaux sociaux dans votre application

Prochaines sessions des Dev Camps