目录
设备:安装ubuntu18的电脑并配置好ros环境、XBOX kinect2相机
相机与电脑连接方式,其中相机的USB接口必须连接电脑的usb3.0接口(注:usb3.0接口特点为颜色是蓝色或者接口处有ss的标志)
一、创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
二、安装libfreenect2驱动
官方地址:GitHub - OpenKinect/libfreenect2: Open source drivers for the Kinect for Windows v2 device
2.1 下载官方文件
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
下载后的文件所在位置如图所示:
2.2 安装build工具
sudo apt-get install build-essential cmake pkg-config
2.3 安装libusb
sudo apt-get install libusb-1.0-0-dev
2.4 安装urboJPEG
sudo apt-get install libturbojpeg0-dev
2.5 安装OpenGl
sudo apt-get install libglfw3-dev
2.6 安装OpenCl
sudo apt-get install beignet-dev
2.7 安装OpenNI
sudo apt-get install libopenni2-dev
2.8 进入libfreenect2文件夹,编译安装
cd libfreenect2
mkdir build && cd build
cmake .. -DENABLE_CXX11=ON -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
/*后续要安装iai_kinect2,需要对上面一行进行修改
将cmake .. 修改为 cmake .. -DENABLE_CXX11=ON*/
make
make install
cmake命令参数说明: 第一个参数是增加C++11的支持。第二个参数, 是特别指定安装的位置, 你也可以指定你想安装的地方, 但一般标准的路径是上述示例路径或者/usr/local
。
2.9 设定udev rules
sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
运行完上述命令后,此时给相机断电,并拔插USB接口,然后重新上电。
2.10 测试
运行demo
./bin/Protonect
不出意外,能看到如下结果
三、安装iai_kinect2
官方地址:GitHub - code-iai/iai_kinect2: Tools for using the Kinect One (Kinect v2) in ROS
3.1 下载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"
针对于上述命令中最后一行指令, 需要说明的是, 如果前面libfreenect2你安装的位置不是标准的两个路径下, 需要提供参数指定libfreenect2所在路径:
catkin_make -Dfreenect2_DIR=path_to_freenect2/lib/cmake/freenect2 -DCMAKE_BUILD_TYPE="Release"
注:运行rosdep install -r --from-paths .可能报错,如下图:
我的解决方法时运行下方提示的命令,如果不行,可以参考网上其他的解决方法
sudo rosdep init
rosdep update
3.2 相机上电,测试
开启一个新的终端,运行以下命令:
cd ~/catkin_ws
source devel/setup.bash
roslaunch kinect2_bridge kinect2_bridge.launch
如果电脑没有GPU(核显),则会报错< [Kinect2Bridge::start] Initialization failed! >,如下图:
需要修改文件kinect2_bridge.launch,修改内容如下:
(1)
<arg name="depth_method" default="default"/>
修改为:
<arg name="depth_method" default="opengl"/>
(2)
<arg name="reg_method" default="default"/>
修改为:
<arg name="reg_method" default="cpu"/>
如果成功运行,则终端显示内容如下:
终端输入rostopic list,可以看到大量话题:
/kinect2/bond
/kinect2/hd/camera_info
/kinect2/hd/image_color
/kinect2/hd/image_color/compressed
/kinect2/hd/image_color_rect
/kinect2/hd/image_color_rect/compressed
/kinect2/hd/image_depth_rect
/kinect2/hd/image_depth_rect/compressed
/kinect2/hd/image_mono
/kinect2/hd/image_mono/compressed
/kinect2/hd/image_mono_rect
/kinect2/hd/image_mono_rect/compressed
/kinect2/hd/points
/kinect2/qhd/camera_info
/kinect2/qhd/image_color
/kinect2/qhd/image_color/compressed
/kinect2/qhd/image_color_rect
/kinect2/qhd/image_color_rect/compressed
/kinect2/qhd/image_depth_rect
/kinect2/qhd/image_depth_rect/compressed
/kinect2/qhd/image_mono
/kinect2/qhd/image_mono/compressed
/kinect2/qhd/image_mono_rect
/kinect2/qhd/image_mono_rect/compressed
/kinect2/qhd/points
/kinect2/sd/camera_info
/kinect2/sd/image_color_rect
/kinect2/sd/image_color_rect/compressed
/kinect2/sd/image_depth
/kinect2/sd/image_depth/compressed
/kinect2/sd/image_depth_rect
/kinect2/sd/image_depth_rect/compressed
/kinect2/sd/image_ir
/kinect2/sd/image_ir/compressed
/kinect2/sd/image_ir_rect
/kinect2/sd/image_ir_rect/compressed
/kinect2/sd/points
此时再打开一个新的终端,运行以下命令:
cd ~/catkin_ws
source devel/setup.bash
rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud
显示点云相机窗口,则代表启动成功!!!
上面的"cloud"就是我们想看的内容,当然我们也可以订阅其他内容,总共有这些内容可供订阅:
image (RGB图像);
cloud (点云);
both (同时显示以上两者)。
同时,配合这些内容,我们还有四种查看模式,这些模式涉及我们要查看的内容的分辨率:
qhd (1/4高清:960×540);
hd (全高清:1920×1080);
sd (标清:< 720p);
ir(红外)。
注:可以通过运行rosrun kinect2_viewer kinect2_viewer kinect2 --help查看其他启动选项
显示内容如下: