Archive

Posts Tagged ‘kinect’

Premier test du SDK Kinect de Microsoft

Le sdk officiel de Microsoft est téléchargeable ici : http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/

Première différence par rapport aux 2 autres SDK non officiel disponible (voir ce billet Développer avec Kinect) , celui de Microsoft n’est disponible que pour Windows 7 (32 ou 64bits).

Petit rappel, même si le SDK est officiel (produit et diffusé par Microsoft), il n’en reste pas moins en version Beta ! Donc à n’utiliser que sur une machine qui ne craint rien Sourire. De plus, il s’agit d’une licence pour ‘non commercial use’. Je vous invite à lire attentivement la license si vous envisager un usage dans un produit commercial.

Afin d’éviter des conflits de drivers, ne pas oublier de désinstaller les autres drivers Kinect que vous auriez pus tester.

imageimage

 

Première impression, la séquence d’installation : c’est le jour et la nuit comparativement avec l’installation d’Open NI (je vous renvoi à mon précédent post), 4 clics sur suivant, 1 minutes d’installation et hop, c’est terminé.

Alimenter le Kinect, puis connecter le au PC. Windows va détecter votre Kinect et installer les drivers correspondant.

driver kinect

Premier test : Menu Démarrer\Tout les programmes\Microsoft Kinect for Windows SDK BETA puis lancer “Sample Skeletal Viewer”.

quelques constatations :

  • Un gros point positif : pas besoin de pose spécifique pour qu’un squelette soit identifié et tracké : il suffit de se positionner ou de se déplacer dans le zone de visibilité du capteur (même sans s’arrêter), et le squelette est identifié très rapidement.
  • Malgré cela,

  • Des positions aberrantes de squelette sur les dernières trame lors de la sortie de la zone de reconnaissance, ou lorsque l’on est trop près du capteur
  • fausse detection

     

  • Quelques faux positifs (comme dans le cas suivant : une plante gentiment secouée par un chaton)
  •   image

 

  • La coloration de l’image de profondeur semble moins précise que celle effectué par OpenNI ou NUILab, mais cela vient surement du traitement effectué par le logiciel de test, la précision de la caméra de profondeur du capteur Kinect restant la même quelque soit le driver.
  • Concernant la consommation CPU, L’application de test oscille entre 10&15% du CPU (un i7 quad core avec hyperthreading à 1.6Ghz), ce qui est significatif, notamment si on souhaite utiliser le kinect sur des machines pas trop puissantes.
  • image

L’autre programme test est un petit jeu dans lequel, il faut taper sur des formes qui tombent Sourire. L’occasion de tester à 2 joueurs … et ca marche très bien ! Le test à 3 joueurs n’a pas été concluant (la détection d’un 3e joueur déclenchant la disparition du premier).

image

 

Dernière étape pour tout geek qui se respecte … le code ! Le cours sources des 2 applications de test est livré en version C# et C++. Le code est simple, compréhensible et se recompile directement.

Les drivers pour le réseau de micro du Kinect sont aussi fournis. La recompilation de quelque sample nécessiteront l’installation des librairies “speech” de Microsoft :

 

De quoi occuper studieusement les 2 mois d’été qui arrivent !

bon développement à tous.

Catégories :Microsoft Étiquettes : , , ,

Le SDK Kinect ‘by Microsoft’ est enfin disponible !

Catégories :Microsoft Étiquettes : ,

Développer avec Kinect

Si vous souhaitez développer pour et avec le Kinect de Microsoft, la première question que vous devrez vous poser (du moins en attendant les drivers officiels Microsoft) est “Quels drivers et API utiliser ?!”.

En effet, a l’heure actuelle, deux couches techniques sont disponibles pour le développement :

CL NUI Platform est la couche technique la plus légère pour utiliser le Kinect sur PC (l’installation fait 461Ko) et la plus simple à installer (on installe l’exécutable). Les drivers fournit sont signés numériquement (donc pas de soucis avec les versions 64bits). Elle est fournit avec 2 exemples en .Net WPF. La contrepartie de cette légèreté et de cette simplicité est que cette API se limite à nous fournir l’accès “brut” aux composants du Kinect (Webcam RGB, Webcam profondeur, réseaux de micro, accéléromètre, moteur) sans fonctionnalités de haut niveau (reconnaissance de geste, suivi de squelette, …). Elle est parfaite pour l’utilisation directe des données issues des capteurs du Kinect : une dll native, un peu d’interop .net et c’est parti (cf mon précédent billet pour des captures écrans des exemples).

OpenNI est un organisation à but non lucratif qui regroupe entre autres PrimeSense (la société à l’origine de la technologie du capteur de profondeur du Kinect) et d’autres acteurs connu du jeux , du matériel (Asus) ou de la robotique (Willow Garage). Elle publie un framework destiné à la mise en œuvre des interfaces naturelles (NI = Natural Interface). Ce framework est composé de plusieurs modules :

L’installation d’OpenNI se fait en respectant la séquence : OpenNI, driver hardware Kinect puis NITE.

Toutefois, lors de la connexion du Kinect, J’ai rencontré quelque soucis : pas de pilote pour le périphérique “XBox NUI Motor” et aucun autre composant du kinect reconnu.

Pour corriger ce soucis, téléchargez les drivers disponibles ici ( https://github.com/avin2/SensorKinect, fichier avin2-SensorKinect-28738dc.zip). Déconnecter votre Kinect du PC, et installer la version correspondant à votre OS ( 32 ou 64 bits) présent dans le dossier Platform\Win32\Driver\ de l’archive.

Rebranchez votre Kinect, accepter le chargement du driver non signé (éventuellement forcer son chargement en indiquant à Windows le dossier où vous avez décompressé l’archive). Vous devez obtenir :

DriverKinectOpenNI

Une fois cette étape passée, les différents composants du Kinect sont reconnus par Windows

image

 

L’installation est un brin plus touchy et plus volumineuse, la mise en oeuvre de l’Api plus complexe et moins ‘directe’. En contrepartie vous disposer d’une API complète vous permettant d’accéder aux données du Kinect, mais aussi de travailler sur un squelette virtuel au sein de vos application, le tout étant géré par OpenNI/Nite.

Bon développement Sourire

Catégories :Microsoft Étiquettes : ,

Une exception lors de l’utilisation des drivers NUI Kinect ?

Hier soir, j’ai enfin trouvé le temps de connecté mon Kinect sur mon PC de (crash)test : un Vista US 32 bits (et oui … pour les mauvaises langues : il fonctionne toujours très bien ! ).

Pas de soucis pour l’installation des drivers NUI ( CL Nui Platform ). Lors de la connexion du Kinect au PC, tout ce passe bien : le kinect et ces différents périphériques sont bien détectés correctement.

install nui

 

Pour un premier test , je lance l’application de test fournie avec les drivers (icone CLNUIDeviceTest sur le fond du bureau, ou Menu démarrer \CL Nui Platform\CLNuiDeviceTest) … et – oh désespoir -  une belle fenêtre d’erreur apparait.

image

D’après les détails accessibles , il s’agit d’une exception “System.TypeInitialization”.

Etape suivante, ouverte du code source avec VS2010 et petit coup de debug dans MainWindow.cs pour voir ce qu’il se passe. Le projet démarre bien, l’énumération des périphériques se déroule correctement (le kinect est bien vu, son numéro de série accessible). Donc les drivers ou le Kinect ne semblent pas la source de l’erreur.

L’exception se produit lors de l’appel à Show() de la CameraWindow. Visual Studio nous permet d’en apprendre un peu plus sur les détails de l’exception : “The type initializer for ‘MS.Win32.Penimc.UnsafeNativeMethods’ threw an exception.”  mais surtout l’InnerException est beaucoup plus pertinente : Il s’agit d’une COMException et le message est sans ambigüité : “Retrieving the COM class factory for component with CLSID {14D4CBD9-7490-4F25-BAA6-1C5E22F6B1E3} failed due to the following error: 80040154.

Verdict : un composant COM nécessaire pour le fonctionnement de l’application n’est pas (ou mal) enregistré sur ma machine.

Quelques recherches plus tard dont je vous passe les détails, et la solution est trouvée : Un objet Com fournit avec WPF3 n’est pas enregistré : PenIMC.dll . Il se trouve dans le dossier C:\Windows\Microsoft.NET\Framework\v3.0\WPF (remplacez C: par votre disque système si besoin).

Un petit coup de regsvr32 dessus :

regsvr32

Le composant COM est maintenant ré-enregistré, je relance l’application de test et ça marche !

kinectpc

 

Petite remarque : si vous lancer l’application mais que celle ci n’affiche aucune image (fond noir) mais que l’accéléromètre fonctionne et le numéro de série est visible … Vérifiez que l’alimentation externe du Kinect est bien branché ! En effet, l’électronique et les périphériques de faible puissance (hub usb intégré, firmware , accéléromètre) du Kinect sont alimentés directement par le port USB. Les composants nécessitant plus de puissance sont alimentés par le transformateur externe (webcam, depth cam et projecteur laser, moteur).

Catégories :.NET Étiquettes : , , ,

un SDK officiel pour Kinect

Microsoft – par l’intermédiaire du blog officiel – vient d’annoncer la disponibilité au printemps d’un SDK pour Kinect : http://blogs.technet.com/b/microsoft_blog/archive/2011/02/21/kinect-for-windows-sdk-to-arrive-spring-2011.aspx

Il sera disponible en téléchargement gratuit.

Une affaire a suivre …

Catégories :Windows Étiquettes : , ,