Rtabmap简介
rtabmap是一种基于全局贝叶斯的闭环检测的RGBD-SLAM方法,其主要思想就是:假设更频繁的被访问的定位点比其他的定位点更容易形成闭环。一个定位点被连续访问的次数就可以用来衡量其易于形成闭环的权重。当需要从WM转移定位点到LTM时,优先选择具有低权重的定位点。
硬件:利用kinect的深度数据用来定位,用kinect转换成激光数据进行构图。订阅odom主题。
官方安装教程:https://github.com/introlab/rtabmap_ros
源码安装
环境:ubuntu1404 indigo
加入之前安装过二进制版本的rtabmap,需要从系统中移除
sudo apt-get remove ros-kinetic-rtabmap ros-kinetic-rtabmap-ros
下载源码直接编译
$ cd ~
$ git clone https://github.com/introlab/rtabmap.git rtabmap
$ cd rtabmap/build
$ cmake .. [<---double dots included]
$ make
$ sudo make install
可选依赖性安装
sudo apt-get install libsqlite3-dev libpcl-1.7-all libfreenect-dev libopencv-dev
(1)安装opencv
- rtabmap默认使用的GFTT角点检测,如果想使用surf, sift特征,需要重先编译opencv,建议使用opencv2.11。
(2) 安装g2o
g2o是一个通用的图优化,可以参考高博的教程http://www.cnblogs.com/gaoxiang12/p/5304272.html
$ git clone https://github.com/RainerKuemmerle/g2o.git
$ cd g2o
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
(3) 安装GTSAM
$ git clone https://bitbucket.org/gtborg/gtsam.git
$ cd gtsam
$ mkdir build
$ cd build
$ cmake ..
$ make check
$ make install
(4) 安装cvsba
下载cvsba:https://sourceforge.net/projects/cvsba/files/
cvsba is an OpenCV wrapper for the well-known Sparse Bundle Adjustment library (sba) by M. Lourakis.
sudo apt-get install liblapack-dev libf2c2-dev
tar -zxvf cvsba-1.0.0.tgz
mkdir cvsba-1.0.0.tgz/build
cd cvsba-1.0.0.tgz/build
cmake ..
make
make install
为了让rtabmap能够找到它,还需要执行下面的步骤:
$ mkdir /usr/local/lib/cmake/cvsba
$ mv /usr/local/lib/cmake/Findcvsba.cmake /usr/local/lib/cmake/cvsba/cvsbaConfig.cmake
(5)安装rtabmap ros版本
$ cd ~/catkin_ws
$ git clone https://github.com/introlab/rtabmap_ros.git src/rtabmap_ros
$ catkin_make
(6)运行rtabmap
设备:使用华硕的asus xtion。
启动xtion摄像头的驱动。
roslaunch openni2_launch openni2.launch
打开另外一个终端,运行下面命令:
roslaunch rtabmap_ros rtabmap.launch
结果如下: