Archive

Posts Tagged ‘depth’

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 : , , ,