RGBD-SLAM V2的学习和测试
rgbd-slam一度被称为最稳定有效的SLAM系统;设计最初是利用SIFT特征进行特征的提取,比较耗时,现在随着ORB等二值化特征的广泛应用,已经可以摆脱GPU的加速,这篇博客我主要简单介绍一下如何在实时的场景进行三维重建、以及利用数据集进行测试算法的效果;
需要说明的是我的系统:Ubuntu 14.04+ROS indigo+华硕 Xtion pro live
预备的一些工具包:
opencv 2.4.13的安装(其他版本也可以)
可以根据网上的一些教程进行安装;
ros indigo的安装配置
一、下载安装rgbdslam
可以参考这里原作者提供的 使用说明
从头开始安装:(如果是ros其他的版本可以把indigo改成对应的版本)
    #Prepare Workspace
    source /opt/ros/indigo/setup.bash
    mkdir -p ~/rgbdslam_catkin_ws/src
    cd ~/rgbdslam_catkin_ws/src
    catkin_init_workspace
    cd ~/rgbdslam_catkin_ws/
    catkin_make
    source devel/setup.bash
    
    #Get RGBDSLAM
    cd ~/rgbdslam_catkin_ws/src
    wget -q http://github.com/felixendres/rgbdslam_v2/archive/indigo.zip
    unzip -q indigo.zip
    cd ~/rgbdslam_catkin_ws/
    
    #Install
    rosdep update
    rosdep install rgbdslam
    catkin_make
        如果一些都顺利,就接着往下进行(中间可能会有少许卡顿,没关系,等他编译完成就行了);
二、利用深度相机进行rgbdslam的测试;
首先:
    sudo apt-get install ros-indigo-openni-camera  
    sudo apt-get install ros-indigo-openni-launch
        然后更改几个变量(如果下载的rgbdslam的源码里面就改过了就不用管)
     1 修改 ~/rgbdslam_catkin_ws/src/rgbdslam_v2-indigo/CMakeLists.txt 
    将第5行的设置改成  set(USE_SIFT_GPU        0) 
    2 修改 launch文件。
    
    1  ~/rgbdslam_catkin_ws/src/rgbdslam_v2-indigo/launch/rgbdslam.launch文件中12、13行的value值设置为ORB。
    
    <param name="config/feature_detector_type" value="ORB"/>
    <param name="config/feature_extractor_type" value="ORB"/>
    
    2 ~/rgbdslam_catkin_ws/src/rgbdslam_v2-indigo/launch/openni+rgbdslam.launch,同样将该文件内的13、14行的value值设置为ORB。
        开始测试:
    roscore
        再打开一个终端,运行:
     roslaunch rgbdslam openni+rgbdslam.launch
        出现这个:

接着:在弹出的RGBDSLAM窗口中按“空格键”或“回车”开始;

这个过程中因为涉及到会调用usb的相机,可能会有一些小问题,我在第一次使用的过程中就遇到几个小问题:
1、显示无法进入端口被占用
原因是我翻墙的时候把host改了,后来恢复了一下就ok了;
2、还有就是:
$roslaunch openni_launch openni.launch的时候显示能识别到设备,但是出现“Reason: USB interface is not supported!”;后来我百度了下原因是没有设置USB接口。
执行$sudo gedit /etc/openni/GlobalDefaults.ini。
找到内容为“;UsbInterface=2”这一行,直接将这行更改为”UsbInterface=0“
三、在数据集上进行测试
1、下载数据集(ROS.bag格式的数据 ):
http://vision.in.tum.de/data/datasets/rgbd-dataset/download#freiburg1_xyz
然后将下载好的.bag文件存放到/home/pan/rgbdslam_catkin_ws/src/rgbdslam_v2-indigo/test里面,这是我存放的路径,也可以放在其他地方;
2、首先跟前面一样,需要更改一下:
CMakeLists.txt和launch里面rgbdslam.launch和openni+rgbdslam.launch里面的描述符;
另外要把openni+rgbdslam.launch中的
      <!--利用深度相机收集的图像进行测试  -->
    <param name="config/topic_image_mono"              value="/camera/rgb/image_color"/> 
    <param name="config/topic_image_depth"             value="/camera/depth_registered/sw_registered/image_rect_raw"/>
        改成数据集的路径(具体数据集的路径查看方法后面讲);
(大部分都是一样的,我的路径是)
    <param name="config/topic_image_mono"              value="/camera/rgb/image_color"/> 
    <param name="config/topic_image_depth"             value="/camera/depth/image "/>
        3、打开终端(先拔掉深度相机):
    roscore
        重新打开终端:
     rosbag play test/rgbd_dataset_freiburg1_xyz.bag(根据自己存放的数据集的名字)
        打开第三个终端:
    roslaunch rgbdslam rgbdslam.launch
        如果UI界面不能显示数据集,则返回上一个终端再次
    rosbag play test/rgbd_dataset_freiburg1_xyz.bag
        这时候就可以看到系统在工作了;

还有一个问题就是查看自己的数据集路径;
在新开的终端里面输入 rostopic info(然后双击TAB健)就能看到自己的数据集的路径;
