web-dev-qa-db-fra.com

SDK Kinect officiel vs alternatives Open-source

Où diffèrent-ils?

Quels sont les avantages de choisir libfreenect ou OpenNI + SensorKinect, par exemple, par rapport au SDK officiel, et vice-versa?

Quels sont les inconvénients?

58
F. P.

Veuillez noter que la réponse ci-dessous est par date et que certains faits pourraient très bien être obsolètes dans un proche avenir. L'état actuel du SDK Kinect officiel est la version bêta 1.00.12.

La première différence évidente est que le SDK officiel est géré par l'équipe Microsoft Research tandis que OpenKinect est un SDK open source géré par la communauté open source. Les deux ont leurs inconvénients et leurs avantages.

  • Le SDK officiel est développé par Microsoft qui développe également le matériel et donc devrait connaître les informations internes sur l'appareil que la société open source doit inverser. C'est évidemment à l'avantage de Microsoft.
  • Microsoft investit beaucoup d'argent dans cet appareil et je suis sûr qu'ils feront ce qu'ils jugent nécessaire pour maintenir leur SDK à la hauteur. Avoir une économie derrière elle offre de nombreux avantages.
  • D'un autre côté, ne sous-estimez jamais la force de la société open source: "La communauté OpenKinect est composée de plus de 2000 membres qui contribuent leur temps et leur code au Projet. Nos membres ont rejoint ce Projet avec la mission de créer la meilleure suite d'applications possible. pour le Kinect. OpenKinect est une véritable communauté "open source"! " - http://openkinect.org/wiki/Main_Page .
  • OpenKinect a été publié bien avant le SDK officiel, car le périphérique kinect a été piraté le premier ou le deuxième jour de sa sortie. Félicitations à OpenKinect!

Langages de programmation pris en charge:

  • SDK officiel: C++, C # ou Visual Basic à l'aide de Microsoft Visual Studio 2010.
  • OpenKinect: Python, C, C++, C #, Java, LISP et plus encore! Évidemment, ne nécessitant pas Visual Studio.

Prise en charge des systèmes d'exploitation:

  • SDK officiel: s'installe uniquement sur Windows 7.
  • OpenKinect: fonctionne sous Linux, OS X et Windows

Profitez clairement d'OpenKinect.

Licence:

  • Le SDK officiel est dans sa version bêta actuelle uniquement pour les tests. Le SDK a été développé spécifiquement pour encourager une large exploration et expérimentation par les communautés académiques, de recherche et les passionnés. les applications commerciales ne sont pas autorisées. Notez cependant que cela changera probablement dans les futures versions du SDK. Visitez le FAQ pour plus d'informations
  • Les applications OpenKinect doivent être ouvertes à un usage commercial, mais des sources en ligne affirment que ce n'est peut-être pas aussi simple. J'examinerais attentivement les conditions avant de publier des applications commerciales avec. Lisez Kinect - Implications de licence des projets matériels ouverts pour plus d'informations.

Documentation et support:

  • SDK officiel: bien documenté et fournit un forum de support
  • OpenKinect: semble avoir une liste de diffusion, Twitter et irc. mais pas de forum officiel/QA? La documentation sur le site Web n'est pas aussi riche que je le souhaiterais.

Calibrage de l'appareil:

Différents appareils Kinect peuvent différer légèrement selon le lot dans lequel ils ont été produits. Ainsi, l'étalonnage de l'appareil est parfois nécessaire. Mais:

  • le SDK officiel ne fournit aucun paramètre d'étalonnage, mais je n'ai jusqu'à présent pas eu à étalonner l'appareil sur lequel je travaille. Selon quelque chose que j'ai lu en ligne (lien perdu) au moment de la production, les paramètres d'étalonnage sont écrits sur l'appareil kinect, donc avec l'étalonnage officiel du SDK n'est pas nécessaire.
  • OpenKinect propose l'étalonnage de l'appareil: http://openkinect.org/wiki/Calibration . Je pense donc que vous devriez calibrer votre appareil si vous utilisez OpenKinect.

S'il est vrai que l'étalonnage n'est nécessaire que pour OpenKinect, c'est un gros avantage pour le SDK officiel car il est plus facile de distribuer et d'installer des applications sans un tel besoin.


Personnellement, après un échec avec le SDK OpenKinect, je suis allé avec le SDK officiel, qui

  1. est venu avec des pilotes installés prêts à l'emploi
  2. fourni avec des exemples et du code pour se lancer facilement en affaires
  3. Tout compte fait: je pouvais démarrer mon propre développement en 15 minutes environ.
  4. Maintenant, après avoir travaillé avec le Kinect pendant quelques mois, je dois dire que je suis assez satisfait de l'API fournie. Je ne peux cependant pas le comparer au SDK OpenKinect car je ne l'ai jamais fait fonctionner (mais peut-être que cela ne l'a pas essayé).

MISE À JOUR: Depuis le 1er février 2012, il existe une licence commerciale pour le SDK officiel: "La licence commerciale de cette version autorise le développement et la distribution d'applications commerciales. Le SDK précédent était une version bêta et, par conséquent, ne convenait qu'à la recherche, aux tests et à l'expérimentation et n'était pas adapté à une utilisation avec un produit commercial final. La nouvelle licence permettra aux développeurs de créer et de vendre leurs applications Kinect pour Windows à clients finaux utilisant le matériel Kinect pour Windows sur les plates-formes Windows. " Foire aux questions des développeurs

56
Avada Kedavra

Comme expliqué par Avada Kedavra dans son réponse , voici quelques différences intéressantes:

  • systèmes d'exploitation pris en charge: vous ne pouvez utiliser Microsoft SDK que sur Windows, tandis que les solutions open source sont généralement capables de fonctionner sur d'autres systèmes d'exploitation;
  • langages de programmation: vous avez un choix plus large avec des solutions open source, tandis que Microsoft ne prend en charge que C++ et C # (Visual Basic n'est plus pris en charge avec SDK 2.0);
  • documentation et support: Microsoft propose un bon forum et une documentation bien faite (avec beaucoup d'exemples); mais il existe plusieurs solutions open source bien documentées;
  • licence: Microsoft est plus ou moins propriétaire, l'open source est moins ou plus gratuit. Considérez également que les idées open source ont parfois été achetées par de grandes entreprises et transformées en quelque chose qui n'est plus ouvert. La vôtre ne sera probablement pas le cas, mais gardez à l'esprit cette éventualité supplémentaire.

À mon avis, la différence la plus significative entre les solutions open source et les SDK Microsoft est strictement liée à l'algorithme de suivi squelettique.

Bien que la profondeur et les données RVB puissent être fournies efficacement par les API ouvertes/gratuites et les SDK Microsoft, la mise en œuvre des capacités de suivi squelettique n'est pas seulement une question de rétro-ingénierie.

Pour mettre en œuvre un tel algorithme, les développeurs doivent avoir de solides compétences dans les domaines de la reconnaissance des formes et de l'apprentissage automatique, et je suis sûr que ce type de connaissances est disponible dans la communauté open source. Mais la mise en œuvre du suivi squelettique est basée sur un algorithme "entraîné", qui nécessite de nombreuses expériences pour collecter une très grande quantité de données. Ces données sont ensuite utilisées pour "former" l'algorithme, qui peut reconnaître les articulations squelettiques.

Obtenir suffisamment de données, mais aussi les ajuster et les utiliser correctement, nécessite beaucoup de temps et d'argent. Les chercheurs et développeurs Microsoft sont dans les meilleures conditions pour travailler sur ce genre de choses, simplement parce que c'est leur métier.

Dans mes expériences précédentes, j'ai remarqué que les solutions open source offrent de bonnes capacités de suivi du squelette, mais elles ne sont pas au même niveau que ce que Microsoft propose avec son SDK.

Rappelez-vous également que Microsoft SDK offre de nombreuses fonctionnalités supplémentaires, telles que la reconnaissance faciale ou l'orientation articulaire, et plusieurs widgets très utiles si vous souhaitez créer rapidement une interface graphique gestuelle.

Donc, ce que je suggère, c'est: si vous travaillez sur un projet dans lequel vous avez simplement besoin de données de profondeur et/ou RVB, ou si vous avez besoin d'utiliser un langage de programmation qui n'est pas pris en charge par Microsoft SDK, alors vous devriez opter pour open solution source. Sinon, Microsoft SDK serait mon meilleur choix.

6
Vito Gentile

Je recommanderais fortement le framework Cinder. (libcinder.org)

Il prend en charge le développement OpenNI et Kinect, si vous utilisez C++. Il prend désormais en charge Kinect SDK 1.7 et OpenNI 2, via ces cinderblocks:

SDK MS Kinect 1.7 (stable) https://github.com/BanTheRewind/Cinder-MsKinect

OpenNI 2/NITE 2.2 (alpha) https://github.com/wieden-kennedy/Cinder-OpenNI

Les deux peuvent effectuer un suivi squelettique hors du boz, OpenNI étant capable de suivre jusqu'à six squelettes simultanément. OpenNI 2 progresse rapidement sur le Kinect, bien que le nouveau Kinect changera probablement cela quand il sortira le mois prochain. Cependant, il est peu probable que les principes de base sous-jacents changent.

Le principal inconvénient de la version initiale d'OpenNI était qu'elle nécessitait une pose d'activation du corps entier pour reconnaître un utilisateur, ce qui était un facteur décisif pour de nombreuses applications - mais cela semble avoir été résolu dans les versions plus récentes et OpenNI 2 prend également en charge suivi de la main robuste à courte portée, bien qu'il nécessite toujours un geste de mise au point au départ. Si vous travaillez sur Mac ou Linux, c'est à peu près votre seul choix.

3
user1234676