Installation Kinect Linux

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

Installation des différents logiciels et drivers pour utiliser la kinect sous linux

En fait il y a plusieurs couches logicielles plus ou moins interdépendantes :

  1. libfreenect : driver open source qui permet de récupérer les flux vidéo de la kinect
  2. OpenNI : logiciel fabriqué par la boite qui a inventé la kinect, permet de récupérer des images et infos brutes
  3. PrimeSensor : idem, couche en plus qui permet de récupérer des infos + élaborées : présence d'une personne, squelette, mains.
    Il existe plusieurs versions customisées de ce PrimeSensor
  4. NITE : idem, suite logiciels de tests
  5. OSCEleton : serveur OSC qui se connecte au serveur de PrimeSensor / OpenNI pour transférer les infos de squelettes à d'autres programmes (Pure Data, Processing)
  6. Plusieurs méthodes existent pour connecter la kinect à des logiciels d'interaction, soit via OSC et OSCEleton, soit plus directement (voir la page précédente ou Pd Pidip plus bas)

Simple quoi...

Il sera traité ici de l' Debian jessie instable 64bits et Ubuntu 10.04 Lucid, cette méthode doit être valable pour d'autres versions/distro

NB: sous Linux, quel que soit le programme que vous utilisez, il faut connecter votre Kinect sur un port USB 2 , et non pas USB 3.

Installation de libfreenect

Debian jessie instable 64 bits

Installation de libfreenect

Installer la version git à la main, la version du dépot semble ne pas marcher avec Nite2, par exemple, si vous obtenez ça :

OpenNI64/OpenNI-Linux-x64-2.2/Tools$ ./NiViewer -v
openDevice failed:

DeviceOpen: Couldn't open device '-v'

Press any key to continue . . .

c'est qu'il faut passer par l'install manuelle décrite là :

avec en plus

sudo make install

c'est à dire copier les fichiers :

/usr/local/lib$ sudo cp ../lib64/libfreenect.* .

et

/usr/local/lib$ sudo rm libfreenect.so.0.4
/usr/local/lib$ sudo ln -s ../lib64/libfreenect.so.0.4 libfreenect.so.0.4
sudo ldconfig

là le premier test marche :

/usr/local/bin/freenect-glview
Repository="/example/path/to/Samples/Bin/OpenNI2/Drivers/"
cp -L lib/OpenNI2-FreenectDriver/libFreenectDriver.{so,dylib} ${Repository}
# you could instead make a symlink to avoid copying after every build
# ln -s lib/OpenNI2-FreenectDriver/libFreenectDriver.{so,dylib} ${Repository}

Test

...OpenNI64/OpenNI-Linux-x64-2.2/Samples/Bin$ ./SimpleViewer

Lucid(10.04) et Maverick (10.10)

Il existe un dépôt launchpad ppa pour Lucid(10.04) et Maverick (10.10) :

https://launchpad.net/~floe/+archive/libtisch

pour l'utiliser, exécuter dans un terminal :

$ sudo add-apt-repository ppa:floe/libtisch
old$ sudo add-apt-repository ppa:arne-alamut/freenect

Resynchronisation de la liste des paquets dans les dépôts :

sudo apt-get update

Après ça on peut utiliser :

sudo apt-get install freenect

ça va installer freeglut3 freenect libfreenect-demos libfreenect-dev libfreenect0.0 libglut3 libusb-1.0-0-dev.

Après ça, il convient de s'ajouter au groupe 'video' et se re-logguer. Le paquet comprend déjà les règles pour udev, l'accès au périphérique sera donc possible pour les utilisateurs du groupe video

sudo adduser YOURNAME video

il faut se déconnecter de la session en cours et se reconnecter, pas besoin de rebooter complètement. Brancher la kinect maintenant, la débrancher - rebrancher si elle l'était déjà

Pour faire un test :

freenect-glview

ça donne : Capture-kinect0.png

Pour les noyaux récents (> v3)

Les versions récentes des noyaux Linux intègrent un module permettant de récupérer l'image de la caméra couleur de la Kinect, ce qui empêche la démo plus haut de fonctionner. Si vous avez le message suivant, vous êtes concernés:

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

Il faut donc décharger ce module.

$ sudo modprobe -r gspca_kinect
$ sudo modprobe -r gspca_main

En relançant la commande précédente, vous devriez avoir une fenêtre similaire à celle que vous voyez plus haut (vue 3D à gauche, vue caméra à droite).

Pour ne pas devoir répéter cette opération à chaque redémarrage, on doit mettre le module sur liste noire:

$ echo "blacklist gspca_kinect" >> /etc/modprobe.d/blacklist.conf
$ echo "blacklist gspca_main" >> /etc/modprobe.d/blacklist.conf

Voilà! Vous pouvez retourner à la vraie vie et faire une grille de l'amour :-)

Facultatif: Modifier udev pour permettre aux utilisateurs non-administrateurs d'accéder à la kinect
sudo gedit /etc/udev/rules.d/51-kinect.rules

Ajouter ces lignes, sauvegarder et redémarrer:

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

Des dépendances

sudo apt-get install g++ libglut3-dev libboost-all-dev libwxbase2.8-dev libwxgtk2.8-dev wx-common libusb-1.0-0-dev freeglut3-dev python doxygen graphviz mono-complete

Installation de OpenNI

Debian jessie instable 64 bits

  • installer libfreenect

Quick copy-paste instructions to get up-and-running instantly:

sudo apt-get install git-core cmake libglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev
git clone git://github.com/OpenKinect/libfreenect.git
cd libfreenect
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig /usr/local/lib64/
sudo glview

Note: If you getting an error saying apt-get cannot find libglut3, you might be on a newer version of Ubuntu that has freeglut3-* instead of libglut3-*, so your initial apt-get install would look like:

sudo apt-get install git-core cmake freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev

To use Kinect as a non-root user do the following:

sudo adduser $USER video

Also make a file with rules for the Linux device manager:

sudo nano /etc/udev/rules.d/51-kinect.rules

Copy and paste:

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

Be sure to log out and back in. d'après http://openkinect.org/wiki/Getting_Started#Manual_Build_on_Linux

Lucid(10.04) et Maverick (10.10)

./RedistMaker

Tout sera compilé et va créer un paquet distribuable "Platform/Linux-x86/Redist".

Cela va créer aussi une archive dans "Platform/Linux-x86/CreateRedist/Final". Aller dans le répertoire "Platform/Linux-x86/Redist".

sudo ./install.sh

Compiler OpenNI

Aller dans le dossier "Platform\Linux-x86\Build"

make

Pour compiler le Mono wrappers,

make mono_wrapper
make mono_samples

Installer avec un Binaire pour lucid 10.04

Fichier:OpenNI-OpenNI-4c9ff97BINLucid.tar.gz

  • Pour installer les fichiers depuis l'archive sur l'ordi, tenter dans OpenNI-OpenNI-4c9ff97/Platform/Linux-x86/Redist/
sudo ./install.sh
  • Les fichiers executables sont dans OpenNI-OpenNI-4c9ff97/Platform/Linux-x86/Bin/Release, faire par exemple
./Sample-NiSimpleViewer

Install SensorKinect Custom

Version Custom


Remarque de serge :

  • si le titre est Install Custom pourquoi proposer non custom
  • c'est quoi la différence entre custom et non custom

Version non custom:

Remarque de Benjamin :

Pour installer les fichiers depuis l'archive (custom ou non) sur l'ordi, dans Platform/Linux-x86/Redist/

sudo ./install.sh

Installation de NITE

Debian jessie instable 64 bits

./install.sh

puis renvoyer les drivers

OpenNI64/libfreenect/build$ cp -L lib/OpenNI2-FreenectDriver/libFreenectDriver.{so,dylib} ~/ZSofts/KINECT/OpenNI64/NiTE-Linux-x64-2.2/Samples/Bin/OpenNI2/Drivers/
OpenNI64/NiTE-Linux-x64-2.2/Samples/Bin$ ./SimpleUserTracker

marche !

Lucid(10.04) et Maverick (10.10)

Les sources http://www.openni.org/downloadfiles/openni-compliant-middleware-binaries/33-latest-unstable
le site de référence http://www.primesense.com/en/nite

/!\ pour que cela marche, il faut la bonne combinaison de openni (OpenNI-OpenNI-4c9ff97 ?), SensorKinect et nite

Binaire

Pour lucid 10.04: Fichier:Nite-1.3.0.17BINlucid.tar.gz

Please enter your PrimeSense license key:

The free license for Kinect devices is 0KOIk2JeIBYClPWVnMoRKn5cdY4=

Installation

Dans le dossier de Nite

echo '0KOIk2JeIBYClPWVnMoRKn5cdY4=' | sudo ./install.bash
Error

Attention avec Nite on peut avoir une erreur du type :
error CS0006: cannot find metadata file `System.Windows.Forms.dll'
Il faut installer alors :

sudo apt-get install libmono-winforms1.0-cil libmono-winforms2.0-cil
xnContextRegisterForShutdown
Note:
  • All of the NITE samples are using 320x240 resolution. You need to change it to 640x480 in the XML files inside the Data directory.
  • The audio device is not supported yet.

Install OSCeleton

Pour lancer osceleton

./osceleton -p 8110 mx 1 -my 1 -mz 1 -ox 0 -oy 0 -oz 0 -a 127.0.0.1

Prenez ensuite la pose "Haut les mains" pour être capturé.

L'aide est accessible avec

./osceleton -h

Install Pd-OSCeleton

Lancer osceleton.pd Osceleton pd.png


Résumé de l'installation sous Ubuntu 10.04 Lucid

Vérifié et validé Les samples marchent !

Le driver

sudo add-apt-repository ppa:arne-alamut/freenect
sudo apt-get update
sudo apt-get install freenect
sudo adduser YOURNAME video

se re-logguer : il faut se déconnecter de la session en cours et se reconnecter.Pour faire un test :

freenect-glview

Pour la suite

sudo apt-get install g++ libglut3-dev libboost-all-dev libwxbase2.8-dev libwxgtk2.8-dev wx-common libusb-1.0-0-dev freeglut3-dev python doxygen graphviz mono-complete

Installation de OpenNI

Aller dans le dossier "Platform/Linux-x86/CreateRedist"

./RedistMaker

Aller dans le répertoire "Platform/Linux-x86/Redist".

sudo ./install.sh

Les fichiers executables sont dans OpenNI-OpenNI-4c9ff97/Platform/Linux-x86/Bin/Release, faire par exemple

./Sample-NiSimpleViewer

Install SensorKinect Custom

Pour installer les fichiers, dans Platform/Linux-x86/Redist/

sudo ./install.sh

Installation de NITE

Dans le dossier de Nite

echo '0KOIk2JeIBYClPWVnMoRKn5cdY4=' | sudo ./install.bash

Install OSCeleton

Pour lancer osceleton

./osceleton -p 8110 mx 1 -my 1 -mz 1 -ox 0 -oy 0 -oz 0 -a 127.0.0.1

Install Pidip GEM Kinect

Utilisation dans Blender

Un site qui fourni tout pour l'installation sur Ubuntu Maverick 10.10

Here is the guide I followed. I updated it a little bit. Hope it helps someone! I got it working perfectly on my Debian.

They recommend Ubuntu 10.10 or greater. I had done it on Debian 6

STEP 1


Download the OpenNI modules appropriate for your operating system from http://75.98.78.94/Downloads/OpenNIModules.aspx

NOTE: I tried the unstable versions and it worked fine.

You should download these three: OpenNI binaries OpenNI compliant middleware binaries OpenNI compliant hardware binaries

The downloaded files should like these: ->OpenNI-Bin-Linux32-v1.1.0.41.tar.bz2 ->Nite-1.3.1.5.tar.bz2 ->Sensor-Bin-Linux32-v5.0.1.32.tar.bz2

Make a new folder called kinect $ cd $ mkdir kinect $ cd kinect and extract the downloaded files into it.

STEP 2


Update your linux $ sudo apt-get update install these files which are necessary for proper installation of drivers $ sudo apt-get install mono-complete $ sudo apt-get install libusb-1.0-0-dev $ sudo apt-get install freeglut3-dev

STEP 3


The extracted folders in step 1 will be ->OpenNI-Bin-Linux32-v1.1.0.41 ->Sensor-Bin-Linux32-v5.0.1.32 ->Nite-1.3.1.5 rename it to OpenNI, Sensor, Nite respectively Download the folder SensorKinect from https://github.com/avin2/SensorKinect Extract the folder to kinect folder and rename it to SensorKinect

STEP 4


Go to the folder OpenNI, Sensor, Nite and run sudo ./install.sh $ cd $ cd kinect $ cd OpenNI $ sudo ./install.sh Check if everything went OK! $ cd ../Sensor $ sudo ./install.sh Check if everything went OK! $ cd ../Nite $ sudo ./install.sh Check if everything went OK! Use this license when asked during the installation: 0KOIk2JeIBYClPWVnMoRKn5cdY4= $ cd ../SensorKinect/Platform/Linux-x86/CreateRedist/ $ sudo ./RedistMaker $ cd ../Redist $ sudo ./install.sh Check if everything went OK! You should be done by now. In case of any confusion refer the README in SensorKinect folder.

STEP 5


Test if everything is working fine Connect you kinect and run the samples from the OpenNI folder $ cd ~/kinect/OpenNI/Samples/Bin/Release/ (assuming the kinect folder is in home folder, otherwise go to the respective folder) $ ./NiViewer You should get the depth map and image stream on your window. --DONE--

++++++++++++++++ Dear makiavel,

just a minor note about your guide. As far as I know, you do not need to install OpenNI's Sensor *and* SensorKinect, as that is redundant (although it doesn't break things per se).

OpenNI.org's version of the Sensor package is used for hardware different than the Kinect, such as PrimeSense SDK and Asus Xtion PRO. On the other hand, avin2's patched version of Sensor, called SensorKinect, works with the Kinect. Therefore, in your case, you only need SensorKinect.

kinect avec processing

Daniel Shiffman a réalisé une librairie pour processing

Pour utiliser cette librairie, il faut quand même installer libfreenect avant.

une version toute compilée pour ubuntu 10.10 est téléchargeable ici :

Cette librairie est bien moins rapide et étendue que sous openframeworks mais permet néanmoins de bricoler un peu

Kinect avec vvvv

Un exemple d'usage par http://www.cloneproduction.net/, code source téléchargeable

kinect autres usages