Google Cartographer 实时slam开源地图代码库的介绍、安装和使用

文/冷冬寒梅

(一)介绍

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地址不能成功下载,我们可以采用下面的地址进行下载

https://github.com/ceres-solver/ceres-solver

安装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的论文和代码,以后会陆续写文章,剖析论文中采用的算法和其对应的代码实现,对此有兴趣的可以后续进行关注和留意。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容