Kinect + Office365 : Un bon geste en faveur de votre SI !

754 vues

Publié le

Vous avez toujours rêvé de manipuler vos données de manière interactive et naturelle. Venez découvrir comment développer des applications interactives en exploitant conjointement Kinect et Office 365. Vous ferez un bon geste en faveur de votre SI ! Au travers d’un exemple concret, cette session vous permettra de découvrir les fonctionnalités clés des deux plateformes et de suivre en pas à pas la naissance d’une application professionnelle « kinectée »… Session co-animée par Julien LO PRESTI, Samuel BLANCHARD et Fabrice BARBIN

Publié dans : Technologie
  • Soyez le premier à commenter

Kinect + Office365 : Un bon geste en faveur de votre SI !

  1. 1. palais descongrèsParis7, 8 et 9février 2012
  2. 2. Vous êtes dans la salle 352A
  3. 3. Kinect + Office365 : Unbon geste en faveur devotre SI !Mardi 7 févrierJulien LO PRESTISamuel BLANCHARDFabrice BARBIN
  4. 4. Samuel BLANCHARD Au niveau communautaire  Rédacteur/Modérateur chez Développez  Rédacteur pour Programmez! A remplacer par une  Fondateur Club SP et .NET Ouest photo  Créateur d’applications Windows Phone  Outil : isoStoreSpy  Apps: Wario’s Jewels, Sonic’s Jewels Au niveau professionnel  Responsable Développement & Innovation chez Naviso
  5. 5. Julien LO PRESTI Au niveau communautaire  Contributeur Club SP et .NET Ouest  MSP A remplacer  Développement Apps WP7 par une  Don du sang, IC12, Flickr Explorer photo Au niveau professionnel  Etudiant SUPINFO Rennes  Stagiaire chez SYNERGIZ
  6. 6. Fabrice BARBIN Au niveau communautaire  Fondateur Club SP et .NET Ouest  MVP SharePoint Workspace A remplacer  Fondateur de la Communauté par une SPW photo  Auteur d’un ouvrage dédié à SPW  Contributeur Club SharePoint FR (UGSF) Au niveau professionnel  Dirigeant de SYNERGIZ, centre de compétences et de R&D sur technologies Microsoft (www.synergiz.com)
  7. 7. Contenu de cette session Kinect + Office365 : Quel usage en entreprise ? Kinect  Comment ça marche ?  Du code et de la démo…  Zoom : Création d’un Framework Kinect Office365  Comment ça marche ?  Du code et de la démo Démonstration du cas d’usage complet Quizz et Goodies !
  8. 8. Kinect + Office 365Quel usage en entreprise ? De nombreuses suggestions ! Minority Reports – Droits réservés - http://fr.wikipedia.org/wiki/Minority_Report
  9. 9. Kinect + Office 365Quel usage en entreprise ? De nombreux champs d’application !
  10. 10. Kinect + Office 365 : Casd’usage Communication interne (Information, sensibilisation, culture d’entreprise, management) Accueil d’un visiteur (Information, recherche de personnes, …)  Via une « borne » placée dans un endroit public  Pilotée par le geste via Kinect  Dont le contenu et les fonctionnalités reposent sur Office365
  11. 11. Kinect + Office 365 : Casd’usage Pourquoi Kinect ?
  12. 12. Kinect + Office 365 : Casd’usage Pourquoi Office365 ?
  13. 13. Kinect + Office 365 : Casd’usage Les contraintes spécifiques du projet Environnement sonore Public non formé Données « impersonnelles »
  14. 14. Kinect : Comment ca marche ? Contenu (de la « V1 »)  Un projecteur infrarouge  Une caméra infrarouge  Une caméra vidéo  Des micros  Une motorisation Principe  Reconnaissance de la profondeur et suivi de « joueurs »  Reconnaissance de 20 points par squelette  Reconnaissance vocale  Possibilité (par code) de détecter des postures et des gestes En savoir+ : http://fr.wikipedia.org/wiki/Kinect
  15. 15. CODE & DEMOUne souris dans la Kinect ?
  16. 16. Code : Une souris dans laKinect ? Une position pour la souris // on parcourt tous les squelettes disponibles foreach (SkeletonData skeleton in skeletonFrame.Skeletons) { // Le squelette est-il bien repéré ? if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { // on prend la main droite Joint jointHandRight = skeleton.Joints[JointID.HandRight]; // Qualité trop médiocre on passe son tour // (main non affectée par son environnement) if (jointHandRight.Position.W < 0.8f) continue; // on en a trouvé une main ! joie ! return jointHandRight.Position; } }
  17. 17. Code : Une souris dans laKinect ? Affichage du curseur // Affichage du curseur float x, y; // Normalisation dans un range de 0 à 1 kinect.SkeletonEngine.SkeletonToDepthImage(hand.Value.Position, out x, out y); double winX = this.ActualWidth * (double)x; double winY = this.ActualHeight * (double)y; // deplacement par RenderTransform (Translation) this.TranslateCursor.X = winX; this.TranslateCursor.Y = winY;
  18. 18. CODE & DEMOUne souris sur mes contrôles !
  19. 19. De la souris aux contrôles :solution 1 Curseur • Position Curseur • Diffusion Contrôle 1 Contrôle 2
  20. 20. De la souris aux contrôles :solution 2 Curseur • Position Curseur • InputHitTest • Ancetre IKinectCursorControl Contrôle Enfant Contrôle 2 Contrôle 1
  21. 21. Code : Des events pour uncontrôle control = this.InputHitTest(point) as DependencyObject; DependencyObject var kinectControl = control as IKinectControl; // on cherche si un papa nest pas un KinectControl while (kinectControl == null && control != null) { control = VisualTreeHelper.GetParent(control); kinectControl = control as IKinectControl; } if (this.LastKinectControl != kinectControl) { // on quitte lancien control ! if (this.LastKinectControl != null) { this.LastKinectControl.OnKinectLeave(); } this.LastKinectControl = kinectControl; if (kinectControl != null) { // on entre pour la première fois ! kinectControl.OnKinectEnter(); } } if( kinectControl != null ){ // on se deplace car on est déjà rentré kinectControl.OnKinectMove(point); }
  22. 22. CODE & DEMOQu’est-ce qu’elle a ma posture ?
  23. 23. Code : Détection de posture// on recherche le point de lépaulePoint epaule = e.GetSkeletonPositionsWithoutDepth(this)[JointID.ShoulderLeft];// puis la mainPoint main = e.GetHandPositionWithoutDepth(this);// Obtenir langle entre deux points grace à pythagore ! AB2=AC2+BC2double angleInRadian = KinectDevice.GetAngle(main, epaule, AngleUnity.Radian);double angleInDegree = KinectDevice.RadianToDegree(angleInRadian);this.Line.X1 = epaule.X;this.Line.Y1 = epaule.Y;this.Line.X2 = main.X;this.Line.Y2 = main.Y;// Detection : verifier que langle est bien de 140° à + ou - 10° prèsif (KinectDevice.IsAngleInRange(angleInDegree, 140, 10)){ this.Line.Stroke = new SolidColorBrush(Colors.Red);}Else { this.Line.Stroke = new SolidColorBrush(Colors.White);}this.TextAngle.Text = ((int)angleInDegree).ToString() + "°";
  24. 24. CODE & DEMOZoom : Framework KINECT
  25. 25. Office 365 : Comment camarche ?
  26. 26. CODE & DEMOAuthentificationExploitation du projet CodePlex de Wictor Wilén (MVP SharePoint)http://www.wictorwilen.se/
  27. 27. Code : Authentification//Helper pour injecter le cookie avec le COM SPMsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper(siteUrl, login,password);context = new ClientContext(siteUrl);context.ExecutingWebRequest += claimsHelper.clientContext_ExecutingWebRequest;//Webclient injectant le cookievar wb = new ClaimsWebClient(new Uri(this.SiteUrl, UriKind.Absolute),this.Login, this.Password);//Parse document apres le downloadwb.DownloadDataCompleted += (s, args) =>{ ...}
  28. 28. CODE & DEMOSharePoint : lecture de listes
  29. 29. Code : Liste SharePoint//Creation url liste SPstring url = this.CreateSharepointListUrl( listId, subUrl, viewId );//Webclient avec injection du cookievar wb = new ClaimsWebClient(new Uri(this.SiteUrl, UriKind.Absolute),this.Login, this.Password);//Parse document apres le downloadwb.DownloadDataCompleted += (s, args) =>{ var result = new SharepointListResultEventArgs<T>(){ Cancelled =args.Cancelled, Error = args.Error }; if (args.Cancelled == false && args.Error == null) { byte[] data = args.Result; result.Result = ParseDocument<T>(data); }};
  30. 30. CODE & DEMOLync : Contacts
  31. 31. CODE & DEMOLync : Communication
  32. 32. Code : Lync//ConnectionService.SignIn("login", "mdp", () => { //Obtention des contacts de l’utilisateur foreach (var contact in Service.GetContacts()) { ... }});service = new LyncService();//Evènements sur le début et fin de la conversationservice.ConversationStarted += new EventHandler(service_ConversationStarted);service.ConversationStopped += new EventHandler(service_ConversationStopped);Personne personne = this.ContactView.DataContext as Personne;//Début de la conversationservice.StartConversation(personne.Email);
  33. 33. DEMO, the big one ! OBOX 365
  34. 34. Conclusion Kinect  Oui : Bonne réponse aux attentes  Mais :  Ergonomie des applications à ré-imaginer  Nécessité d’un framework (Dev Haut Niveau) Office365  Oui : Solution pérenne, bien outillée pour répondre aux besoins  Mais :  Disponibilité des données à optimiser (Cache)  Lync : Nécessité d’avoir le client installé Kinect+Office365, en entreprise ?  Oui : Concept démontré  Mais : Nécessité d’éprouver dans « la vraie vie »
  35. 35. Merci de votre attention Autres sessions sur Office365 Jusquà 10 fois plus de performance pour Sharepoint et Exchange! Jeudi 9 Février | 14h30-15h30 Tout ce que vous avez toujours voulu savoir sur Office 365! Mercredi 8 Février | 14h30-15h30 La gouvernance du Cloud : Retour dexpériences des clients Office 365 Mercredi 8 Février | 13h00-14h00
  36. 36. Merci de votre attention Autres sessions sur KINECT Au coeur dun projet Kinect Kinect Effect - user experience innovant revolution Mardi 7 Février | 16h00-17h00 Mardi 7 Février | 13h00-14h00 La kinect à lécoute des nouveaux Tout sur Microsoft Speech usages métiers et interactions Mercr. 8 Février | 17h30-18h30 avec les solutions Microsoft Mercredi 8 Février | 14h30-15h30 Jeux multi-écrans : envolez- vous avec Kinect, Silverlight et Applications robotiques avec WP7 Kinect et Robotics Dev Studio Mardi 7 Février | 13h00-14h00 Mercredi 8 Février | 13h00-14h00 …
  37. 37. Merci de votre attention QuizzQuestions ? ? Fabrice BARBIN Julien LO PRESTI Samuel BLANCHARD fbarbin@synergiz.com jlopresti@synergiz.com samuel.blanchard@naviso.fr
  38. 38. Vous êtes dans la salle 352A

×