天天看點

Ubuntu18 安裝Kinect驅動(openni、NITE、Sensor)及遇到的問題

一、前言

先說一下部落客的運作環境:

Ubuntu kylin14.04

kinect第一代

另外還要注意的是openni、Sensor、NITE這三個包的版本必須比對才能正常運作,我的版本分别是:

OpenNI-Bin-Dev-Linux-x64-v1.5.7.10.tar

NITE-Bin-Linux-x64-v1.5.2.23.tar

SensorKinect093-Bin-Linux-x64-v5.1.2.1

可以在我的網盤下載下傳:​​​http://pan.baidu.com/s/1hqHB10w​​​ 提取密碼:wrmn 本文根據作者遇到的問題和讀者反應的問題實時更新

【重要】

這三個軟體包的安裝要注意順序:先安裝openni,再安裝Sensor,最後安裝NITE。

另外可以帶-u參數解除安裝這些軟體包重新安裝​​

​$ sudo ./install.sh -u​

​​,但是NITE裡有專門的uninstall.sh可以運作它來解除安裝。

【重要】

必須注意的是這三個安裝包必須以壓縮包的形式拷到要安裝驅動的電腦上,然後在要安裝驅動的電腦上解壓後開始安裝。

如果事先解壓之後拷到目标電腦上安裝會遇到許多檔案沒有權限的問題,即使對某些檔案賦予權限安裝完成之後仍會有些内部調用的檔案沒有權限導緻許多運作不成功的問題。

【關于電源的問題】

有讀者反應要在這裡補充一下體感攝像頭的電源問題,這裡我簡要提一下微軟的kinect和華碩的xtion

  • kinect:

    微軟的kinect是需要額外供電的,官方提供的線是一根分叉線,從kinect出來的線需要連到一個具有兩個分叉的轉接線上,一個分叉是USB2.0口一個分叉是電源口。kinect需要12V直流電供電,如果是turtlebot2平台的話在底座上有一個12V1.5A的電源輸出插座,而且turtlebot2配的kinect資料線電源口做好了插頭,直接插上去就完了;如果是單獨買的kinect,我們不想用它的220V插頭可以淘寶買一個12V直流電池,然後把連接配接電源那端的線剪掉連到電池上(師兄們燒壞了幾個kinect得出來的教訓是一定要注意kinect原裝線的電源端是白負、褐正、黑色是接地可以不接,如果顔色不符的話接電池的時候最好自己再确認一下正負)。

  • xtion:

    華碩的xtion不需要額外供電,直接插USB就行了。

二、安裝OpenNI

下載下傳OpenNI-Bin-Dev-Linux-x64-v1.5.7.10.tar解壓得到OpenNI-Bin-Dev-Linux-x64-v1.5.7.10檔案夾,我把這三個包都放在home下面的software目錄下

$ cd /home/siat/software/OpenNI-Bin-Dev-Linux-x64-v1.5.7.10
$ sudo ./install.sh      

如果顯示如下

Installing OpenNI
****************************

copying shared libraries...OK
copying executables...OK
copying include files...OK
creating database directory...OK
registering module 'libnimMockNodes.so'...OK
registering module 'libnimCodecs.so'...OK
registering module 'libnimRecorder.so'...OK
creating java bindings directory...OK
Installing java bindings...OK

*** DONE ***      

則安裝成功

三、安裝Sensor

下載下傳SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2解壓得到SensorKinect093-Bin-Linux-x64-v5.1.2.1檔案夾放到software下面

$ cd /home/siat/software/Sensor-Bin-Linux-x64-v5.1.2.1
$ sudo ./install.sh      

如果顯示如下

Installing PrimeSense Sensor
****************************

creating config dir /usr/etc/primesense...OK
copying shared libraries...OK
copying executables...OK
registering module 'libXnDeviceSensorV2KM.so' with OpenNI...OK
registering module 'libXnDeviceFile.so' with OpenNI...OK
copying server config file...OK
setting uid of server...OK
creating server logs dir...OK
installing usb rules...OK
installing modprobe blacklist...OK

*** DONE ***      

則安裝成功

四、安裝NITE

下載下傳NITE-Bin-Linux-x64-v1.5.2.23.tar解壓得到NITE-Bin-Linux-x64-v1.5.2.23檔案夾放在software下面

$ cd /home/siat/software/NITE-Bin-Linux-x64-v1.5.2.23
$ sudo ./install.sh      

如果顯示如下:

Installing NITE
***************

Copying shared libraries... OK
Copying includes... OK
Installing java bindings... OK
Installing module 'Features_1_3_0'...
Registering module 'libXnVFeatures_1_3_0.so'... OK
Installing module 'Features_1_3_1'...
Registering module 'libXnVFeatures_1_3_1.so'... OK
Installing module 'Features_1_4_1'...
Registering module 'libXnVFeatures_1_4_1.so'... OK
Installing module 'Features_1_4_2'...
Registering module 'libXnVFeatures_1_4_2.so'... OK
Installing module 'Features_1_5_2'...
Registering module 'libXnVFeatures_1_5_2.so'... OK
Copying XnVSceneServer... OK
Installing module 'Features_1_5_2'
registering module 'libXnVHandGenerator_1_3_0.so'...OK
Installing module 'Features_1_5_2'
registering module 'libXnVHandGenerator_1_3_1.so'...OK
Installing module 'Features_1_5_2'
registering module 'libXnVHandGenerator_1_4_1.so'...OK
Installing module 'Features_1_5_2'
registering module 'libXnVHandGenerator_1_4_2.so'...OK
Installing module 'Features_1_5_2'
registering module 'libXnVHandGenerator_1_5_2.so'...OK
Adding license.. OK

*** DONE ***      

則安裝成功

五、運作示例

連上kinect的資料線

$ cd ~/software/OpenNI-Bin-Dev-Linux-x64-v1.5.7.10/Samples/Bin/x64-Release
$ ./NiViewer       

如果出現kinect畫面則配置成功

Ubuntu18 安裝Kinect驅動(openni、NITE、Sensor)及遇到的問題

如果想解除安裝這三個軟體包隻要同樣運作​

​./install.sh​

​​ 帶上參數​

​-u​

​ 即可

$ sudo ./install.sh -u      

六、問題

1、注意如果出現:

One or more of the following nodes could not be enumerated:

Device: PrimeSense/SensorV2/5.1.6.6: The device is not connected!
Device: PrimeSense/SensorV2/5.1.0.41: The device is not connected!
Device: PrimeSense/SensorV2/5.1.6.6: The device is not connected!
Device: PrimeSense/SensorV2/5.1.0.41: The device is not connected!

Press any key to continue . . .      

這樣的問題有可能是這三個包版本不比對,我這裡的三個包親測是可用的。但是Sensor如果是5.1.6.6版本則出現上面報錯。

—-2015.10.19

之前安裝好了驅動可以正常運作的,今天運作openni的節點卻發現不能正常打開Kinect了,報錯如下:

Device: PrimeSense/SensorV2/5.1.0.41: The device is not connected!      

于是我重新做了一遍步驟四

$ cd /home/siat/software/Sensor-Bin-Linux-x64-v5.1.2.1
$ sudo ./install.sh      

再次運作示例程式成功啟動Kinect

—-2016.06.13

我嘗試用32位版本的驅動來啟動xtion,還是提示連不上裝置,當我重新編譯上面三個64位驅動運作NiViewr的時候出現如下提示:

One or more of the following nodes could not be enumerated:

Device: PrimeSense/SensorKinect/5.1.2.1: The device is not connected!
Device: PrimeSense/SensorV2/5.1.0.41: The device is not connected!
Device: PrimeSense/SensorKinect/5.1.2.1: The device is not connected!
Device: PrimeSense/SensorV2/5.1.0.41: The device is not connected!

Press any key to continue . . .      

我用​

​./install.sh -u​

​​ 解除安裝Openni和Sensor,用​

​./uninstall.sh​

​​ 解除安裝NITE,然後重新到原64位Sensor驅動下運作​

​./install.sh​

​ 之後正常使用NiViewr開啟kinect。

2、注意openni2和NITE2版本的包現在隻能用于xtion,kinect隻能使用版本1的驅動

3、檢視版本

$ pkg-config --modversion opencv      

會顯示版本号,比如

2.4.11      

可以将opencv替換為其他包名字,用Tab鍵補全以避免名字出錯

4、用apt-get方式安裝的一些包

kinect用的freenect:

$ sudo apt-get install ros-indigo-freenect-launch
$ sudo apt-get install ros-indigo-freenect-camera
$ sudo apt-get install ros-indigo-freenect-stack      

xtion用的openni:

$ sudo apt-get install ros-indigo-openni-camera
$ sudo apt-get install ros-indigo-openni-launch
上面如果不行請使用下面的驅動
$ sudo apt-get install ros-indigo-openni2-camera
$ sudo apt-get install ros-indigo-openni2-launch      

5、關于kinect和xtion切換的問題

openni預設的裝置是kinect,如果你用的是kinect,裝完上面的驅動之後運作NiViewer可以正常使用

但是如果你使用的裝置是xtion,直接運作NiViewer會出現如下報錯

Open failed: USB interface is not supported!      

運作​

​$ roslaunch openni_launch openni.launch​

​ 出現如下報錯

[ INFO] [1464612941.306334563]: Initializing nodelet with 4 worker threads.
[ INFO] [1464612947.664521213]: Number devices connected: 1
[ INFO] [1464612947.666982470]: 1. device on bus 002:04 is a SensorV2 (601) from PrimeSense (1d27) with serial id '1312120224'
[ INFO] [1464612947.667906288]: Searching for device with index = 1
[ INFO] [1464612947.670034045]: No matching device found.... waiting for devices. Reason: openni_wrapper::OpenNIDevice::OpenNIDevice(xn::Context&, const xn::NodeInfo&, const xn::NodeInfo&, const xn::NodeInfo&, const xn::NodeInfo&) @ /tmp/binarydeb/ros-indigo-openni-camera-1.9.5/src/openni_device.cpp @ 61 : creating depth generator failed. Reason: USB interface is not supported!      

也是​

​USB interface is not supported!​

​​ 的問題

解決方案如下:​​​參考部落格​​ 修改GlobalDefaults.ini配置檔案

$ sudo gedit /etc/openni/GlobalDefaults.ini       

将第60行前面的分号去掉(即取消注釋)

;UsbInterface=2      

注意有的電腦組態檔案可能在這:

​​

​/usr/etc/primesense/GlobalDefaults.ini​

再次嘗試運作​

​openni.launch​

​​ 或者​

​NiViewer​

​ 就可以用xtion了,如果不行還需要重新開機一下電腦

關于xtion部落客還有一個一直很困擾的問題,在剛裝系統的電腦上安裝上面三個驅動使用xtion很正常,但是在使用了一段時間的電腦上裝這三個驅動卻一直提示​

​the device is not connected!​

​,試了上面所有的方案都不行,估計是驅動沖突,我解除安裝了所有openni、nite相關的包重新安裝驅動也不行,最後隻好無奈的使用微軟的Kinect才正常

6、Open failed: Xiron OS failed to wait on event!

運作如下指令:

$ sudo chmod +x /usr/bin/XnSensorServer      

7、部落客重裝了32位ubuntu14.04,然後下載下傳上面三個驅動對應的32位驅動,編譯之後可以驅動華碩的xtion pro live,值得注意的是有可能遇到如下問題

Open failed: Failed to set USB interface!      

這個問題跟前面的類似,需要改GlobalDefaults.ini 檔案,但是32位驅動的這個配置檔案不在/etc/openni/下了,搜尋了一下檔案夾找到這個檔案原來是在/usr/etc/primesense/

$ sudo gedit /usr/etc/primesense/GlobalDefaults.ini       

将第60行前面的分号去掉(即取消注釋)

;UsbInterface=2      

再次嘗試運作​

​openni.launch​

​​ 或者​

​NiViewer​

​ 就可以用xtion了,如果不行還需要重新開機一下電腦

8、Find user generator failed: Error!

我使用xtion遇到這個問題如下報錯,重新把壓縮包拷到電腦上解壓之後編譯openni、Sensor、NITE這三個驅動,然後取消GlobalDefaults.ini檔案裡​​

​;UsbInterface=2​

​ 行的注釋就好了

$ ./Sample-NiSimpleSkeleton 

Reading config from: '../../Config/SamplesConfig.xml'
Could not find data file /usr/etc/primesense/Features_1_5_2/s.dat
current working directory = /home/robot/software/OpenNI-Bin-Dev-Linux-x86-v1.5.7.10/Samples/Bin/x86-Release
Find user generator failed: Error!      

9、No devices connected…. waiting for devices to be connected

如果出現如下報錯:

siat@siat-ThinkPad:~$ roslaunch openni_launch openni.launch
[ INFO] [1470382635.817744169]: Initializing nodelet with 4 worker threads.
[ INFO] [1470382643.589318569]: No devices connected.... waiting for devices to be connected      
  • 首先是驅動問題

    檢查前面說的驅動是否正确安裝

    如果之前是正常使用的,驅動沒有問題

  • 再檢查USB裝置

    運作​​

    ​lsusb​

siat@siat-ThinkPad:~$ lsusb 
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 004: ID 04f2:b398 Chicony Electronics Co., Ltd 
Bus 003 Device 012: ID 04ca:2007 Lite-On Technology Corp. 
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 029: ID 045e:02ad Microsoft Corp. Xbox NUI Audio
Bus 001 Device 027: ID 045e:02c2 Microsoft Corp. Kinect for Windows NUI Motor
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub      

如果隻有​

​Microsoft Corp.​

​裝置隻有一個或沒有說明Kinect線沒插上或者供電不足,檢查Kinect分叉線的連接配接處和電源接口處是否正确連接配接,并檢查電量。

比如我的turtlebot2在底盤電量顯示還有30%左右的時候用​

​lsusb​

​​ 檢視裝置發現隻有​

​Microsoft Corp. Kinect for Windows NUI Motor​

​​ 而找不到​

​Microsoft Corp. Xbox NUI Audio​

​​ ,換一個外部供電的Kinect可以正常使用,​

​lsusb​

​ 顯示的也是兩個裝置。這也是很無奈的事情,隻好乖乖充電了,也許底盤電量顯示不符合實際。

10、turtlebot官網的驅動安裝

​​​Install Kinect Driver (TurtleBot only)​​

  • 首先按照前面說的安裝openni

    請參照​​

    ​二、安裝OpenNI​

  • 安裝SensorKinect
mkdir ~/kinectdriver 
cd ~/kinectdriver 
git clone https://github.com/avin2/SensorKinect 
cd SensorKinect/Bin/
tar xvjf SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2
cd Sensor-Bin-Linux-x64-v5.1.2.1/
sudo ./install.sh      

了解更多關于《計算機視覺與圖形學》相關知識,請關注公衆号:

下載下傳我們視訊中代碼和相關講義,請在公衆号回複:計算機視覺課程資料

繼續閱讀