11 de enero de 2011

21. Primer acercamiento al Kinect

Existen varias opciones para poder trabajar con el kinect entre las mas conocidas se encuentran las librerias libfreenect, OpenNI, y el recientemente lanzado SDK Kinect de microsoft (versión Beta). Cada una de ella tiene sus ventajas y sus desventajas las cuales son importantes tener en cuenta al momento de realizar una elección para trabajar con ellas.

El SDK Kinect de microsoft por ejemplo, es la unica forma de trabajar en la que se tiene soporte para los microfonos del kinect ademas de realizar rastreo de esqueleto sin inicialización entre otras caracteristicas. Como grandes desventajas esta la restricción para solo usar el sdk (software development kit) para usos no comerciales, ademas para hacer uso de esta herramienta hay que tener instalado visual studio 2010 en cualquiera de sus versiones y lo que a mi parecer es la mayor limitación es el hecho de que solo se puede usar en windows 7 nativo (es dedir, nada de maquinas de visualización, ni wine, ni nada por el estilo). La instalación es supremamente sencilla como cualquiera en windows y viene con un par de ejemplos bastantes interesantes en los que destaca un pequeño juego. Otra grandisima desventaja (por lo menos para mi) es el hecho de solo poder trabajar en C++ o C#. Para mayor información sobre el sdk y sus caracteristicas esta es la pagina

Imagen del sdk para el kinect
La otra gran alternativa se llama OpenNI. OpenNI es un framework que permite trabajar con el "juguete" de Microsoft. OpenNI y Sensor Kinect permite obtener las información basica que entrega el kinect como lo son la imagen RGB y la imagen de profundidad. Ademas se cuenta con el middleware NITE que proporciona características de alto nivel. Es decir OpenNI obtiene la información del kinect y NITE toma esa información y realiza los algoritmos de segmentación, tracking y demas.

OpenNI puede ser usado tanto en Windows como en Ubuntu (no estoy seguro sin en Mac funcionara) lo cual se convierte en un punto a su favor además de no tener limitación para su uso en aplicaciones comerciales.

OpenNI no provee acceso a los microfonos del kinect ni tampoco al motor del mismo. Por otro lado y a modo personal no pude hacer funcionar esta herramienta en mi equipo tanto en Windows como Ubuntu por lo que no puedo hablar mucho de ella, solo que la instalación me parece la mas engorrosa de las 3 herramienta. Un proceso largo que incluye descargas, modificación de archivos XML, instalaciones, en fin.

Logo de OpenNI

Por ultimo se encuentra las librerias libfreenect desarrolladas por la comunidad Openkinect. De las 3 es la única que no cuenta (por el momento) con características de alto nivel. Libfreenect solo provee acceso a la imagen RGB y a la de profundidad del kinect, pero compensa esto dando acceso tambien al control del LED del kinect y al motor (cosa que no hace ninguna otra herramienta hasta el momento). Además cuenta con una gran comunidad y multiples wrappers para diferentes lenguajes entre ellos nuestra querida culebrita lo cual hace esta librería la ideal para trabajar con python, kinect, y OpenCV. Como gran desventaja el wrapper de libfreenect para python no funciona en windows actualmente pero puede ser utilizado con otras herramientas como Matlab.

Logo de la comunidad Open Kinect
En esta entrada voy a mostrar la instalación de las librerias freenect en Ubuntu 10.10

Para poder instalar el kinect hay que escribir las siguientes lineas en la terminal de la misma forma que se hizo en la entrada anterior.


sudo apt-get install git-core cmake libglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev
git clone https://github.com/OpenKinect/libfreenect.git
cd libfreenect
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib64/
 
Por ultimo vamos a ingresar nuestro nombre de usuario (importante: Deben cambiar "nomobre_de_usuario" por su
nombre de usuario tal y como aparece en la terminal.) 

sudo adduser nombre_de_usuario video

Vamos a verificar si todo esta en orden. 
 
Primero entro a la carpeta libfreenect para poder acceder a los ejemplos que 
vienen con los drivers. La carpeta por defecto es /libfreenect/build/bin recuerden 
abrir los ejemplos con permisos de root con la instrucción sudo.
 
 
 He aqui otro ejemplo:
 

 
En la proxima entrada explicare el proceso de instalación de los wrapper para python para poder 
usar python, opencv y kinect.
 
Imagen de profundidad obtenida con libfreenect
  
Actualización:
Para los que quieran ver los videos con la resolución original aqui esta el link de descarga
http://www.mediafire.com/?bx3h2io3qxg10gz

4 comentarios:

  1. Saludos Rafael,
    Lo primero es agradecerte el trabajo que realizas con este blog, y con OpenCV en especial. Me estas ayudando mucho en mi trabajo.
    Y lo segundo es pedirte que porfavor cuelgues los links de los videos.

    Un saludo y gracias.

    ResponderEliminar
  2. Hola Navarro.

    Muchas gracias por tu comentario me alegra saber que las cosas que escribo le están sirviendo a alguien además de a mi.

    Estos son los links de los videos
    http://www.mediafire.com/?bx3h2io3qxg10gz

    Cualquier duda o comentario lo recibiré con gusto

    Adiós

    ResponderEliminar
  3. Las últimas versiones de OpenNI ya ofrecen la posibilidad de utilizar datos de audio, actualiza la información del parrafo 5

    ResponderEliminar
  4. hola es bueno tu trabajo, pero me gustaria que si tienes algo con C# (C sharp)
    te lo agradeceria mucho !!!
    gracias !!!

    ResponderEliminar