scanner mac libfreenect kinect

mac - kinect sdk ubuntu



SDK oficial de Kinect vs. alternativas de fuente abierta (3)

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

  • sistemas operativos compatibles : solo puede usar Microsoft SDK en Windows, mientras que las soluciones de código abierto generalmente pueden funcionar 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 SDK de Microsoft está estrictamente relacionada con el algoritmo de seguimiento esquelético .

Si bien la profundidad y los datos RGB pueden ser proporcionados de manera efectiva tanto por las API abiertas / libres como por los SDK de Microsoft, la implementación de capacidades de rastreo esquelético no es solo una cuestión de ingeniería inversa.

Para implementar dicho algoritmo, los desarrolladores deben tener fuertes competencias en reconocimiento de patrones y áreas de aprendizaje automático, y estoy bastante 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 adecuadamente, 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 previas, noté que las soluciones de código abierto proporcionan buenas capacidades de rastreo esquelético, pero no están al mismo nivel de lo que Microsoft ofrece con su SDK.

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

Entonces, 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 abrir solución fuente De lo contrario, Microsoft SDK sería mi mejor opción.

¿Dónde difieren?

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

¿Cuales son las desventajas?


Recomiendo encarecidamente el marco Cinder. (libcinder.org)

Es compatible con el desarrollo de OpenNI y Kinect, si está utilizando C ++. Ahora es compatible con Kinect SDK 1.7 y OpenNI 2, a través de estos Cinderblocks:

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, esto parece haberse resuelto en las versiones más nuevas y OpenNI 2 también admite 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.


Tenga en cuenta que la respuesta a continuación es por fecha y que algunos hechos pueden estar 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 está desarrollado por Microsoft, que también desarrolla el hardware y, por lo tanto, debe conocer la información interna sobre el dispositivo que la sociedad de código abierto debe invertir. 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 de 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 conjunto posible 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 admitidos:

  • 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.

Soporte de sistemas operativos:

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

Claramente ventaja de OpenKinect.

Licencia:

  • El SDK oficial está en su estado beta actual solo 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 cambiará en versiones futuras del SDK. Visite las FAQ para obtener más información
  • OpenKinect parece estar 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 - Implicaciones de licencias de proyectos de hardware abiertos para obtener más información.

Documentación y soporte:

  • SDK oficial: bien documentado y proporciona un foro de soporte
  • OpenKinect: 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 del dispositivo:

Los diferentes dispositivos Kinect pueden diferir ligeramente dependiendo del lote en el que se produjeron. Por lo tanto, 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 OpenKinect SDK fui con el SDK oficial, que

  1. vino con controladores que instalaron de la caja
  2. vino con ejemplos y código para ingresar fácilmente al negocio
  3. All-in-all: podría comenzar mi propio desarrollo dentro de los 15 minutos más o menos.
  4. Ahora, después de trabajar con Kinect durante unos 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: A partir del 1 de febrero de 2012 hay una licencia comercial para el SDK oficial: "La licencia comercial para esta versión autoriza el desarrollo y la distribución de aplicaciones comerciales. El SDK anterior era una versión beta, y como resultado era apropiado solo para investigación, pruebas y la experimentación, y no era adecuada 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 hardware Kinect para Windows en las plataformas Windows ". Preguntas frecuentes sobre desarrolladores