文/冷冬寒梅
(一)介绍
Google Cartographer利用同步定位与建图技术绘制室内建筑平面图,可以用于二维和三维空间的建图,可以在非ros(机器人操作系统)系统和ros系统中使用。根据google的说明,该技术易于部署机器人、无人驾驶、无人机等系统。
Google在官方声明中提到,Cartographer的SLAM算法结合了来自多个传感器的数据,比如LiDAR激光雷达传感器、IMU惯性测量单元,还有来自多个摄像头的数据。综合这些庞杂的数据,得以计算传感器及传感器周围的环境。据报道Cartographer现已经支持Toyota HSR、TurtleBots、PR2、RevoLDS这几个机器人平台。
(二)安装
官方提供的安装步骤,在中国大陆地区实施起来有些问题,我通过亲身实践,纠正了一些问题,提供了一个切实可行的安装步骤。
我所用的环境:ubuntu14.04(Trusty)
ROS Indigo
step1、安装依赖
sudo apt-get update
sudo apt-get install -y \
cmake \
g++ \
git \
google-mock \
libboost-all-dev \
libeigen3-dev \
libgflags-dev \
libgoogle-glog-dev \
liblua5.2-dev \
libprotobuf-dev \
libsuitesparse-dev \
libwebp-dev \
ninja-build \
protobuf-compiler \
python-sphinx
step2安装优化包ceres-solver
在官网https://google-cartographer.readthedocs.io/en/latest/中提供的gitclone地址不能成功下载,我们可以采用下面的地址进行下载
安装ceres-solver的步骤如下:
git clone https://github.com/ceres-solver/ceres-solver
cd ceres-solver
mkdir build
cd build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install
step3、安装cartographer
git clone https://github.com/googlecartographer/cartographer
cd cartographer
mkdir build
cd build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install
step4、安装cartographer_ros
1)首先安装wstool和rosdep工具
sudo apt-get update
sudo apt-getinstall -y python-wstool python-rosdep ninja-build
2)然后建立一个新的workspace
mkdir slam_ws
cd slam_ws
wstool init src
3)安装cartographer_ros.rosinstall文件,更新
wstool merge -t srchttps://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
4)安装deb依赖Installdeb dependencies.
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
5)安装和设置路径
catkin_make_isolated --install –use-ninja
(此处需要时间比较长,要耐心等待,我在运行时候,以为此处进行不下去了,结果等的时间长些,运行成功)
source install_isolated/setup.bash 此语句设置路径
到此安装成功
(三)测试此slam算法的有效性
step1、首先下载数据集
下载几种数据集包,费时较长
1)Downloadthe 2D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
2)Downloadthe 3D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/cartographer_3d_deutsches_museum.bag
3)Download the Revo LDS example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/revo_lds/cartographer_paper_revo_lds.bag
4)Download the PR2 example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/pr2/2011-09-15-08-32-46.bag
step2、启动相应的launch文件,对不同的测试集进行slam建图
launch文件位于slam_ws/src/cartographer_ros/cartographer_ros/launch
2D backpack的bag文件位于
/home/dmchen/slam_ws/src/cartographer_ros/cartographer_ros/bag文件夹中
1)启动2D backpack的Launchdemo文件
cd slam_ws
source
install_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/dmchen/slam_ws/src/cartographer_ros/cartographer_ros/bag/cartographer_paper_deutsches_museum.bag
2)启动3D backpack Launch demo文件.
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag
3)启动Revo LDS Launch demo文件
roslaunch cartographer_ros demo_revo_lds.launch bag_filename:=${HOME}/Downloads/cartographer_paper_revo_lds.bag
4)启动PR2 Launch demo文件
roslaunch cartographer_ros demo_pr2.launch bag_filename:=${HOME}/Downloads/2011-09-15-08-32-46.bag
(四)结果
slam建图时间非常长,耗费资源情况如下:cpu的占用率是268.5%,有时候高达340%
deutsches_museum2d数据集
我的电脑的配置,其实已经很高了(哭脸)
RevoLDS数据集
运行效果很棒
(五)总结
googel提供的测试集,其中博物馆的数据集大约128.3m*270米,闭环运行效果非常差,RevoLDS数据集大约32.1m*35.7m,运行效果很棒。
另外,我在我自己的机器人和环境中进行了测试,测试区域大约是43.4m×41.25m的样子,效果也不错。
备注:上面的分析是10月份我做的测试(原谅我是重度懒癌患者,现在才整理以前的结果),当时对deutsches_museum2d数据集测试效果很差。期间看到google对代码进行了更新,用最新的代码进行测试,效果要好很多。
在过去的一段时间内,我一直在研究googel slam的论文和代码,以后会陆续写文章,剖析论文中采用的算法和其对应的代码实现,对此有兴趣的可以后续进行关注和留意。