Kinect学习之KinectV2驱动在ubuntu14.04+ros上的安装

实验室买回了两台Kinect第二代,到手便在ubuntu上安装驱动,然而,,,,,由于各种对硬件的不熟悉,折腾了好久才把驱动装了起来,总结一下,留着日后参考,也希望别的初学者少走弯路。

一、系统环境:sys:ubuntu14.04 LTS ros:indigo 显卡:AMD Radeon R7 3xx系列

二、libfreenect2驱动安装 (https://github.com/OpenKinect/libfreenect2)
1、下载libfreenect2 驱动:

git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2 

2、下载升级deb文件

cd depends
./download_debs_trusty.sh

3、下载工具:

sudo apt-get install build-essential cmake pkg-config

安装libusb:(必须要安装,否则往下会出错)

sudo apt-add-repository ppa:floe/libusb
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev

4、安装TurboJPEG

sudo apt-get install libturbojpeg libjpeg-turbo8-dev

5、安装OpenGL:

sudo dpkg -i debs/libglfw3*deb; sudo apt-get install -f; sudo apt-get install libgl1-mesa-dri-lts-vivid freeglut3-dev libxrandr-dev libxi-dev

6、安装OpenCL(推荐安装,因为iai_kinect2默认用的opencl做registration,速度稳稳30Hz,CPU的话我试的是2-3Hz)
首先要安装好显卡驱动,最简单的 显卡安装方法是去系统设置->软件与更新->附加驱动选择最新的驱动(通常可选,选最新的版本,如果后面运行出错,就再选择其它的版本试试)
Kinect学习之KinectV2驱动在ubuntu14.04+ros上的安装_第1张图片
接着安装Opencl:

sudo apt-get install nvidia-modprobe opencl-headers ocl-icd-dev

7、安装openni2(可选)

sudo apt-add-repository ppa:deb-rob/ros-trusty && sudo apt-get update
 apt-get install libopenni2-dev
 sudo apt-get install openni2-utils && sudo make install-openni2 && NiViewer2

8、编译libfreenect2

cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
sudo make install

注:cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2指编译到home/freenect2目录下
9、获得设备udev权限

sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/

10、指定安装路径给第三方应用
在build文件夹下:

cmake ..-Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2

11、测试驱动是否安装好

sudo chmod +x ./bin/Protonect  
./bin/Protonect cpu
./bin/Protonect gl
./bin/Protonect cl


测试Openni2:
运行:

Niviewer2

分别测试用cpu opencl opengl进行图像处理,如果都成功采集并显示出图像,则驱动安装好了。
注意:运行之前一定要确保kinect连接上了USB3.0,可以输入lsusb,如果显示如下,则电脑连接上了kinect
Kinect学习之KinectV2驱动在ubuntu14.04+ros上的安装_第2张图片

三、Ros接口安装(iai_kinect2安装)
1、ROS下iai_kinect2安装

cd ~/catkin_ws/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2
rosdep install -r --from-paths .
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"

注:如果rosdep install出现如下问题:
Kinect学习之KinectV2驱动在ubuntu14.04+ros上的安装_第3张图片
这里作者说可以忽略,如果弹出要rosdep update,则选择网速较好的时候更新一下。

2、安装结束,把你的kinect for xbox one 连上usb3.0 测试一下

roslaunch kinect2_bridge kinect2_bridge.launch

你也可以选择深度图获取方式和registration方式:

rosrun kinect2_bridge kinect2_bridge _depth_method:=<opengl|opencl|cpu> _reg_method:=<cpu|opencl>

_depth_method选opencl(默认)或者opengl或者cpu,_reg_method可以选opencl(默认)或者cpu
注:这里默认是用opencl做registration,如果报错,这是opencl没有安装好。我开始的报错是初始化失败,显示一大堆的Packet buffer is Null,如图:
Kinect学习之KinectV2驱动在ubuntu14.04+ros上的安装_第4张图片
解决办法:重新安装显卡驱动,之后再按以上步骤安装opencl即可

3、再开一个终端,查看点云或者图像

rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud
rosrun kinect2_viewer kinect2_viewer kinect2 sd image


Kinect学习之KinectV2驱动在ubuntu14.04+ros上的安装_第5张图片
四、失败教训
我的问题是显卡驱动安装不成功,最简单的方法是在软件和更新处选择附加驱动然后暗战,然而我的AMD独显在那里安装显卡驱动失败了,导致在运行roslaunch kinect2_bridge kinect2_bridge.launch时总是初始化失败,折腾了很久依然没办法在软件更新处成功安装AMD显卡驱动,最后没办法,只有在AMD官网下载驱动并安装,一下是我安装显卡驱动的教程:
在AMD官网上下载4个deb包(一定要对照自己显卡的型号来下载),分别是:
fglrx-core_14.501-0ubuntu1_amd64_UB_14.01.deb
fglrx_14.501-0ubuntu1_amd64_UB_14.01.deb
fglrx-amdcccle_14.501-0ubuntu1_amd64_UB_14.01.deb
fglrx-dev_14.501-0ubuntu1_amd64_UB_14.01.deb
接着正式安装:
1、先卸载先前版本(重要):

sudo sh /usr/share/ati/fglrx-uninstall.sh
sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*

卸载完之后重启系统:sudo reboot
2、先安装core:

sudo dpkg -i fglrx-core_14.501-0ubuntu1_amd64_UB_14.01.deb

注意:可能会提示缺少依赖,此时可以输入apt-get -f install来自动安装依赖 ,接着再安装core
3、再安装

sudo dpkg -i fglrx_14.501-0ubuntu1_amd64_UB_14.01.deb

4、安装ccc

sudo dpkg -i fglrx-amdcccle_14.501-0ubuntu1_amd64_UB_14.01.deb

5、最后安装dev

sudo dpkg -i fglrx-dev_14.501-0ubuntu1_amd64_UB_14.01.deb

以上均成功安装之后,则可以测试一下驱动是否已经成功安装:
输入fglrxinfo,如果安装成功则会显示显卡型号,输入fgl_glxgears则会跳出一个旋转方块(测试帧率)

至此,AMD显卡的官方驱动顺利安装成功,以上不能用opencl而导致的初始化失败问题就可以解决了。

你可能感兴趣的:(kinect学习)