Menu

A

|

A

Kinect 2 : Outils du SDK

Kinect 2 : Outils du SDK

Dans ce second billet consacré au Kinect 2 SDK, nous allons regarder ensemble les outils mis à notre disposition. Je vous rappelle que le sommaire des articles se trouve par ici.

Si vous n’avez pas installer le SDK c’est le moment de le faire en le téléchargeant à cette adresse, il vous faudra par contre Visual Studio 2013 pour pouvoir l’utiliser.

Qu’est-ce qu’il y a dans ce SDK ?

Une fois le Kinect 2 SDK installé, nous avons accès a plusieurs choses :

  • SDK Browser
  • Kinect Studio
  • Visual Gesture Builder

Ces éléments vont nous être très utiles pour nos développements.

Ressources, samples, etc.

La première chose intéressante dans ce SDK est le « SDK Browser », il regroupe un ensemble de petit programme avec les sources, vous exposant une partie spécifique du développement Kinect dans différent langages. Certains peuvent même être lancés sans ouvrir Visual  Studio afin de voir si cela vous convient ou juste tester votre Kinect 2.

Kinect Sample

Quand l’icône « Run » est présente on peut lancer la solution directement, si l’icône « install » est présente on peut copier les sources vers un répertoire de son choix sur son PC. Mais il y a un utilitaire dedans qui est précieux, le « Kinect v2 Configuration Verifier », il vous permet rapidement de tester si vous avez les prérequis pour Kinect 2 et si elle communique bien avec votre machine. En cas d’erreur, un petit texte vous permet d’avoir des conseils sur le prérequis ou les causes du dysfonctionnement.

Kinect Sample 2

Il existe aussi des ressources en ligne très utiles comme le « Kinect 2 Hands On Labs » qui est accompagné des sources sur Github.

Kinect Studio

Voici le plus important des utilitaires fournis avec le SDK. Le Kinect Studio vous permet d’enregistrer vos sessions avec Kinect 2 sous forme d’un fichier replay qui pourra être rejoué plus tard sans forcément avoir une Kinect 2 connecté à votre système. Cela vous permet par exemple d’enregistrer une session de mouvement pour un cas précis de votre applicatif et de le rejouer à loisir en mettant des points d’arrêts, sans avoir à bouger de votre siège, car il n’y a rien de plus pénible que de devoir se lever, se mettre devant la Kinect et revenir à son siège pour voir ou sa cloche ou encore stopper l’exécution.

Kinect Studio se décompose en 5 parties distinctes :

Kinect Studio Header

La partie « File », comme son nom l’indique, est la partie qui permet d’ouvrir ou d’enregistrer ses replays.

Kinect Studio File

 

On peut déjà distinguer deux modes d’ouverture de replay, le mode « Read Only » qui permet juste de jouer le replay mais on ne peut pas y ajouter de métadonnées ou de « marker », et le mode normal qui permet de tout faire.

Le menu « View » lui, permet de changer l’apparence de l’éditeur afin de le configurer à votre sauce, vous pouvez même y ajouter des onglets pour y placer tous les éléments qui vous intéressent. Je ne rentrerais pas dans le détail de cette partie, je vous laisse faire car c’est assez simple d’utilisation.

Kinect Studio View

Pour les autres, le menu « settings » permet de gérer certains paramètres de l’utilitaire, reste un élément intéressant qui est le « Connect to service » et le « Disconnect from service ». Pour cela il faut comprendre comment marche l’architecture Kinect 2. Dans la V1, une application ouvre une connexion avec la Kinect et récupère les informations en directe, cela a pour effet de monopoliser la Kinect pour cette application, il est donc impossible de lancer une autre application. Dans le SDK V2, il existe un service qui va se connecter à la Kinect 2 et récupérer les informations. Quand notre application va demander des informations à la Kinect, elle ne se connecte pas directement au périphérique, mais elle se connecte au service qui va lui renvoyer une copie des informations qu’il reçoit de la vraie Kinect 2. Cela a pour avantage de pouvoir connecter plusieurs applications au service, celui-ci enverras des copies des flux vers les applications, mais la Kinect 2 ne sera connecté qu’au service. Ces deux menus servent donc à connecter le Kinect Studio au service, mais cela lui permettra aussi d’envoyer les enregistrements dans le service qui s’occupera de les renvoyer aux applications connectées.

L’onglet « Monitor » ne sert qu’à montrer le retour de votre Kinect 2 et les différents flux qui sont disponible, il vous est donc possible d’ajouter ou de retirer des capacités de captation afin de voir ce que retourne votre Kinect.

Kinect Studio Nui

Il existe 12 flux disponibles dans Kinect Studio : NUI Body Frame, NUI Body Index, NUI Calibration Data, NUI Depth, NUI Color Camera Settings, NUI Depth, NUI IR, NUI Long Exposure IR, NUI Opaque Data, NUI Sensor Telemetry, NUI Uncompressed Color et NUI Tile Audio.

Certains flux sont disponible pour l’enregistrement et d’autre pour la restitution. Pour faire simple, certains sont des flux brutes captés directement par la Kinect comme le NUI Depth et le NUI IR, et d’autres ont calculé à partir des flux brutes comme le NUI Body Index qui dépend du NUI Dep, du NUI IR et du NUI Sensor Telemetry.

Je ne vais pas rentrer dans le détail de tous ces flux, cela n’apporterais pas grand-chose, par contre ce que vous devez savoir, c’est plus vous incluez des flux dans votre enregistrement, plus le fichier de sortie sera lourd. En gros, si vous captez que le minimum, vous arrivez à un fichier de 2,7 Go pour 15 secondes, et cela peut monter jusqu’à 5 Go pour 15 secondes si vous prenez tous les flux. Donc faite bien attention à ça quand vous entamez une séance d’enregistrement.

Pour l’usage même de Kinect Studio, il n’y a rien de bien sorcier, cependant voici quelques astuces pour aller un peu plus loin. Dans Kinect Studio, il est possible après avoir chargé un enregistrement de mettre des points d’arrêt sur celui-ci ou de redéfinir le début et la fin. Pour cela vous avez à votre disposition avec un clic droit sur la barre temps, un menu contextuel qui vous permet de poser un « Pause Point » ou de définir le « In point » et le « Out point ».

KinectStudioMarker

Le « In/Out point » est en fait les limites de l’extrait, cela peut servir à faire commencer plus tard et finir plus tôt pour éliminer par exemple le fait que vous vous êtes déplacé vers la Kinect depuis votre bureau. Le « Pause point » permet de fixer un moment précis de l’enregistrement, une fois atteint, le service envoi toujours les mêmes informations à votre application, celle qui correspondent à ce « Pause point ».

Vous pouvez aussi annoter vos extraits (seulement si vous l’avez ouvert en modification) en ajouter des « Marker ». Ce sont des libellés personnalisées qui permette de noter des informations sur notre extrait.

Marker

Il est possible aussi de sélectionner une partie de l’extrait et sur un clic droit de pouvoir zoomer sur cette sélection ou la définir comme extrait avec le « In Out point ». C’est très intuitif, il vous faut juste un peu l’utiliser, mais au final on s’y retrouve assez facilement.

KinectStudio Selection

Dernier point sur Kinect Studio, si vous voulez changer la vue renvoyé (par exemple avoir le flux de profondeur en niveau de gris plutôt qu’en couleur), il vous suffit de faire un clic droit sur la zone vidéo de rendu et d’aller dans « Settings », cela vous affiche le menu ci-dessous, vous pourrez alors faire des ajustements sur comment rendre les informations dans votre Kinect Studio.

Kinect Settings

Voilà pour Kinect Studio, c’est un outil précieux et très complet. Pour finir, sachez que tous ce vous faite dans l’interface est pilotable en ligne de commande via KSUtil.exe, si cela vous intéresse je vous recommande l’article MSDN qui traite de cette partie. Il existe aussi un utilitaire en ligne de commande qui permet de convertir les fichiers eXtended Raw Files (XRF) en eXtended Event Files (XEF), pour cela il faut regarder KSConvert.exe et comme je suis gentil voici l’article MSDN qui le traite.

Visual Gesture Builder

Pour le dernier outil de ce SDK, nous allons un peu parler du Visual Gesture Builder. Déjà il faut savoir que cet outil est une PREVIEW, donc non complet, non terminée, etc. La promesse de cet outil et de pouvoir décomposer des gestuelles sous forme de données qui pourront être importé dans le SDK au runtime afin de détecter des gestuelles précise.

Après avoir lancé le Visual Gesture Builder, il faut créer une solution (un peu comme dans Visual Studio) et y mettre des projets. Chaque projet contiendra des gestuelles. L’ajout d’une gestuelle fera apparaître cette popup :

Visual Gesture

 Elle permet de déterminer de quoi sera composée votre gestuelle, en gros s’il y aura les mains, si le haut du corps suffit et le type. Cela permet à l’outil d’être plus précis dans sa détection de mouvement.

Pour être franc, à ce stade il est bien difficile d’utiliser ce Visual Gesture Builder, la documentation est très pauvre et pour l’instant il est difficile d’en tirer quelque chose, mais c’est une PREVIEW, donc cela montre ce que sera cet outil dans l’avenir et je pense qu’il nous sera indispensable. Personnellement, je n’ai pas réussi à l’utiliser en l’état, donc mieux vaut attendre la version finale.

Voilà qui conclut le tour des outils du SDK Kinect 2, ce tour n’est pas exhaustif, je n’ai pas abordé tous les points, mais cela vous donner une première approche et vous permettra d’aller plus loin. N’hésitez pas à me poser des questions, je me ferai un plaisir d’y répondre.

Kinect 2 : Outils du SDK

Kinect 2 : Outils du SDK

Dans ce second billet consacré au Kinect 2 SDK, nous allons regarder ensemble les outils mis à notre disposition. Je vous rappelle que le sommaire des articles se trouve par ici.

Si vous n’avez pas installer le SDK c’est le moment de le faire en le téléchargeant à cette adresse, il vous faudra par contre Visual Studio 2013 pour pouvoir l’utiliser.

Qu’est-ce qu’il y a dans ce SDK ?

Une fois le Kinect 2 SDK installé, nous avons accès a plusieurs choses :

  • SDK Browser
  • Kinect Studio
  • Visual Gesture Builder

Ces éléments vont nous être très utiles pour nos développements.

Ressources, samples, etc.

La première chose intéressante dans ce SDK est le « SDK Browser », il regroupe un ensemble de petit programme avec les sources, vous exposant une partie spécifique du développement Kinect dans différent langages. Certains peuvent même être lancés sans ouvrir Visual  Studio afin de voir si cela vous convient ou juste tester votre Kinect 2.

Kinect Sample

Quand l’icône « Run » est présente on peut lancer la solution directement, si l’icône « install » est présente on peut copier les sources vers un répertoire de son choix sur son PC. Mais il y a un utilitaire dedans qui est précieux, le « Kinect v2 Configuration Verifier », il vous permet rapidement de tester si vous avez les prérequis pour Kinect 2 et si elle communique bien avec votre machine. En cas d’erreur, un petit texte vous permet d’avoir des conseils sur le prérequis ou les causes du dysfonctionnement.

Kinect Sample 2

Il existe aussi des ressources en ligne très utiles comme le « Kinect 2 Hands On Labs » qui est accompagné des sources sur Github.

Kinect Studio

Voici le plus important des utilitaires fournis avec le SDK. Le Kinect Studio vous permet d’enregistrer vos sessions avec Kinect 2 sous forme d’un fichier replay qui pourra être rejoué plus tard sans forcément avoir une Kinect 2 connecté à votre système. Cela vous permet par exemple d’enregistrer une session de mouvement pour un cas précis de votre applicatif et de le rejouer à loisir en mettant des points d’arrêts, sans avoir à bouger de votre siège, car il n’y a rien de plus pénible que de devoir se lever, se mettre devant la Kinect et revenir à son siège pour voir ou sa cloche ou encore stopper l’exécution.

Kinect Studio se décompose en 5 parties distinctes :

Kinect Studio Header

La partie « File », comme son nom l’indique, est la partie qui permet d’ouvrir ou d’enregistrer ses replays.

Kinect Studio File

 

On peut déjà distinguer deux modes d’ouverture de replay, le mode « Read Only » qui permet juste de jouer le replay mais on ne peut pas y ajouter de métadonnées ou de « marker », et le mode normal qui permet de tout faire.

Le menu « View » lui, permet de changer l’apparence de l’éditeur afin de le configurer à votre sauce, vous pouvez même y ajouter des onglets pour y placer tous les éléments qui vous intéressent. Je ne rentrerais pas dans le détail de cette partie, je vous laisse faire car c’est assez simple d’utilisation.

Kinect Studio View

Pour les autres, le menu « settings » permet de gérer certains paramètres de l’utilitaire, reste un élément intéressant qui est le « Connect to service » et le « Disconnect from service ». Pour cela il faut comprendre comment marche l’architecture Kinect 2. Dans la V1, une application ouvre une connexion avec la Kinect et récupère les informations en directe, cela a pour effet de monopoliser la Kinect pour cette application, il est donc impossible de lancer une autre application. Dans le SDK V2, il existe un service qui va se connecter à la Kinect 2 et récupérer les informations. Quand notre application va demander des informations à la Kinect, elle ne se connecte pas directement au périphérique, mais elle se connecte au service qui va lui renvoyer une copie des informations qu’il reçoit de la vraie Kinect 2. Cela a pour avantage de pouvoir connecter plusieurs applications au service, celui-ci enverras des copies des flux vers les applications, mais la Kinect 2 ne sera connecté qu’au service. Ces deux menus servent donc à connecter le Kinect Studio au service, mais cela lui permettra aussi d’envoyer les enregistrements dans le service qui s’occupera de les renvoyer aux applications connectées.

L’onglet « Monitor » ne sert qu’à montrer le retour de votre Kinect 2 et les différents flux qui sont disponible, il vous est donc possible d’ajouter ou de retirer des capacités de captation afin de voir ce que retourne votre Kinect.

Kinect Studio Nui

Il existe 12 flux disponibles dans Kinect Studio : NUI Body Frame, NUI Body Index, NUI Calibration Data, NUI Depth, NUI Color Camera Settings, NUI Depth, NUI IR, NUI Long Exposure IR, NUI Opaque Data, NUI Sensor Telemetry, NUI Uncompressed Color et NUI Tile Audio.

Certains flux sont disponible pour l’enregistrement et d’autre pour la restitution. Pour faire simple, certains sont des flux brutes captés directement par la Kinect comme le NUI Depth et le NUI IR, et d’autres ont calculé à partir des flux brutes comme le NUI Body Index qui dépend du NUI Dep, du NUI IR et du NUI Sensor Telemetry.

Je ne vais pas rentrer dans le détail de tous ces flux, cela n’apporterais pas grand-chose, par contre ce que vous devez savoir, c’est plus vous incluez des flux dans votre enregistrement, plus le fichier de sortie sera lourd. En gros, si vous captez que le minimum, vous arrivez à un fichier de 2,7 Go pour 15 secondes, et cela peut monter jusqu’à 5 Go pour 15 secondes si vous prenez tous les flux. Donc faite bien attention à ça quand vous entamez une séance d’enregistrement.

Pour l’usage même de Kinect Studio, il n’y a rien de bien sorcier, cependant voici quelques astuces pour aller un peu plus loin. Dans Kinect Studio, il est possible après avoir chargé un enregistrement de mettre des points d’arrêt sur celui-ci ou de redéfinir le début et la fin. Pour cela vous avez à votre disposition avec un clic droit sur la barre temps, un menu contextuel qui vous permet de poser un « Pause Point » ou de définir le « In point » et le « Out point ».

KinectStudioMarker

Le « In/Out point » est en fait les limites de l’extrait, cela peut servir à faire commencer plus tard et finir plus tôt pour éliminer par exemple le fait que vous vous êtes déplacé vers la Kinect depuis votre bureau. Le « Pause point » permet de fixer un moment précis de l’enregistrement, une fois atteint, le service envoi toujours les mêmes informations à votre application, celle qui correspondent à ce « Pause point ».

Vous pouvez aussi annoter vos extraits (seulement si vous l’avez ouvert en modification) en ajouter des « Marker ». Ce sont des libellés personnalisées qui permette de noter des informations sur notre extrait.

Marker

Il est possible aussi de sélectionner une partie de l’extrait et sur un clic droit de pouvoir zoomer sur cette sélection ou la définir comme extrait avec le « In Out point ». C’est très intuitif, il vous faut juste un peu l’utiliser, mais au final on s’y retrouve assez facilement.

KinectStudio Selection

Dernier point sur Kinect Studio, si vous voulez changer la vue renvoyé (par exemple avoir le flux de profondeur en niveau de gris plutôt qu’en couleur), il vous suffit de faire un clic droit sur la zone vidéo de rendu et d’aller dans « Settings », cela vous affiche le menu ci-dessous, vous pourrez alors faire des ajustements sur comment rendre les informations dans votre Kinect Studio.

Kinect Settings

Voilà pour Kinect Studio, c’est un outil précieux et très complet. Pour finir, sachez que tous ce vous faite dans l’interface est pilotable en ligne de commande via KSUtil.exe, si cela vous intéresse je vous recommande l’article MSDN qui traite de cette partie. Il existe aussi un utilitaire en ligne de commande qui permet de convertir les fichiers eXtended Raw Files (XRF) en eXtended Event Files (XEF), pour cela il faut regarder KSConvert.exe et comme je suis gentil voici l’article MSDN qui le traite.

Visual Gesture Builder

Pour le dernier outil de ce SDK, nous allons un peu parler du Visual Gesture Builder. Déjà il faut savoir que cet outil est une PREVIEW, donc non complet, non terminée, etc. La promesse de cet outil et de pouvoir décomposer des gestuelles sous forme de données qui pourront être importé dans le SDK au runtime afin de détecter des gestuelles précise.

Après avoir lancé le Visual Gesture Builder, il faut créer une solution (un peu comme dans Visual Studio) et y mettre des projets. Chaque projet contiendra des gestuelles. L’ajout d’une gestuelle fera apparaître cette popup :

Visual Gesture

 Elle permet de déterminer de quoi sera composée votre gestuelle, en gros s’il y aura les mains, si le haut du corps suffit et le type. Cela permet à l’outil d’être plus précis dans sa détection de mouvement.

Pour être franc, à ce stade il est bien difficile d’utiliser ce Visual Gesture Builder, la documentation est très pauvre et pour l’instant il est difficile d’en tirer quelque chose, mais c’est une PREVIEW, donc cela montre ce que sera cet outil dans l’avenir et je pense qu’il nous sera indispensable. Personnellement, je n’ai pas réussi à l’utiliser en l’état, donc mieux vaut attendre la version finale.

Voilà qui conclut le tour des outils du SDK Kinect 2, ce tour n’est pas exhaustif, je n’ai pas abordé tous les points, mais cela vous donner une première approche et vous permettra d’aller plus loin. N’hésitez pas à me poser des questions, je me ferai un plaisir d’y répondre.

1 Comment

mat

12 avril , 2015 at 11:23

Super cette revue du SDK... j'y vois + clair.

Comments Are Closed