Instalación OpenNI, Sensor Kinect y NITE en GNU/Linux Ubuntu 11.10 desde fuentes

Introducción

OpenNI (Open Natural Interaction) es una organización sin ánimo de lucro enfocada en el desarrollo de tecnologías para la interacción natural con dispositivos.  Uno de sus principales participantes es PrimeSense, una empresa israelí responsable del desarrollo del Kinect y dispositivos similares junto con la firma Asus.

Su framework provee una infraestructura genérica basada en APIs de código abierto para acceder a los dispositivos de interacción natural, sobre él se instala el Sensor que permite acceder específicamente a los servicios provistos por el Kinect.  Adicionalmente esta empresa desarrolla el middleware NITE el cual no es de código abierto y permite acceder a funcionalidades avanzadas como seguimiento del esqueleto en tiempo real y  reconocimiento de gestos entre otras cosas.

Este proedimiento fue verificado en equipos utilizando GNU/Linux Ubuntu 11.10 y Mint 12.

Aviso!  Se instalarán las versiones inestables de OpenNI y NITE ya que actualmente así lo sugiere el módulo de SensorKinect modificado por avin2.

Prerequisitos

$ sudo aptitude install build-essential python libusb-1.0-0-dev freeglut3-dev openjdk-7-jdk doxygen graphviz

Si se desea instalar el soporte para .NET es necesario contar previamente con el soporte para Mono instalado.

$ sudo aptitude install mono-complete

Instalar OpenNI

$ mkdir ~/kinect ; cd ~/kinect

$ git clone https://github.com/OpenNI/OpenNI.git -b unstable

Aviso!  Si hay problemas con la siguiente ruta verificar si existe el directorio Linux o Linux-x86 ya que he visto algunas variaciones entre las pruebas que realicé a finales de diciembre del año pasado y esta versión mas reciente.

$ cd OpenNI/Platform/Linux/CreateRedist

$ bash RedistMaker

$ cd ../Redist/OpenNI-Bin-Dev-Linux-x86*/

$ sudo ./install.sh

Instalar Sensor Kinect

$ cd ~/kinect

$ git clone https://github.com/avin2/SensorKinect

$ cd SensorKinect/Platform/Linux/CreateRedist

$ bash RedistMaker

$ cd ../Redist/Sensor-Bin-Linux-x86*

$ sudo sh install.sh

Instalar NITE

Descargar la distribución binaria para GNU/Linux mas reciente desde la siguiente ubicación.

http://www.openni.org/Downloads/OpenNIModules.aspx

Descargar el módulo inestable de NITE
Descargar el módulo inestable de NITE

$ cd ~/kinect

$ tar jxvf nite-bin-linux-x86-v1.5.2.21.tar.bz2

$ cd NITE-Bin-Dev-Linux-x86*/Data

$ chmod a+w *

$ vi *.xml

<License vendor=”PrimeSense” key=”insert key here”/>
… reemplazar por …
<License vendor=”PrimeSense” key=”0KOIk2JeIBYClPWVnMoRKn5cdY4=”/>

$ cd ..

$ sudo ./install.sh

Probar los ejemplos

Es posible verificar el funcionamiento del software recién instalado con las aplicaciones de demostración que este incluye.  Para hacer esto se recomienda revisar los siguientes directorios.

  1. ~/kinect/OpenNI/Platform/Linux/Bin/x86-Release
  2. ~/kinect/NITE-Bin-Dev-Linux-x86*/Samples/Bin/x86-Debug

Solución de problemas

Verificar el reconocimiento del dispositivo

Una vez conectado el Kinect al puerto USB del computador y a la corriente eléctrica este debe ser reconocido por el sistema operativo.

$ dmesg


[  158.092116] usb 2-3: new high speed USB device number 4 using ehci_hcd

[  158.224738] hub 2-3:1.0: USB hub found
[  158.224915] hub 2-3:1.0: 3 ports detected
[  158.800196] usb 2-3.2: new full speed USB device number 5 using ehci_hcd
[  160.336252] usb 2-3.1: new high speed USB device number 6 using ehci_hcd
[  161.448177] usb 2-3.1: usbfs: USBDEVFS_CONTROL failed cmd mtp-probe rqt 128 rq 6 len 1024 ret -110
[  162.128178] usb 2-3.3: new high speed USB device number 7 using ehci_hcd
[  162.299863] gspca: v2.13.0 registered
[  162.301016] usbcore: registered new interface driver kinect

$ lsusb


Bus 002 Device 005: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor
Bus 002 Device 006: ID 045e:02ad Microsoft Corp. Xbox NUI Audio
Bus 002 Device 007: ID 045e:02ae Microsoft Corp. Xbox NUI Camera

error CS0117: `OpenNI.CalibrationStatus’ does not contain a definition for `ManualAbort’

Si se está realizando una actualización de OpenNI probablemente sea buena idea desinstalar los archivos previos antes de realizar nuevamente los pasos descritos en este artículo.

$ sudo rm -rf /usr/include/ni/
$ sudo rm /usr/share/java/org.OpenNI.jar
$ sudo rm /usr/lib/libOpenNI.jni.so
$ sudo rm -rf /usr/lib/mono/gac/OpenNI.net
$ sudo rm /usr/lib/mono/2.0/OpenNI.net.dll
$ sudo rm /usr/lib/libOpenNI.so

Open failed: Failed to set USB interface!


Aparentemente los kernels incluyen un módulo para interactuar con el Kinect que interfiere con la ejecución de OpenNI.  Para verificar esto es necesario ejecutar el siguiente comando.

$ lsmod | grep gspca_kinect

gspca_kinect           12792  0
gspca_main             27610  1 gspca_kinect

En caso de existir este módulo debe ser removido de la siguiente manera.

$ sudo rmmod gspca_kinect

Para evitar permanentemente la carga de este módulo del Kernel es necesario agregarlo a la lista negra de la siguiente manera.

$ sudo vi /etc/modprobe.d/blacklist-kinect.conf

blacklist gspca_kinect

Esta modificación será tenida en cuenta tan pronto como se reinicie el sistema operativo.

Enlaces

28 thoughts on “Instalación OpenNI, Sensor Kinect y NITE en GNU/Linux Ubuntu 11.10 desde fuentes”

  1. Hola Jorge , estoy intentando instalar OpenNi pero cuando ejecuto “bash RedistMaker” (como sudo tb) la consola da una serie de errores y al final Building Failed! Estoy con Ubuntu 11.10 de 64 bits , he conseguido instalar openkinect y probado q la camara funciona con glview.
    gracias de antemano y un saludo

  2. hola soy yo otra vez , toy probando en un portatil con ubuntu 11.10 32 bit y todo sin problemas ahora empezare a probar algun q otro hack de openni . De todas maneras me da rabia no poder concluir la instalacion en la torre de 64bit. un saludo 🙂

  3. Hola @haritz. Efectivamente en mi portátil utilizo la versión de 32 bits y no he tenido la oportunidad de intentarlo en un entorno de 64 bits. Algunas veces es molesto encontrar paquetes que no se dejan construír fácilmente a 64 bits. De todas maneras, qué mensaje de error obtienes ?

    1. Perdona por no escribir antes. pero hace dos dias consegui echar a andar. Tenia un problema haciendo make , librerias cruzadas creo http://fedoraproject.org/wiki/UnderstandingDSOLinkChange algo parecido a lo q explican aqui. lo adapte a todos los makefiles q daban fallo y pude completar bash Redistmaker. No soy un usuario muy avanzado de linux pero lo intento. Consegui instalar Openkinet y OpenNi y tb frameworks y algunos paquetes mas. Aunque algunos ejemplos como el exqueleto no me van… Ahora estoy intentando echar a andar KinectCoreVision de Patricio Gonzalez ( entre él y tu blog consegui instalar todo, le conoces?es muy majete le sigo por twitter) http://www.patriciogonzalezvivo.com/blog/?p=213 http://www.patriciogonzalezvivo.com/blog/?p=364 He conseguido calibrar la pantalla pero no termino de entender la instalacion y/o configuracion de TUIO o los protocolos usados para aplicar gestos.

  4. Jorge, muchas gracias por compartir esta información, todos los pasos son claros y no me molestaron para nada en mi pc.
    Ahora si a trabajar con el kinect =)

  5. Hola jorge. He seguido las instrucciones paso a paso y no me da ningun problema hasta que ejecuto los ejemplos. y me sale el siguiente error:

    Open failed: Xiron OS failed to wait on event!

    No tengo niidea de porque me da este error nicomo solucionarlo.

  6. El día de hoy realicé la construcción de las librerías para x86 utilizando Ubuntu 12.04 en las siguientes versiones y el procedimiento se mantiene igual.

    1. OpenNI Redist 1.5.2.23
    2. SensorKinect 5.1.0.25
    3. NITE x86 1.5.2.21

  7. Saludos Luis, hace un par de días volví a crear todas las librerías con Ubuntu 12.04 (32 bits) y no tuve ningún problema.

    Hice una búsqueda de tu problema y encuentro que Xiron OS es el sistema operativo del Kinect con el cual se comunica OpenNI. También encontré que ese problema lo tuvieron varias personas a finales del año pasado pero que supuestamente fue corregido en el repositorio de Avin2.

    Enlace: https://groups.google.com/forum/#!topic/openni-dev/r8SID3IwCtc

    Se me ocurren dos preguntas al respecto.

    – Estás utilizando las últimas versiones del software ?
    – Podrías probar con otro Kinect para descartar algún tipo de problema con el hardware ?

  8. Hola jorge, Estoy probando con la ultima version del software pero es con el ubuntu 11.10 de 64 bits, puede que el problema lo de solo con esta version..

    He probado con otra kinect y sigue dando el mismo error, y lo raro es que en windows 7 funciona pefectamente.

    He preguntado a un profesor mio de la universidad y dice que puede que sea por la seguridad de selinux, que no me deje usar el dispositivo, que trate de deshabilitarlo. Probaré esto ysino miraré con la version de 32 bits del ubuntu 11.10.

  9. Luis, totalmente apriori creo que la diferencia puede ser la arquitectura. Los equipos en los que he probado han tenido versiones de 32 bits de Ubuntu, aún no lo he probado a 64 bits así que no se como se comporte la librería o su proceso de construcción. Podría ser ese el detalle.

  10. Hola Jorge, ya me he instalado el ubuntu 11.10 de 32 bits y, como me dijiste, aquí va todo perfectamente. Muchas gracias por todo y ahora me pondré a programar, que lo estoy deseando!.

  11. Hola jorge. Se me instala todo perfectamente y los ejemplos me van tambien. Pero cuando pruebo el niviewer y le doy a la c para capturar una imagen, en la carpeta capturedFrames ,me pone dos archivos con extension .raw, uno para la profundidad (depth_0.raw) y otro para la imagen (image_0.raw). El de la profundidad lo abro y puedo ver su contenido, pero la imagen en si me sale toda negra. Estoy haciendo algo mal al capturar? o tengo que abrirlo con algun programa en concreto para visualizarlo correctamente?

  12. Actualizados los paquetes a las versiones listadas a continuación utilizando el mismo procedimiento y todo parece seguir bien.

    0. Ubuntu 12.04 (32 bits)
    1. OpenNI Redist 1.5.4.0
    2. SensorKinect 5.1.2.1
    3. NITE x86 1.5.2.21

  13. A día de hoy (12/06/2012) he seguido tus pasos y funciona correctamente sin problemas en:

    – Kubuntu 21.4 (64 bits)
    – OpenNI Redist 1.5.4.0
    – SensorKinect 5.1.2.1
    – NITE x64 1.5.2.21

  14. Hola, si bien se que esta guía no esta dedicada a la instalación en Windows. Quisiera saber si alguien ha podido hacer OpenNI con Kinect en Windows 7. He estado probando varios tutoriales que he encontrado y con ninguno he tenido éxito. Si alguien a podido, agradecería que me diera una ayuda en como lo hizo.

    Saludos y gracias!

  15. Hola mi estimado Jorge

    Yo soy nuevo en esto de Ubuntu y no puedo hacer el reemplazo de la ultima parte del NITE, quiero escribir pero no me deja, y cuando copio y pego no se pega todo, y cuando hice que se pegara todo bien no me dejo escribir nada ni hacer nada y no se como acabar esa parte, podrias por favor decirme como hacer esta ultima parte?
    De antemano GRACIAS

  16. buenas disculpen soy un poco nuevo en el tema e seguido el tutorial y todo me a instalado sin ningun problema lo que no e podido es ejecutar algun ejemplo por no saber como hacerlo necesito un poco de ayuda

  17. Que tal Jorge, muy bueno tu post, lo segui al pie de la letra y no tuve problemas para ejecutar los ejemplos de Python que hay en OpenNI, pero el problemas ahora es que con OpenCV que tenia instalado y funcionando correctamente ahora ya no puedo obtener el video de mi knect con los ejemplos que hay en OpenCV, no se si es por haber instalado el OpenNI o a que se debe, cuando intento ejecutar algun script de Python obtengo el siguiente error:
    Warning: unable to open video source: 0
    init done
    opengl support available
    Y necesito trabajar con OpenCV y OpenNI juntos, alguna recomendacion para solucionar este problema.
    Tengo una x64, con Ubuntu 12 ,
    saludos desde Ecuador y gracias por la ayuda posible.

  18. Hola, he intentado intalar OpenNI siguiendo tus pasos pero en el momento que utilizo install.sh (sudo ./install.sh) me da el siguiente error: “ls: no se puede acceder a /home/genral/kinect/OpenNI/Platform/Linux/CreateRedist/./Lib/*: No existe el archivo o el directorio”
    He seguido los pasos de otras webs y con otras versiones de OpenNI me pasa lo mismo, hay siempre algo que no encuentra. ¿Sabes porque puede ser?, estoy desesperado ya…
    Muchas gracias por su tiempo. Un saludo, Javier.

  19. Hola jorge, una pregunta tendras el archivo nite-bin-linux-x86-v1.5.2.21.tar.bz2 que pudieras proporcionarme ya que el link para descargarlo ya no esta, gracias

  20. Hola que tal he intentado instalar el sensorkinect-unstable en ubuntu 14, pero al hacer ./RedistMaker en la carpeta Platform/Linux/CreateRedist, me aparecen los siguientes errores :

    make[1]: *** [x64-Release/XnSensorDepthGenerator.o] Error 1
    make[1]: se sale del directorio «/home/albertnava/SensorKinect-unstable/Platform/Linux/Build/XnDeviceSensorV2»
    make: *** [XnDeviceSensorV2] Error 2

    y entonces ya no puedo seguir con el proceso que esta indicado en el link https://github.com/avin2/SensorKinect.

    ¿ Alguien sabe a que se debe ?

  21. Hola.
    Estoy realizando mi proyecto fin de carrera y el objetivo es realizar un mapa de ocupación a traves de la informacion proporcionada por Kinect2. Ando un poco perdido y quería saber si alguien sabe como hacerlo o sabe alguna herramienta para ello.

  22. Hola a todos.

    Me encuentro con un problema de dependencias al instalar el paquete freeglut3-dev. Me da el siguiente error:

    Los siguientes paquetes tienen dependencias incumplidas:
    freeglut3-dev : Depende: libgl1-mesa-dev o
    libgl-dev
    Depende: libglu1-mesa-dev pero no va a instalarse o
    libglu-dev
    E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos.

    Al tratar de realizar el ReDistMaker, me salen los errores que entiendo están relacionados a los paquetes no instalados:

    Fatal error: No existe el archivo o directorio
    #include

    He estado buscado en Google para ver que pasa con este paquete, y parece que más de uno tiene el mismo error.

    Estoy trabajando con Elementary OS (Freya), basado en Ubutu 14.04. Actualizado y a tope con él.

    ¿Se os ocurre alguna idea?

Leave a Reply

Your email address will not be published. Required fields are marked *