document d`installation de la Kinect

publicité
Directives d'installation pour OpenNI et OpenCV sur Linux
### Design III : Intégration ### Version Hiver 2014 ### Marc-André Gardner ###
0) Prérequis généraux
Assurez-vous d'avoir au moins 12 Go d'espace libre et de ne pas être sur une machine virtualisée,
configuration qui pose problème avec la Kinect. Sachez aussi que les téléchargements requis totalisent
plus de 1 Go, et que la durée de la compilation est importante (particulièrement pour OpenCV).
1a) Installer les prérequis sous Fedora (testé sur Fedora 19 et 20)
Dans un terminal, exécutez les commandes suivantes :
sudo yum groupinstall "Development tools"
sudo yum install libusb1-devel freeglut-devel cmake java-1.7.0-openjdk-devel clutter-gtk-devel gcc-c++ wget
sudo yum install gstreamer-devel gtk2-devel libv4l-devel ant
Si vous voulez utiliser le wrapper Python, exécutez également :
sudo yum install python-devel numpy
1b) Installer les prérequis sous Ubuntu (testé sur 12.04 et 13.10)
Dans un terminal, exécutez les commandes suivantes :
sudo apt-get install build-essential libusb-1.0-0-dev freeglut3-dev libghc-gtk-dev
sudo apt-get install git openjdk-7-jdk cmake doxygen ant
sudo apt-get install libavcodec53 libavformat53 libavutil51 libswscale2
sudo apt-get install libswscale-dev libavcodec-dev libavformat-dev libavutil-dev
Si vous voulez utiliser le wrapper Python, exécutez également :
sudo apt-get install python-dev python-numpy
1c) Installer les prérequis sous ArchLinux
Dans un terminal, exécuter les commandes suivantes :
pacman -S cmake libusbx freeglut git doxygen jdk7-openjdk python2-numpy apache-ant
2) Télécharger et compiler OpenNI
Dans un terminal, exécutez les commandes suivantes (les commentaires en rouge ne sont pas à copier) :
cd
git clone -b unstable https://github.com/OpenNI/OpenNI.git OpenNI_install
cd OpenNI_install/Platform/Linux/CreateRedist
./RedistMaker
# Sur ArchLinux, il faut d'abord modifier « python » pour « python2 » dans ce fichier
cd ../Redist/OpenNI-Bin-Dev-Linux-x64-v1.5.8.5
# Le chemin variera selon votre architecture, x86 ou x64
sudo ./install.sh
cd
git clone -b unstable https://github.com/ph4m/SensorKinect.git KinectDriver
cd KinectDriver/Platform/Linux/CreateRedist
./RedistMaker
# Peut prendre un certain temps
cd ../Redist/Sensor-Bin-Linux-x64-v5.1.2.1
# Le chemin variera selon votre architecture, x86 ou x64
sudo ./install.sh
3) Compilation et installation de OpenCV
Dans un terminal, exécutez les commandes suivantes (les commentaires en rouge ne sont pas à copier) :
cd
wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.8/opencv-2.4.8.zip
unzip opencv-2.4.8.zip
cd opencv-2.4.8/
mkdir build && cd build
cmake .. -DWITH_OPENNI=ON
#Vous pouvez vous assurer que la configuration est correcte en vérifiant si les lignes
# OpenNI : YES (ver 1.5.8, build 5)
# et OpenNI PrimeSensor Modules : YES # (/usr/lib/libXnCore.so)
# sont présentes
# Si vous souhaitez utiliser Python, vous pouvez également vous assurer que la
# configuration est correcte en observant si les lignes suivantes sont présentes (peut légèrement différer)
# -- Python:
# -- Interpreter:
/usr/bin/python2 (ver 2.7.5)
# -- Libraries:
/usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.5+)
# -- numpy:
/usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.7.1)
# Si vous voulez utiliser Java, exécutez la ligne suivante (le chemin peut être légèrement différent selon votre conf)
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
make -j 2
# Ajustez le chiffre selon le nombre de cœurs de votre ordinateur et patientez, ce sera long!
sudo make install
Attention! Désinstallez toutes les installations présentes de OpenCV avant de procéder à l'installation
d'une nouvelle, en particulier celles installées à partir des dépôts de votre distribution (apt-get ou yum).
Note : Il est fortement recommandé de redémarrer après l'installation, avant tout test, afin de permettre
aux permissions Udev d'être propagées sur le système.
Note : Des exemples introductifs sont présents (pour C, C++ et Python) dans le dossier opencv2.4.8/samples
Note : Selon votre configuration, il se peut que vous obteniez des erreurs du genre :
error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
Cette erreur est due au fait que les librairies sont installées dans /usr/local/lib, qui n'est pas reconnu par
défaut par le linker. Dans ce cas, la solution recommandée est d'ajouter le chemin des librairies à la
compilation. Par exemple, la commande compilation suivante :
g++ houghcircles.cpp -o testcv -lopencv_core -lopencv_imgproc -lopencv_highgui
devient :
g++ houghcircles.cpp -o testcv -lopencv_core -lopencv_imgproc -lopencv_highgui -Wl,-rpath=/usr/local/lib
Il est également possible de modifier la variable d'environnement LD_LIBRARY_PATH, par exemple
en ajoutant la commande suivante à la fin du fichier ~/.bashrc :
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
4) Informations pour l'installation sur MacOS X
Bien que nous ne supportions pas officiellement l'installation sur MacOS X, il a été rapporté que celleci était fonctionnelle. Il faut toutefois compiler OpenCV en utilisant LLVM-GCC42
Techniquement, la plupart des étapes énoncées ci-dessus restent les mêmes, sauf lorsque des chemins
spécifiques sont utilisés (par exemple OpenNI_install/Platform/Linux/CreateRedist deviendrait
OpenNI_install/Platform/MacOS/CreateRedist ou OpenNI_install/Platform/Darwin/CreateRedist ). Dans tous les cas,
les README de OpenNI et de OpenCV contiennent plus de détails sur la procédure d'installation.
5) Quelques problèmes potentiels et leurs solutions
Erreur de type « Failed to create depth generator : Failed to set USB interface »
Assurez-vous que les modules noyau gspca_main et gspca_kinect ne sont pas chargés. Cela peut être
vérifié très simplement en utilisant, dans un terminal, la commande :
lsmod | grep gspca
Si cette commande ne produit rien, c'est que la configuration est correcte. Sinon, il faut retirer ces
modules (utilisez la commande rmmod) et, pour rendre la modification permanente, mettre le module
sur une liste noire de modules à ne jamais charger. Cette procédure dépend de la distribution utilisée,
mais est généralement très simple. Par exemple pour Ubuntu, voir la page :
http://doc.ubuntu-fr.org/tutoriel/tout_savoir_sur_les_modules_linux#empecher_le_chargement_d_un_module
Erreurs de permissions (permission denied...)
Vérifiez que le fichier nommé /etc/udev/rules.d/55-primesense-usb.rules existe. Dans le cas contraire,
refaites l'installation de OpenNI (l'étape sudo ./install.sh) ou ajoutez le manuellement, et redémarrez
l'ordinateur.
Image RGB déformée, ou avec seulement une ligne sur deux
Ajoutez un court temps d'attente après l'initialisation. Par ailleurs, il peut être bon d'explicitement
ignorer la première image renvoyée par la Kinect. Normalement, le problème n'est pas persistant dans
le temps.
Erreur d'importation avec Python (No module named cv2)
Assurez-vous que les fichiers cv2.so et cv.py sont situés dans un dossier contenu dans la variable
PYTHONPATH. Par exemple, ceux-ci sont souvent installés dans /usr/local/lib/python2.7/site-packages
et, dans ce cas, on peut l'ajouter temporairement en préfixant la commande python, par exemple :
PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages python monfichier.py
Si cela est bien le problème, alors on peut rendre la modification permanente en l'ajoutant à la fin du
fichier ~/.bashrc. Sinon, vérifiez l'installation de OpenCV, en vous assurant en particulier de la présence
des lignes relatives à Python et numpy dans la sortie de Cmake (voir étape 3).
Problème Python avec certaines constantes (Module objet has no attribute...)
Assurez-vous d'utiliser une version d'OpenCV postérieure à la 2.4.3 (donc au minimum la 2.4.4), qui
corrige ce problème qui a été remonté aux développeurs suite au cours de l'année passée.
Problème lors de l'initialisation de la Kinect (Failed to enumerate production
tree : Can't create any node of the requested type!)
N'utilisez pas de système virtualisé pour gérer la Kinect, qui s'accommode bien mal des délais
supplémentaires induits par la virtualisation sur le bus USB. Si ce n'est pas le cas, assurez-vous que la
Kinect est bien reconnue (à l'aide de la commande lsusb, qui devrait lister les 3 périphériques
composant la Kinect), et, le cas échéant, rebranchez la Kinect afin de recommencer son initialisation.
Téléchargement