在ubuntu16.04下安装Kinect V2驱动
创建工作空间
由于我是将这个驱动安装在工作空间下的,因此首先就需要创建一个工作空间:
详细的可以去查找资料,这就把全部过程代码放上就是了
mkdir -p ~/catkin_ws/drive/src
cd catkin_ws/drive/src/
catkin_init_workspace
cd ..
catkin_make
sudo gedit ~/.bashrc
最后一行添加:source ~/catkin_ws/drive/devel/setup.bash
source ~/.bashrc
安装驱动
该部分是根据github上的资料整理得来,可以需要看完整版本的可以通过这个进入git去查看
以下是整理的在ubuntu16.04的环境下安装的指令
cd ~/catkin_ws/drive/src
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
sudo apt-get install libglfw3-dev
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install
若是想用第三方的程序来查找使用libfreenect2的话需要执行下列指令:
cmake -Dfreenect2_DIR=$HOME/freenect2/lib/cmake/freenect2
然后设置运行规则
sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
测试
连接好kinect,运行下列命令进行测试
sudo ./bin/Protonect
注意这条指令需要以超级用户的权限运行(官网没说,害得找问题找了半天),如果不以该方式运行,直接运行./bin/Protonect
指令,则会报错如下:
~/catkin_ws/drive/src/libfreenect2/build$ ./bin/Protonect
Version: 0.2.0
Environment variables: LOGFILE=<protonect.log>
Usage: ./bin/Protonect [-gpu=<id>] [gl | cl | clkde | cuda | cudakde | cpu] [<device serial>]
[-noviewer] [-norgb | -nodepth] [-help] [-version]
[-frames <number of frames to process>]
To pause and unpause: pkill -USR1 Protonect
[Info] [Freenect2Impl] enumerating devices...
[Info] [Freenect2Impl] 8 usb devices connected
[Error] [Freenect2Impl] failed to open Kinect v2: @3:3 LIBUSB_ERROR_ACCESS Access denied (insufficient permissions)
[Info] [Freenect2Impl] found 0 devices
no device connected!
但是每次都这么使用root权限启动,会很麻烦,而且在后面使用设备的时候会经常出错。
通过分析是由于ubuntu下,对于硬件设备的读取都需要root权限。因此可以考虑将该设备的USB口的权限赋予最大。实际实现过程如下:
首先进入之前操作过程中添加的设备启动规则文件中去:
cd /etc/udev/rules.d/
然后修改90-kinect2.rules
文件中的USB接口的权限(MODE)为最高权限0777,然后保存,重新插上USB接头就可以了。以后就不用使用root权限启动了。
测试结果:
安装与ROS的接口工具与库
该部分即安装iai-kinect2包,可以参考github上的readme。为的是使在ROS上方便使用,这是kinect2与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 -r --from-paths .
该代码的时候常常会出现以下报错
注意:该命令最后有个点 “ . ”。
~/catkin_ws/drive/src/iai_kinect2$ rosdep install -r --from-paths .
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
kinect2_viewer: Cannot locate rosdep definition for [kinect2_bridge]
iai_kinect2: Cannot locate rosdep definition for [kinect2_registration]
kinect2_calibration: Cannot locate rosdep definition for [kinect2_bridge]
kinect2_bridge: Cannot locate rosdep definition for [kinect2_registration]
Continuing to install resolvable dependencies...
#All required rosdeps installed successfully
只要把该命令更换为以下命令就可以了
rosdep install --from-paths ~/catkin_ws/drive/src/iai_kinect2 --ignore-src -r
最后运行下列指令就可以看到图像了:
roslaunch kinect2_bridge kinect2_bridge.launch
rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud