ubuntu 14.04 +Kinect+ openNI+ openCV+ Sensorkinect 配置 +獲取深度圖像及相關問題
來源:程序員人生 發布時間:2016-07-11 08:53:38 閱讀次數:4923次
1. 最初參考的是:http://blog.csdn.net/u011700636/article/details/41493645的教程進程,但是其中遇到諸多問題,主要是來自于git包的問題,好像是相互不兼容的問題,安裝SensorKinect的時候總是報錯,把openni和sensorKinect都換成Unstable都不行。
2. Nite用于提取圖下功能SKETEON,暫不需要,跳過不裝沒有問題!!
3. 配置中 openNI+ openCV+ Sensorkinect是相互依賴的,因此opencv最后配置,如果之前配置過opencv,應當重新編譯配置1邊,添加openNI的選項,沒法獲得圖象報錯:
VideoCapture capture(CV_CAP_OPENNI) 不能獲得數據
4. USB 1.0或2.0沒有區分,都可以獲得信號。
5. 基本依賴庫的安裝:首先安裝,為了不以后安裝中的大量毛病。
sudo apt-get install git-core cmake freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb⑴.0-0-dev doxygen graphviz mono-complete
6.關于kinect配置和調試的文章: http://wiki.opencv.org.cn/index.php/%E5%9F%BA%E4%BA%8EKinect-OpenNI-OpenCV-OpenGL%E7%9A%84%E7%8E%AF%E5%A2%83%E4%B8%89%E7%BB%B4%E9%87%8D%E6%9E%84
========================
6. 使用以下方法通過安裝:http://blog.csdn.net/u013453604/article/details/48013959
以下轉載:
1、前言
先說1下博主的運行環境:
Ubuntu kylin14.04
kinect第1代
另外還要注意的是openni、NITE、Sensor這3個包的版本必須匹配才能正常運行,我的版本分別是:
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
本文地址:http://blog.csdn.net/u013453604/article/details/48013959
【重要】
這3個軟件包的安裝要注意順序:先安裝openni,再安裝Sensor,最后安裝NITE。
另外可以帶-u參數卸載這些軟件包重新安裝$ sudo ./install.sh -u
,但是NITE里有專門的uninstall.sh可以運行它來卸載。
2、安裝OpenNI
下載OpenNI-Bin-Dev-Linux-x64-v1.5.7.10.tar解壓得到OpenNI-Bin-Dev-Linux-x64-v1.5.7.10文件夾,我把這3個包都放在home下面的software目錄下
<code class="hljs lasso has-numbering"></code><pre name="code" class="prettyprint"><code class="hljs lasso has-numbering">$ cd /home/siat/software/OpenNI<span class="hljs-attribute">-Bin</span><span class="hljs-attribute">-Dev</span><span class="hljs-attribute">-Linux</span><span class="hljs-attribute">-x64</span><span class="hljs-attribute">-v1</span><span class="hljs-number">.5</span><span class="hljs-number">.7</span><span class="hljs-number">.10</span>
$ sudo <span class="hljs-built_in">.</span>/install<span class="hljs-built_in">.</span>sh</code>
如果顯示以下
<code class="hljs lasso has-numbering">Installing OpenNI
<span class="hljs-subst">****************************</span>
copying shared libraries<span class="hljs-attribute">...</span>OK
copying executables<span class="hljs-attribute">...</span>OK
copying include files<span class="hljs-attribute">...</span>OK
creating database directory<span class="hljs-attribute">...</span>OK
registering module <span class="hljs-string">'libnimMockNodes.so'</span><span class="hljs-attribute">...</span>OK
registering module <span class="hljs-string">'libnimCodecs.so'</span><span class="hljs-attribute">...</span>OK
registering module <span class="hljs-string">'libnimRecorder.so'</span><span class="hljs-attribute">...</span>OK
creating java bindings directory<span class="hljs-attribute">...</span>OK
Installing java bindings<span class="hljs-attribute">...</span>OK
<span class="hljs-subst">***</span> DONE <span class="hljs-subst">***</span></code>
則安裝成功
3、安裝Sensor
下載SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2解壓得到SensorKinect093-Bin-Linux-x64-v5.1.2.1文件夾放到software下面
<code class="hljs lasso has-numbering">$ cd /home/siat/software/Sensor<span class="hljs-attribute">-Bin</span><span class="hljs-attribute">-Linux</span><span class="hljs-attribute">-x64</span><span class="hljs-attribute">-v5</span><span class="hljs-number">.1</span><span class="hljs-number">.2</span><span class="hljs-number">.1</span>
$ sudo <span class="hljs-built_in">.</span>/install<span class="hljs-built_in">.</span>sh</code>
如果顯示以下
<code class="hljs lasso has-numbering">Installing PrimeSense Sensor
<span class="hljs-subst">****************************</span>
creating config dir /usr/etc/primesense<span class="hljs-attribute">...</span>OK
copying shared libraries<span class="hljs-attribute">...</span>OK
copying executables<span class="hljs-attribute">...</span>OK
registering module <span class="hljs-string">'libXnDeviceSensorV2KM.so'</span> <span class="hljs-keyword">with</span> OpenNI<span class="hljs-attribute">...</span>OK
registering module <span class="hljs-string">'libXnDeviceFile.so'</span> <span class="hljs-keyword">with</span> OpenNI<span class="hljs-attribute">...</span>OK
copying server config file<span class="hljs-attribute">...</span>OK
setting uid of server<span class="hljs-attribute">...</span>OK
creating server logs dir<span class="hljs-attribute">...</span>OK
installing usb rules<span class="hljs-attribute">...</span>OK
installing modprobe blacklist<span class="hljs-attribute">...</span>OK
<span class="hljs-subst">***</span> DONE <span class="hljs-subst">***</span></code>
則安裝成功
4、安裝NITE
下載NITE-Bin-Linux-x64-v1.5.2.23.tar解壓得到NITE-Bin-Linux-x64-v1.5.2.23文件夾放在software下面
<code class="hljs lasso has-numbering">$ cd /home/siat/software/NITE<span class="hljs-attribute">-Bin</span><span class="hljs-attribute">-Linux</span><span class="hljs-attribute">-x64</span><span class="hljs-attribute">-v1</span><span class="hljs-number">.5</span><span class="hljs-number">.2</span><span class="hljs-number">.23</span>
$ sudo <span class="hljs-built_in">.</span>/install<span class="hljs-built_in">.</span>sh</code>
如果顯示以下:
<code class="hljs r has-numbering">Installing NITE
***************
Copying shared libraries... OK
Copying includes... OK
Installing java bindings... OK
Installing module <span class="hljs-string">'Features_1_3_0'</span><span class="hljs-keyword">...</span>
Registering module <span class="hljs-string">'libXnVFeatures_1_3_0.so'</span><span class="hljs-keyword">...</span> OK
Installing module <span class="hljs-string">'Features_1_3_1'</span><span class="hljs-keyword">...</span>
Registering module <span class="hljs-string">'libXnVFeatures_1_3_1.so'</span><span class="hljs-keyword">...</span> OK
Installing module <span class="hljs-string">'Features_1_4_1'</span><span class="hljs-keyword">...</span>
Registering module <span class="hljs-string">'libXnVFeatures_1_4_1.so'</span><span class="hljs-keyword">...</span> OK
Installing module <span class="hljs-string">'Features_1_4_2'</span><span class="hljs-keyword">...</span>
Registering module <span class="hljs-string">'libXnVFeatures_1_4_2.so'</span><span class="hljs-keyword">...</span> OK
Installing module <span class="hljs-string">'Features_1_5_2'</span><span class="hljs-keyword">...</span>
Registering module <span class="hljs-string">'libXnVFeatures_1_5_2.so'</span><span class="hljs-keyword">...</span> OK
Copying XnVSceneServer... OK
Installing module <span class="hljs-string">'Features_1_5_2'</span>
registering module <span class="hljs-string">'libXnVHandGenerator_1_3_0.so'</span>...OK
Installing module <span class="hljs-string">'Features_1_5_2'</span>
registering module <span class="hljs-string">'libXnVHandGenerator_1_3_1.so'</span>...OK
Installing module <span class="hljs-string">'Features_1_5_2'</span>
registering module <span class="hljs-string">'libXnVHandGenerator_1_4_1.so'</span>...OK
Installing module <span class="hljs-string">'Features_1_5_2'</span>
registering module <span class="hljs-string">'libXnVHandGenerator_1_4_2.so'</span>...OK
Installing module <span class="hljs-string">'Features_1_5_2'</span>
registering module <span class="hljs-string">'libXnVHandGenerator_1_5_2.so'</span>...OK
Adding license.. OK
*** DONE ***</code>
則安裝成功
5、運行示例
連上kinect的數據線
<code class="hljs lasso has-numbering">$ cd ~/software/OpenNI<span class="hljs-attribute">-Bin</span><span class="hljs-attribute">-Dev</span><span class="hljs-attribute">-Linux</span><span class="hljs-attribute">-x64</span><span class="hljs-attribute">-v1</span><span class="hljs-number">.5</span><span class="hljs-number">.7</span><span class="hljs-number">.10</span>/Samples/Bin/x64<span class="hljs-attribute">-Release</span>
$ <span class="hljs-built_in">.</span>/NiViewer </code>
如果出現kinect畫面則配置成功

如果想卸載這3個軟件包只要一樣運行./install.sh
帶上參數-u
便可
<code class="hljs bash has-numbering">$ <span class="hljs-built_in">sudo</span> ./install.sh -u</code>
6、問題
1、注意如果出現:
<code class="hljs vbnet has-numbering">One <span class="hljs-keyword">or</span> more <span class="hljs-keyword">of</span> the following nodes could <span class="hljs-keyword">not</span> be enumerated:
Device: PrimeSense/SensorV2/<span class="hljs-number">5.1</span><span class="hljs-number">.6</span><span class="hljs-number">.6</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Device: PrimeSense/SensorV2/<span class="hljs-number">5.1</span><span class="hljs-number">.0</span><span class="hljs-number">.41</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Device: PrimeSense/SensorV2/<span class="hljs-number">5.1</span><span class="hljs-number">.6</span><span class="hljs-number">.6</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Device: PrimeSense/SensorV2/<span class="hljs-number">5.1</span><span class="hljs-number">.0</span><span class="hljs-number">.41</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Press any <span class="hljs-keyword">key</span> <span class="hljs-keyword">to</span> <span class="hljs-keyword">continue</span> . . .</code>
這樣的問題有多是這3個包版本不匹配,我這里的3個包親測是可用的。但是Sensor如果是5.1.6.6版本則出現上面報錯。
—⑵015.10.19
之前安裝好了驅動可以正常運行的,今天運行openni的節點卻發現不能正常打開Kinect了,報錯以下:
<code class="hljs http has-numbering"><span class="hljs-attribute">Device</span>: <span class="hljs-string">PrimeSense/SensorV2/5.1.0.41: The device is not connected!</span></code>
因而我重新做了1遍步驟4
<code class="hljs lasso has-numbering">$ cd /home/siat/software/Sensor<span class="hljs-attribute">-Bin</span><span class="hljs-attribute">-Linux</span><span class="hljs-attribute">-x64</span><span class="hljs-attribute">-v5</span><span class="hljs-number">.1</span><span class="hljs-number">.2</span><span class="hljs-number">.1</span>
$ sudo <span class="hljs-built_in">.</span>/install<span class="hljs-built_in">.</span>sh</code>
再次運行示例程序成功啟動Kinect
—⑵016.06.13
我嘗試用32位版本的驅動來啟動xtion,還是提示連不上裝備,當我重新編譯上面3個64位驅動運行NiViewr的時候出現以下提示:
<code class="hljs vbnet has-numbering">One <span class="hljs-keyword">or</span> more <span class="hljs-keyword">of</span> the following nodes could <span class="hljs-keyword">not</span> be enumerated:
Device: PrimeSense/SensorKinect/<span class="hljs-number">5.1</span><span class="hljs-number">.2</span><span class="hljs-number">.1</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Device: PrimeSense/SensorV2/<span class="hljs-number">5.1</span><span class="hljs-number">.0</span><span class="hljs-number">.41</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Device: PrimeSense/SensorKinect/<span class="hljs-number">5.1</span><span class="hljs-number">.2</span><span class="hljs-number">.1</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Device: PrimeSense/SensorV2/<span class="hljs-number">5.1</span><span class="hljs-number">.0</span><span class="hljs-number">.41</span>: The device <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> connected!
Press any <span class="hljs-keyword">key</span> <span class="hljs-keyword">to</span> <span class="hljs-keyword">continue</span> . . .</code>
我用./install.sh -u
卸載Openni和Sensor,用./uninstall.sh
卸載NITE,然后重新到原64位Sensor驅動下運行./install.sh
以后正常使用NiViewr開啟kinect。
2、注意openni2和NITE2版本的包現在只能用于xtion,kinect只能使用版本1的驅動
3、查看版本
<code class="hljs brainfuck has-numbering"><span class="hljs-comment">$</span> <span class="hljs-comment">pkg</span><span class="hljs-literal">-</span><span class="hljs-comment">config</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">modversion</span> <span class="hljs-comment">opencv</span></code>
會顯示版本號,比如
<code class="hljs has-numbering">2.4.11</code>
可以將opencv替換為其他包名字,用Tab鍵補全以免名字出錯
4、用apt-get方式安裝的1些包
kinect用的freenect:
<code class="hljs lasso has-numbering">$ sudo apt<span class="hljs-attribute">-get</span> install ros<span class="hljs-attribute">-indigo</span><span class="hljs-attribute">-freenect</span><span class="hljs-attribute">-launch</span>
$ sudo apt<span class="hljs-attribute">-get</span> install ros<span class="hljs-attribute">-indigo</span><span class="hljs-attribute">-freenect</span><span class="hljs-attribute">-camera</span>
$ sudo apt<span class="hljs-attribute">-get</span> install ros<span class="hljs-attribute">-indigo</span><span class="hljs-attribute">-freenect</span><span class="hljs-attribute">-stack</span></code>
xtion用的openni:
<code class="hljs lasso has-numbering">$ sudo apt<span class="hljs-attribute">-get</span> install ros<span class="hljs-attribute">-indigo</span><span class="hljs-attribute">-openni</span><span class="hljs-attribute">-camera</span>
$ sudo apt<span class="hljs-attribute">-get</span> install ros<span class="hljs-attribute">-indigo</span><span class="hljs-attribute">-openni</span><span class="hljs-attribute">-launch</span>
上面如果不行請使用下面的驅動
$ sudo apt<span class="hljs-attribute">-get</span> install ros<span class="hljs-attribute">-indigo</span><span class="hljs-attribute">-openni2</span><span class="hljs-attribute">-camera</span>
$ sudo apt<span class="hljs-attribute">-get</span> install ros<span class="hljs-attribute">-indigo</span><span class="hljs-attribute">-openni2</span><span class="hljs-attribute">-launch</span></code>
5、關于kinect和xtion切換的問題
openni默許的裝備是kinect,如果你用的是kinect,裝完上面的驅動以后運行NiViewer可以正常使用
但是如果你使用的裝備是xtion,直接運行NiViewer會出現以下報錯
<code class="hljs vbnet has-numbering">Open failed: USB <span class="hljs-keyword">interface</span> <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> supported!</code>
運行$ roslaunch openni_launch openni.launch
出現以下報錯
<code class="hljs oxygene has-numbering">[ INFO] [<span class="hljs-number">1464612941.306334563</span>]: Initializing nodelet <span class="hljs-keyword">with</span> <span class="hljs-number">4</span> worker threads.
[ INFO] [<span class="hljs-number">1464612947.664521213</span>]: Number devices connected: <span class="hljs-number">1</span>
[ INFO] [<span class="hljs-number">1464612947.666982470</span>]: <span class="hljs-number">1</span>. device <span class="hljs-keyword">on</span> bus <span class="hljs-number">002</span>:<span class="hljs-number">04</span> <span class="hljs-keyword">is</span> a SensorV2 (<span class="hljs-number">601</span>) <span class="hljs-keyword">from</span> PrimeSense (<span class="hljs-number">1</span>d27) <span class="hljs-keyword">with</span> serial id <span class="hljs-string">'1312120224'</span>
[ INFO] [<span class="hljs-number">1464612947.667906288</span>]: Searching <span class="hljs-keyword">for</span> device <span class="hljs-keyword">with</span> <span class="hljs-keyword">index</span> = <span class="hljs-number">1</span>
[ INFO] [<span class="hljs-number">1464612947.670034045</span>]: No <span class="hljs-keyword">matching</span> device found.... waiting <span class="hljs-keyword">for</span> devices. Reason: openni_wrapper::OpenNIDevice::OpenNIDevice(xn::Context&, <span class="hljs-keyword">const</span> xn::NodeInfo&, <span class="hljs-keyword">const</span> xn::NodeInfo&, <span class="hljs-keyword">const</span> xn::NodeInfo&, <span class="hljs-keyword">const</span> xn::NodeInfo&) @ /tmp/binarydeb/ros-indigo-openni-camera-<span class="hljs-number">1.9</span>.<span class="hljs-number">5</span>/src/openni_device.cpp @ <span class="hljs-number">61</span> : creating depth generator failed. Reason: USB <span class="hljs-keyword">interface</span> <span class="hljs-keyword">is</span> <span class="hljs-keyword">not</span> supported!</code><ul class="pre-numbering"><li><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">也是</span><code style="background-color: rgb(255, 255, 255);">USB interface is not supported!</code><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> 的問題 </span></li></ul>
解決方案以下:參考博客
修改GlobalDefaults.ini配置文件
<code class="hljs bash has-numbering">$ <span class="hljs-built_in">sudo</span> gedit /etc/openni/GlobalDefaults.ini </code>
將第60行前面的分號去掉(即取消注釋)
<code class="hljs fix has-numbering"><span class="hljs-attribute">;UsbInterface</span>=<span class="hljs-string">2</span></code>
再次嘗試運行openni.launch
或NiViewer
就能夠用xtion了,如果不行還需要重啟1下電腦
關于xtion博主還有1個1直很困擾的問題,在剛裝系統的電腦上安裝上面3個驅動使用xtion很正常,但是在使用了1段時間的電腦上裝這3個驅動卻1直提示the device is not connected!
,試了上面所有的方案都不行,估計是驅動沖突,我卸載了所有openni、nite相干的包重新安裝驅動也不行,最后只好無奈的使用微軟的Kinect才正常
6、Open failed: Xiron OS failed to wait on event!
運行以下命令:
<code class="hljs bash has-numbering">$ <span class="hljs-built_in">sudo</span> chmod +x /usr/bin/XnSensorServer</code>
7、博主重裝了32位ubuntu14.04,然后下載上面3個驅動對應的32位驅動,編譯以后可以驅動華碩的xtion pro live,值得注意的是有可能遇到以下問題
<code class="hljs vbnet has-numbering">Open failed: Failed <span class="hljs-keyword">to</span> <span class="hljs-keyword">set</span> USB <span class="hljs-keyword">interface</span>!</code>
這個問題跟前面的類似,需要改GlobalDefaults.ini 文件,但是32位驅動的這個配置文件不在/etc/openni/下了,搜索了1下文件夾找到這個文件原來是在/usr/etc/primesense/
<code class="hljs bash has-numbering">$ <span class="hljs-built_in">sudo</span> gedit /usr/etc/primesense/GlobalDefaults.ini </code>
將第60行前面的分號去掉(即取消注釋)
<code class="hljs fix has-numbering"><span class="hljs-attribute">;UsbInterface</span>=<span class="hljs-string">2</span></code>
再次嘗試運行openni.launch
或NiViewer
就能夠用xtion了,如果不行還需要重啟1下電腦
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈