实验室买回了两台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)
首先要安装好显卡驱动,最简单的 显卡安装方法是去系统设置->软件与更新->附加驱动选择最新的驱动(通常可选,选最新的版本,如果后面运行出错,就再选择其它的版本试试),
接着安装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:
三、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出现如下问题:
这里作者说可以忽略,如果弹出要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,如图:
解决办法:重新安装显卡驱动,之后再按以上步骤安装opencl即可
3、再开一个终端,查看点云或者图像
rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud
rosrun kinect2_viewer kinect2_viewer kinect2 sd image
四、失败教训
我的问题是显卡驱动安装不成功,最简单的方法是在软件和更新处选择附加驱动然后暗战,然而我的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而导致的初始化失败问题就可以解决了。