zoukankan      html  css  js  c++  java
  • ROS-melodic安装Kinect V2步骤和测试及问题解决

    要想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              #查看运行结果。

    到此,驱动就安装完成了。 

  • 相关阅读:
    ResultSet取结果集多少条记录方法及分页概要
    java ResultSet 结果集处理 createStatement() 里参数的意义(第一弹)
    提高mysql千万级数据SQL的查询优化30条总结
    WEBGL学习【十三】鼠标点击立方体改变颜色的原理与实现
    WEBGL学习【十二】鼠标操作场景
    WEBGL学习【十一】光照模型
    WEBGL学习【十】运动模型
    WEBGL学习【九】立方体贴不同的纹理
    WEBGL学习【八】模型视图投影矩阵
    WEBGL学习【七】画布绘图
  • 原文地址:https://www.cnblogs.com/tanshengjiang/p/13967940.html
Copyright © 2011-2022 走看看