BLOG

Installation de la kinect sur ubuntu 13.10.

Important !!
Il semblerait que les kinects de séries 1473 ne fonctionnent pas "encore" avec les drivers freenect.

1- Installation des paquets et préparation de l'environnement

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install cmake git-core freeglut3-dev freeglut3 pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev python doxygen graphviz openjdk-6-jdk
$ mkdir ~/kinect && cd ~/kinect

 

Vérifions que la kinect est bien reconnu par votre système. Branchez la puis lancez la commande suivante:

lsusb |grep Xbox


Bus 001 Device 058: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor
Bus 001 Device 059: ID 045e:02ad Microsoft Corp. Xbox NUI Audio
Bus 001 Device 060: ID 045e:02ae Microsoft Corp. Xbox NUI Camera

 

2 - Mise en place des drivers freenect

Nous avons de besoin des drivers freenect afin de pouvoir communiquer avec la kinect.

 

2.1 - Installation en compilant les sources via GIT

$ git clone https://github.com/OpenKinect/libfreenect.git
$ cd libfreenect
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ sudo ldconfig /usr/local/lib64/
$ cd ..

 

Et voilà les drivers sont installer. Pour être sur que tout est bien installer on va tester la kinect

$ glview

 

2.2 - Installation via APT (dépots officiels)

$ sudo apt-get install freenect

 

Pour être bien sur que tout va bien:

$ freenect-glview

 

2.3 - Installation via APT (dépots NeuroDebian)

$ wget -O- http://neuro.debian.net/lists/$(lsb_release -cs).us-nh | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
$ sudo apt-key adv --recv-keys --keyserver pgp.mit.edu 2649A5A9
$ sudo apt-get update

 

En suite, tout se passe comme pour l'installation des dépot officiels:

$ sudo apt-get install freenect
$ freenect-glview

 

3 - Installation d'OpenNI2

$ wget http://www.openni.org/wp-content/uploads/2013/11/OpenNI-Linux-x64-2.2.0.33.tar.zip
$ unzip OpenNI-Linux-x64-2.2.0.33.tar.zip && tar xjf OpenNI-Linux-x64-2.2.tar.bz2
$ cd OpenNI-Linux-x64-2.2
$ sudo ./install.sh
$ cat OpenNIDevEnvironment
  export OPENNI2_INCLUDE=/home//kinect/OpenNI-Linux-x64-2.2/Include
  export OPENNI2_REDIST=/home//kinect/OpenNI-Linux-x64-2.2/Redist
$ vim ~/.bashrc
  export OPENNI2_INCLUDE=/home//kinect/OpenNI-Linux-x64-2.2/Include
  export OPENNI2_REDIST=/home//kinect/OpenNI-Linux-x64-2.2/Redist

Après il faut fermer votre session puis la réouvrir. Pour savoir si tout va bien vérifions que les variables d'environnement sont bien créés:

$ env |grep OPENNI2
   OPENNI2_REDIST=/home//kinect/OpenNI-Linux-x64-2.2/Redist
   OPENNI2_INCLUDE=/home//kinect/OpenNI-Linux-x64-2.2/Include

 

4 - Installation du pont entre libfreenect et OpenNI2

$ git clone https://github.com/piedar/OpenNI2-FreenectDriver.git
$ cd OpenNI2-FreenectDriver
$ ./waf configure build
$ cd build
$ cp libFreenectDriver.so ~/kinect/OpenNI-Linux-x64-2.2/Redist/OpenNI2/Drivers/
$ cd ~/kinect/OpenNI-Linux-x64-2.2/Redist/OpenNI2/Drivers/
$ ln -s libFreenectDriver.so libFreenectDriver.so.1
$ ln -s libFreenectDriver.so libFreenectDriver.so.1.2.0

 

Si vous voulez tester l'installation en lancant les exemples du répertoire sample/bin, il vous faudra copier libFreenectDriver.so dans ~/kinect/OpenNI-Linux-x64-2.2/Samples/Bin/OpenNI2/Drivers

$ cd ~/kinect/OpenNI-Linux-x64-2.2/Samples/Bin/OpenNI2/Drivers
$ cp ~/kinect/OpenNI2-FreenectDriver/build/libFreenectDriver.so .
$ ln -s libFreenectDriver.so libFreenectDriver.so.1
$ ln -s libFreenectDriver.so libFreenectDriver.so.1.2.0
$ cd ~/kinect/OpenNI-Linux-x64-2.2/Samples/Bin
$ ./SimpleViewer

 

5 - Installation de NiTE2

$ wget http://www.openni.org/wp-content/uploads/2013/10/NiTE-Linux-x64-2.2.tar1.zip
$ unzip NiTE-Linux-x64-2.2.tar1.zip && tar xjf NiTE-Linux-x64-2.2.tar.bz2
$ cd NiTE-Linux-x64-2.2
$ sudo ./install.sh
$ cat NiTEDevEnvironment
  export NITE2_INCLUDE=/home//kinect/NiTE-Linux-x64-2.2/Include
  export NITE2_REDIST64=/home//kinect/NiTE-Linux-x64-2.2/Redist
$ vim ~/.bashrc
  export NITE2_INCLUDE=/home//kinect/NiTE-Linux-x64-2.2/Include
  export NITE2_REDIST64=/home//kinect/NiTE-Linux-x64-2.2/Redist

Après il faut fermer votre session puis la réouvrir. Pour savoir si tout va bien vérifions que les variables d'environnement sont bien créés:

$ env |grep NITE2
   NITE2_INCLUDE=/home//kinect/NiTE-Linux-x64-2.2/Include
   NITE2_REDIST64=/home//kinect/NiTE-Linux-x64-2.2/Redist

Et voilà çà devrait fonctionner normalement maintenant.

 

6 - Sources

 

6 - Quelques problèmes que vous pourriez rencontrer

Kinect camera test
Number of devices found: 1
Could not claim interface on camera: -6
Could not open device

C'est un problème de droit au niveau de l'usb, il faut ajouter des règles pour autoriser l'accès à la kinect

$ sudo vim /etc/udev/rules.d/66-kinect.rules

# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02b0", MODE="0666"
# ATTR{product}=="Xbox NUI Audio"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ad", MODE="0666"
# ATTR{product}=="Xbox NUI Camera"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ae", MODE="0666"

 

En suite on redémarre l'usb pour prendre en compte les nouvelles règles

$ sudo /etc/init.d/udev restart

 

 

Number of devices found: 1
Could not claim interface on camera: -6
Could not open device

Les Kernels moderne on déjà un driver vidéo pour Kinect, il faut donc supprimer celui qui a été ajouté par freenect

$ sudo modprobe -r gspca_kinect

 

Pour qu'il ne soit pas charger à chaque démarrage, il faut le blacklister

$ sudo vim /etc/modprobe.d/blacklist_kinect.conf

blacklist gspca_kinect

 

En suite on redémarre l'usb pour prendre en compte le blacklistage du module

$ sudo /etc/init.d/udev restart

 

Note importante!!
Je vous conseille de débrancher votre kinect à chaque fois que vous faites des modifications au niveau des règles ou des modules car la commande $ sudo /etc/init.d/udev restart ne suffit pas toujours... Après on est quand même pas sous windows pas la peine de rédémarrer votre ordinateur 🙂

VOUS AVEZ UN PROJET ?

Nous sommes à votre écoute pour le mettre en place (...)