Proyecto Fin de Carrera

Robótica, software y telecomunicaciones.

Kinect, freenect, OpenKinect, y OpenNI

Ahora que voy a usar una kinect, necesitaré comunicarme con un componente llamado kinectComp, este componente dispone de una interfaz desde la cual podemos conseguir los datos de imagen y profundidad para poder trabajar con ellos en nuestro componente.

En realidad kinectComp se encarga de controlar la kinect, haciendo de intermediario entre el driver (controlador) de la kinect y los demás componentes de Robocomp.

Logo-OpenKinect

El driver se está desarrollando desde OpenKinect, coordinando a un gran grupo de personas que trabajan con este nuevo periférico. El driver se llama Freenect, y hasta el momento es capaz de capturar la imagen de la cámara con una resolución VGA (640×480), así como los datos de profundidad, y controlar el pequeño motor en su base. Sin embargo, con kinectComp sólo podemos acceder a los datos de profundidad e imagen.

Una versión experimental de Freenect consigue capturar el audio de sus micrófonos y cambiar el estado del LED frontal.  Y trabajan en un sistema llamado Fakenect con el cual puedas grabar una sesión con una kinect, para trabajar posteriormente con esa sesión sin necesidad de tenerla conectada al PC.

Logo-OpenNI

Por otro lado tenemos a PrimeSense, los diseñadores del chip PS1080 que lleva incorporado la kinect.  PrimeSense junto con WillowGarage (desarrolladores de OpenCV), están creando unas librerías llamadas OpenNI (Open Natural Interaction) que en principio no tiene nada que ver con el proyecto OpenKinect, y se encargan de facilitar el tracking de personas, el control por gestos, etc. De hecho, son las librerías que utilizan en NITE (framework de código cerrado) los desarrolladores de videojuegos para la XBOX360.

Hasta ahora, si queremos usar kinectComp necesitamos tener conectada la kinect, e instalar una versión del driver adecuada. La versión debe ser la adecuada porque Freenect está en constante cambio, recordemos que se empezó a trabajar con esto tan sólo hace 4 meses (Noviembre 2010), y el nombre con el que se accede a sus datos puede ser distinto en cada versión.

En mi caso, la primera vez que instalé freenect, lo hice con el método más cómodo, añadiendo el PPA a Ubuntu e instalando desde synaptic o aptitude, sin embargo la versión que se me instalaba con este método era un poco antigua (11 Diciembre 2010) y consumía RAM de forma incremental, hasta el punto de bloquear el ordenador si mantenía la kinect encendida más de 5 minutos.

Para solucionar esto, instalé la versión master desde el repositorio de GitHub, la cual me funcionaba perfectamente desde la demo de Freenect (glview), pero que no podía comunicarse con kinectComp. La solución vino de la mano de Luiky (miembro de Robolab) que modificó el archivo CMakeLists.txt de kinectComp. ¡Gracias Luiky!

 

 

18 febrero 2011 Posted by | all | , , , , | 1 comentario