2011-10-09 19 views
56

¿En qué se diferencian?Kinect SDK oficial vs. Alternativas de código abierto

¿Cuáles son las ventajas de elegir libfreenect u OpenNI + SensorKinect, por ejemplo, sobre el SDK oficial, y viceversa?

¿Cuáles son las desventajas?

+4

Estoy compilando una lista a continuación. ¿Hay alguna área específica de interés para las diferencias? –

+0

No realmente. Un grupo de amigos y yo estábamos pensando en desarrollar una pequeña aplicación de kinect, que probablemente recurrirá a técnicas de realidad aumentada. –

+0

El problema es que algunos de nosotros usamos Linux/Mac y tengo un problema con la escritura de código que obligatoriamente estará bloqueado en Windows. –

Respuesta

55

Tenga en cuenta que la respuesta a continuación es por fecha y es posible que algunos hechos estén desactualizados en el futuro cercano. El estado actual del SDK oficial de Kinect es beta 1.00.12.

La primera diferencia obvia es que el SDK oficial es mantenido por el equipo de Microsoft Research mientras que OpenKinect es un SDK de código abierto mantenido por la comunidad de código abierto. Ambos tienen sus contras y pros.

  • El SDK oficial es desarrollado por Microsoft, que también desarrolla el hardware y por lo tanto debe conocer información interna sobre el dispositivo que la sociedad de código abierto debe realizar ingeniería inversa. Obviamente, esto es en ventaja de Microsoft.
  • Microsoft está invirtiendo mucho dinero en este dispositivo y estoy seguro de que harán lo que consideren necesario para mantener su SDK a la altura. Tener economía detrás de esto ofrece muchas ventajas.
  • Por otro lado, nunca subestime la fuerza de la sociedad de código abierto: "La comunidad OpenKinect consiste en más de 2000 miembros que aportan su tiempo y código al Proyecto. Nuestros miembros se han unido a este Proyecto con la misión de crear el mejor suite de aplicaciones para Kinect. ¡OpenKinect es una verdadera comunidad de "código abierto"! - http://openkinect.org/wiki/Main_Page.
  • OpenKinect fue lanzado mucho antes que el SDK oficial ya que el dispositivo kinect fue pirateado el primer o segundo día de su lanzamiento. ¡Felicitaciones a OpenKinect!

lenguajes de programación soportados:

  • SDK oficial: C++, C# o Visual Basic utilizando Microsoft Visual Studio 2010.
  • OpenKinect: Python, C, C++, C#, Java, Lisp y más! Obviamente no requiere Visual Studio. sistemas de apoyo

funcionamiento:

  • SDK oficial: sólo se instala en Windows 7.
  • OpenKinect: se ejecuta en Linux, OS X y Windows

Claramente Advantage OpenKinect.

licencia:

  • El SDK oficial está en su estado actual versión beta sólo para pruebas. El SDK se ha desarrollado específicamente para fomentar una amplia exploración y experimentación por parte de comunidades académicas, investigadoras y entusiastas. aplicaciones comerciales no están permitidas. Sin embargo, tenga en cuenta que esto probablemente cambie en futuras versiones del SDK.Visite el FAQ para obtener más información
  • Aparentiene abierto para uso comercial, pero fuentes en línea afirman que puede no ser tan simple. Revisaría los términos antes de lanzar cualquier aplicación comercial con él. Lea Kinect – Licensing implications of open hardware projects para obtener más información.

Documentación y soporte:

  • SDK oficial: bien documentado y proporciona una OpenKinect support forum
  • : parece tener una lista de correo, Twitter e IRC. pero no hay foro oficial/QA? La documentación en el sitio web no es tan rica como me gustaría que fuera.

calibración Dispositivo:.

Diferentes dispositivos Kinect pueden diferir ligeramente dependiendo del lote que fueron producidos en este modo a veces se requiere la calibración del dispositivo. Pero:

  • el SDK oficial no proporciona ninguna configuración de calibración, pero hasta ahora no he tenido que calibrar el dispositivo en el que estoy trabajando. De acuerdo con algo que leí en línea (pérdida de enlace) en el momento de la producción, los parámetros de calibración se escriben en el dispositivo kinect, por lo que con la calibración oficial de SDK no es necesario.
  • OpenKinect presenta la calibración del dispositivo: http://openkinect.org/wiki/Calibration. Por lo tanto, creo que debes calibrar tu dispositivo si vas con OpenKinect.

Si bien es cierto que la calibración solo es necesaria para OpenKinect, esta es una gran ventaja para el SDK oficial ya que es más fácil distribuir e instalar aplicaciones sin necesidad.


Personalmente, después de un intento fallido con el SDK OpenKinect Fui con el SDK oficial, que

  1. vinieron con los controladores que se instalaron fuera de la caja
  2. vino con ejemplos y código para una fácil entrar en el negocio
  3. Todo-en-todo: podría comenzar mi propio desarrollo dentro de los 15 minutos más o menos.
  4. Ahora, después de trabajar con Kinect durante algunos meses, debo decir que estoy bastante satisfecho con la API provista. No obstante, no puedo compararlo con el SDK de OpenKinect, ya que de hecho nunca funcionó (pero tal vez no lo haya probado bien).

ACTUALIZACIÓN: partir del 1 de febrero 2012 No hay una licencia comercial para el SDK oficial: "La licencia comercial para esta versión autoriza el desarrollo y distribución de aplicaciones comerciales El SDK antes era una beta. y, como resultado, era apropiado solo para investigación, prueba y experimentación, y no era adecuado para su uso con un producto comercial final. La nueva licencia permitirá a los desarrolladores crear y vender sus aplicaciones Kinect para Windows a los usuarios finales que utilizan Kinect para Hardware de Windows en plataformas de Windows." Developer Frequently Asked Questions

+3

¿Puedes también? Resalte algunas de las dificultades que encontró al intentar SDK de OpenKinect. En función de la funcionalidad, el diseño, la facilidad de uso y la estabilidad, ¿diría que OpenKinect es inferior en ese sentido en comparación con el SDK oficial? – greatwolf

+3

@VictorT .: Lo probé antes del verano, no recuerdo los detalles sobre el fracaso. Creo que fueron los controladores que no pude instalar. Con el SDK oficial, sin embargo, esto fue solo un doble clic de distancia (después de instalar Windows 7, por supuesto :)). –

3

no te recomiendo el marco de la escoria. (Libcinder.org)

Es compatible tanto con OpenNI y Kinect develoment, si estás usando C++. Ahora soporta Kinect SDK 1.7 y OpenNI 2, a través de estos bloques de cemento:

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

OpenNI 2/NITE 2,2 (alfa) https://github.com/wieden-kennedy/Cinder-OpenNI

Ambos pueden hacer seguimiento esquelético del boz, OpenNI es capaz de rastrear hasta seis esqueletos simultáneamente. OpenNI 2 está ganando rápidamente en el Kinect, aunque el nuevo Kinect probablemente cambiará cuando salga el próximo mes. Sin embargo, es poco probable que los principios subyacentes básicos cambien. El inconveniente principal con la versión inicial de OpenNI era que requería una posición de activación de cuerpo completo para reconocer a un usuario, lo que era un factor decisivo para muchas aplicaciones; sin embargo, parece que esto se resolvió en las versiones más nuevas y en las nuevas versiones de OpenNI. OpenNI 2 también admite el seguimiento de mano robusto a corta distancia, aunque todavía requiere un gesto de enfoque inicialmente. Si trabajas en Mac o Linux, es prácticamente tu única opción.

+0

Estoy usando el repositorio de wieden-kennedy, pero todavía no consigo que reconozca el kinect. Sin embargo, funcionará con una xtion. – Kat

5

Como se explica por Avada Kedavra en su/su answer, estas son algunas diferencias interesantes:

  • sistemas operativos compatibles: sólo se puede usar Microsoft SDK en Windows, mientras que las soluciones de código abierto suelen ser capaces de trabajar en otros sistemas operativos;
  • lenguajes de programación: tiene una opción más amplia con soluciones de código abierto, mientras que Microsoft solo admite C++ y C# (Visual Basic ya no es compatible con SDK 2.0);
  • documentación y soporte: Microsoft ofrece un buen foro y una documentación bien hecha (con muchas muestras); pero hay varias soluciones de código abierto bien documentadas;
  • licencia: Microsoft es menos o más propietario, el código abierto es menos o más libre. Considere también que algunas veces las grandes empresas han comprado ideas de código abierto y se han transformado en algo que ya no es abierto. Probablemente el tuyo no sea el caso, pero ten en cuenta esta eventualidad adicional.

En mi opinión personal, la diferencia más significativa entre las soluciones de código abierto y Microsoft SDK está estrictamente relacionada con el algoritmo de seguimiento del esqueleto .

Si bien las API abiertas/libres y los SDK de Microsoft pueden proporcionar datos de profundidad y RGB, la implementación de funciones de rastreo esquelético no es solo una cuestión de ingeniería inversa.

Para implementar dicho algoritmo, los desarrolladores deben tener sólidas competencias en reconocimiento de patrones y áreas de aprendizaje automático, y estoy seguro de que ese tipo de conocimiento está disponible entre la comunidad de código abierto. Pero la implementación del seguimiento esquelético se basa en un algoritmo "entrenado", que requiere una gran cantidad de experimentos para recopilar una gran cantidad de datos. Estos datos se utilizan luego para "entrenar" el algoritmo, que puede reconocer las articulaciones esqueléticas.

Obtener suficientes datos, pero también ajustarlos y usarlos correctamente, requiere mucho tiempo y dinero. Los investigadores y desarrolladores de Microsoft se encuentran en las mejores condiciones para trabajar en este tipo de cosas, simplemente porque es su trabajo.

En mis experiencias anteriores, noté que las soluciones de código abierto proporcionan una buena capacidad de seguimiento esquelético, pero no están al mismo nivel de lo que Microsoft ofrece con su SDK.

Recuerde también que Microsoft SDK proporciona muchas capacidades adicionales, como el reconocimiento facial o la orientación conjunta, y varios widgets muy útiles si quiere construir rápidamente una GUI gestual.

Lo que sugiero es: si está trabajando en un proyecto en el que simplemente necesita datos de profundidad y/o RGB, o si tiene la necesidad de utilizar un lenguaje de programación que no es compatible con Microsoft SDK, entonces debe optar por la solución de código abierto. De lo contrario, Microsoft SDK sería mi mejor opción.

Cuestiones relacionadas