机器人·学ROS机器人操作系统智能机器人

Google Cartographer 实时slam开源地图代码

2016-11-18  本文已影响7360人  冷冬寒梅

文/冷冬寒梅

(一)介绍

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

上一篇 下一篇

猜你喜欢

热点阅读