要想Kinect V2在ROS上運行。
需要libfreenect2 和 iai_kinect2兩個驅動
再用攝像頭前,要確保你安裝opencv ,我用的版本是opencv-3.4.3
安裝教程網上比較多,這里就不啰嗦了
一.首先安裝libfreenect2
1.安裝依賴
sudo apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev
sudo apt-get install libglfw3-dev sudo apt-get install libopenni2-dev sudo apt-get install libusb-dev
sudo apt-get install libturbojpeg0-dev
2.開始安裝
下載源碼
git clone https://github.com/OpenKinect/libfreenect2.git
安裝
cd libfreenect2
mkdir build
cd build
cmake ..
make
sudo make install
設定udev路徑
#設定udev rules:(填好自己libfreenect2的路徑)
sudo cp libfreenect2/platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
3.測試
#運行build目錄下的例子
./bin/Protonect
二.安裝iai_kinect2驅動
1,首先進入ROS的工作空間下載源碼
cd ~/catkin_ws/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2 rosdep install -r --from-paths .
在這一步rosdep install -r --from-paths .
會報錯
解決方法
rosdep install --from-paths ~/catkin_ws/src/iai_kinect2 --ignore-src -r
然后開始編譯
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release" #編譯 #如果沒有添加永久環境變量,則每次都需要source以下 source ~/catkin_ws/devel/setup.bash #添加ros永久環境變量 echo "source ~/catkin_ws/devel/setup.sh" >> ~/.bashrc
我在編譯時候出現了問題,如下
/home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp: In member function ‘void Kinect2Bridge::initCompression(int32_t, int32_t, bool)’:
/home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:465:28: error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope compressionParams[0] = CV_IMWRITE_JPEG_QUALITY; ^~~~~~~~~~~~~~~~~~~~~~~ /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:465:28: note: suggested alternative: ‘CV_WRITE_SEQ_ELEM’ compressionParams[0] = CV_IMWRITE_JPEG_QUALITY; ^~~~~~~~~~~~~~~~~~~~~~~ CV_WRITE_SEQ_ELEM /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:467:28: error: ‘CV_IMWRITE_PNG_COMPRESSION’ was not declared in this scope compressionParams[2] = CV_IMWRITE_PNG_COMPRESSION; ^~~~~~~~~~~~~~~~~~~~~~~~~~ /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:469:28: error: ‘CV_IMWRITE_PNG_STRATEGY’ was not declared in this scope compressionParams[4] = CV_IMWRITE_PNG_STRATEGY; ^~~~~~~~~~~~~~~~~~~~~~~ /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:470:28: error: ‘CV_IMWRITE_PNG_STRATEGY_RLE’ was not declared in this scope compressionParams[5] = CV_IMWRITE_PNG_STRATEGY_RLE; ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp: In member function ‘void Kinect2Bridge::initCompression(int32_t, int32_t, bool)’: /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:465:28: error: ‘CV_IMWRITE_JPEG_QUALITY’ was not declared in this scope compressionParams[0] = CV_IMWRITE_JPEG_QUALITY; ^~~~~~~~~~~~~~~~~~~~~~~ /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:465:28: note: suggested alternative: ‘CV_WRITE_SEQ_ELEM’ compressionParams[0] = CV_IMWRITE_JPEG_QUALITY; ^~~~~~~~~~~~~~~~~~~~~~~ CV_WRITE_SEQ_ELEM /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:467:28: error: ‘CV_IMWRITE_PNG_COMPRESSION’ was not declared in this scope compressionParams[2] = CV_IMWRITE_PNG_COMPRESSION; ^~~~~~~~~~~~~~~~~~~~~~~~~~ /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:469:28: error: ‘CV_IMWRITE_PNG_STRATEGY’ was not declared in this scope compressionParams[4] = CV_IMWRITE_PNG_STRATEGY; ^~~~~~~~~~~~~~~~~~~~~~~ /home/zztsj/catkin_ws/src/iai_kinect2/kinect2_bridge/src/kinect2_bridge.cpp:470:28: error: ‘CV_IMWRITE_PNG_STRATEGY_RLE’ was not declared in this scope compressionParams[5] = CV_IMWRITE_PNG_STRATEGY_RLE; ^~~~~~~~~~~~~~~~~~~~~~~~~~~
查閱資料好像是版本不對應的問題,用oopencv2可以成功,用opencv3的話需要指定安裝路徑,我的是默認安裝的,就出現了一系列沒有定義的問題
我的解決方法,沒有安裝過opencv3,而是改了一種定義方式
將CV_IMWRITE_JPEG_QUALITY;
改為cv::IMWRITE_JPEG_QUALITY;
剩下的改法相同,改完就編譯好了,
2.測試
roslaunch kinect2_bridge kinect2_bridge.launch #運行kinect2自帶的launch
rosrun kinect2_viewer kinect2_viewer #查看運行結果。
到此,驅動就安裝完成了。