一、背景
最近在调试四轮差速底盘小车的自主探索建图,一调研发现目前开源的2D建图包有Gmapping、Hector和Cartographer等。Gmapping比较容易部署,安装过程基本没有遇到什么阻碍。但是,俗话说最容易得到的,大多数都不是最后的选择。Gmapping虽然融合了2D激光、里程计等信息,但无奈他有个致命缺点——没有闭环优化,这就意味着建图过程极其依赖scan match,如果地形空旷或是旋转之后特征不明显,地图就会漂移,导致建图失败。而Hector建图只依靠激光雷达数据,这对于小车来说太不鲁棒了,实际测试之后也发现,Hector建图是最容易花的。最后,目光聚焦在谷歌出品的cartographer上了。从介绍上来看,cartographer确实是三者中最亮眼的一个,他支持激光雷达、IMU以及里程计的多传感器输入,而且还做了各种性能上的优化,更适合边缘设备的实时SLAM,最棒的是他还做了闭环优化,这样一看,cartographer确实是短板最少的一个建图工具了。话不多说,直接开盘!
二、干货
由于cartographer是谷歌发布的东西,所以我毫不犹豫先对工控机进行了科学上网,这是经验之谈,如果头铁的朋友,也可以用国内的网试一试,应该会比较坎坷。
主要参照下面的官网教程进行部署,但有一些区别,各位可以照着我的步骤来。
Compiling Cartographer ROS — Cartographer ROS documentationhttps://google-cartographer-ros.readthedocs.io/en/latest/compilation.html1、源码安装Glog
为什么不用 sudo apt-get install libgoogle-glog-dev ,因为我电脑上用apt装glog的话,后面编译ceres库的时候会报错,找不到链接库,所以我只能手动编译安装,并且如果电脑上用apt装过glog的话,必须要先apt remove掉
首先进入 glog 源码地址
https://github.com/google/gloghttps://github.com/google/glog找到 0.5.0版本
下载下来后解压,进行编译安装
sudo apt-get install autoconf automake libtool
cd glog
mkdir build
cd build
cmake ..
make
sudo make install
2、安装几个依赖库
sudo apt-get update
sudo apt-get install -y clang google-mock libboost-all-dev libcairo2-dev libcurl4-openssl-dev libgflags-dev liblua5.2-dev libsuitesparse-dev lsb-release ninja-build stow
3、源码安装 ceres-solver 1.13.0
git clone https://github.com/ceres-solver/ceres-solver
cd ceres-solver
git checkout tags/1.13.0
mkdir build
cd build
cmake .. -G Ninja -DCXX11=ON
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install
4、接下来的步骤只在打开了科学上网环境后,方能保证生效
sudo apt-get install -y python-wstool python-rosdep
mkdir carto_ws
cd carto_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
gedit src/cartographer/package.xml
``` 注释以下内容 ```
``` 保存退出 ```
sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
cd src/cartographer/scripts/
chmod +x install_abseil.sh
./install_abseil.sh
cd ~/carto_ws
catkin_make_isolated --install --use-ninja
5、接下来就是使用官方的数据集进行测试(需要bag的可以私信我)
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
三、写在后面
如果实在没有科学上网环境的话,也可以参考这位博主的流程,应该也是可以成功的
Ubantu18.04安装cartographer –>踩坑历程_风穗子的博客-CSDN博客
后面我会再码一篇博客,具体就是讲述如何将cartographer用在自己的小车底盘上,实现自主建图