我的OpenCV版本是4.2.0,在此基础上进行配置,并且已经安装过cuda_11.0.2(非必需)
第一步——安装所需依赖
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libturbojpeg0-dev
sudo apt-get install libglfw3-dev
第二步——安装libfreenect2
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install
第三步——测试上述安装
在/libfreenect2/build/bin下有两个可执行文件,在此处打开终端:
./Protonect
成功获得图像!
第四步——安装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"
第五步——错误解决(必出错误)
第一个错误:
/usr/include/pcl-1.10/pcl/point_types.h:525:1: error: 'minusscalar' is not a member of 'pcl::traits'
525 | POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::_PointWithViewpoint,
具体如图所示,一堆红色!
解决方法:找到报错的功能包修改对应的CMakelist.txt,我的图示里面为iai_kinect2/kinect2_viewer。
添加:
set(CMAKE_CXX_STANDARD 14)
第二个错误:
/home/lwc/catkin_ws/src/iai_kinect2/kinect2_calibration/src/kinect2_calibration.cpp:113:22: error: ‘CV_IMWRITE_PNG_COMPRESSION’ was not declared in this scope
113 | params.push_back(CV_IMWRITE_PNG_COMPRESSION);
具体如图所示:
解决方法:找到报错的cpp文件,将红色报错信息的CV_****修改为cv::****
第三个错误:
error: CV_BGR2GRAY was not declared in this scope
解决方法:找到对应的cpp文件,添加如下头文件:
#include <opencv2/imgproc/types_c.h>
第四个错误:
error: CV_AA was not declared in this scope
解决方法:找到对应的cpp文件,添加如下头文件:
#include<opencv2/imgproc/imgproc_c.h>
第六步——测试IAI Kinect2
cd ~/catkin_ws
source /devel/setup.bash
roslaunch kinect2_bridge kinect2_bridge.launch
再新开一个终端启动rviz查看图像:
rosrun rviz rviz
添加的图像主题以及订阅的话题如下图所示:
添加的点云主题以及订阅的话题如下图所示:
Global Options记得修改为相机坐标系:kinect2_rgb_optical_frame。