系统版本: Ubuntu16.04 + ROS-Kinect
首先rgbdslamv2 是2014年开源出来的一个机遇RGBD相机构建点云地图的框架【1】,作者已经在github上开源出了代码【2】,并且给出了一个一键安装的脚本(install.sh)。但是我们会发现,我们直接运行这个install脚本会在~/Code目录下创建一个rgbdslam_catkin_ws 工作空间,然后我们按照传统的catkin_make命令进行编译会发现代码直接编译通过,,不会提示任何错误信息,但是在使用命令
roslaunch rgbdslam rgbdslam.launch
启动rgbdslam节点的时候会提示你 “required process[rgbdslam-2] has died” 这样的问题。在博客【3】中作者也给出了一个解决的方法,但是其中有些操作是不需要的,本质上来讲主要是作者使用的g2o和PCL版本的问题,我们只需要把ROS中自动安装的g2o版本卸载掉,然后安装作者提供的 g2o和PCL(1.8.0)版本即可。
1.安装依赖项
sudo apt-get install libsuitesparse-dev libeigen3-dev
2.删除之前安装的g2o (保证g2o完全删除)
sudo apt-get purge ros-kinetic-libg2o libqglviewer-dev
sudo rm -rf /usr/local/include/g2o
sudo rm -rf /usr/local/lib/libg2o_*
3.下载作者使用的g2o:
git clone https://github.com/felixendres/g2o.git
mkdir build
cd build
cmake ..
make
sudo make install
4.下载安装PCL1.8
cd ~/Code/
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz
按照博客【3】的说明:修改PCL1.8 中的 cmakelist.txt,在其第146行加入并保存 “SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")”
随后开始编译安装点云库
cd pcl-pcl-1.8.0
mkdir build
cd build
cmake ..
make VERBOSE=1
sudo make install
5. 根据博客【3】的说明,修改rgbdslam_v2包下的CMakeList.txt文件,
安装了作者使用的g2o和PCL1.8版本的点云库以后,删除掉 rgbdslam_catkin_ws 目录下的 devel 目录和 build目录 重新编译这个ROS工作空间就可以正常运行rgbdslamv2
roslaunch rgbdslam rgbdslam.launch
随后我们修改包中的rgbdslam.launch文件,将算法接收的topic改为以下值。并启动rgbdslam节点
新开一个终端,播放TUM RGBD的数据集【5】中任意一个包就可以运行建图程序了
rosbag play rgbd_dataset_freiburg1_xyz.bag
效果如下:
我自己修改注释后的代码放在了这个地址【4】
rgbdslam结合了QT界面,使得保存地图,轨迹和octomap的操作界面化了,因此我想深入挖掘以下其中的代码框架,从作者的论文【1】来看,rgbdslam的算法并不复杂,该算法主要分为4个部分:
作者将前三个步骤作为前端,第四部分作为后端。作者在后端优化中只优化了相机的位姿,没有像ORB-SLAM那样同时优化3D点的位置和相机位姿,这可能是rgbdslam建图不准确的原因之一。因为深度相机在物体边缘处的深度值通常有很大的跳变,因此我们不能完全相信特征点的 值,尤其是边缘处的特征点的深度。 这个现象在高博的论文中也提到过,所以高翔博士使用了平面特征和边缘特征对特征进行了分类。
这里我们先简要的分析了算法的流程和功能模块,接下来我们将深入阅读作者的代码,分析代码的逻辑结构。
(未完待续)
【1】"3D Mapping with an RGB-D Camera", F. Endres, J. Hess, J. Sturm, D. Cremers, W. Burgard, IEEE Transactions on Robotics, 2014.
【2】代码链接:https://github.com/felixendres/rgbdslam_v2
【3】 https://blog.csdn.net/zhuoyueljl/article/details/78536996?reload
【4】修改后的代码:https://gitee.com/cenruping/rgbdslam-v2
【5】TUM数据集 http://vision.in.tum.de/data/datasets/rgbd-dataset
【6】rgbdslam分析:https://www.cnblogs.com/voyagee/p/7027076.html