首先说明,这篇文章于2019年12月写下,cartographer现在还在不断更新,也许这篇文档内容会失效,但是大体是一样的安装流程。
一、硬件条件
使用平台
- - x86_64平台
ROS发行版
- - Indigo
- - Kinetic
- - Lunar
- - Melodic
二、编译安装
1. 先安装一些必要的安装工具:python-wstool、python-rosdep和ninja;
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
2. 创建一个cartographer_ros的工作空间,命名为"catkin_ws",并初始化
mkdir catkin_ws
cd catkin_ws
wstool init src
# 这里先增加一个.rosinstall文件,内容如下一段
wstool merge -t src/.rosinstall
wstool update -t src
- 这里得提一下, 个别地区没方法访问googlesource.com,即谷歌的文档,上面第四句执行之前,增加 .rosinstall 文件到src目录:
- git: {local-name: cartographer, uri: ' https:// github.com/googlecartog rapher/cartographer.git ', version: '1.0.0'}
- git: {local-name: cartographer_ros, uri: ' https:// github.com/googlecartog rapher/cartographer_ros.git ', version: '1.0.0'}
- git: {local-name: ceres-solver, uri: ' https:// github.com/ceres-solver /ceres-solver.git ', version: '1.13.0'}
3. 安装cartographer_ros的依赖项(proto3和deb软件包)。如果自安装ROS以来已经执行过初始化rosdep的命令,则命令'sudo rosdep init'将显示错误,该错误可以忽略。
# 脚本内容是配置了一些环境变量,然后用git下载proto3(肯定比较慢,可以手动下载),如果手动下载了proto3,里面需要改内容,内容在下一段。
src/cartographer/scripts/install_proto3.sh
# 这句初始化rosdep,一般正常安装ros都执行过,可以不用管。
sudo rosdep init
# 下面这两句,是常用来一键安装该工作空间下所有依赖包的,务必熟练使用
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
- !注意如果手动下载了3.4.1版本的proto3,建议还是用install_proto3.sh安装,不过需要修改内容为:
# 只是注释掉了git下载和切换的内容。
set -o errexit
set -o verbose
# VERSION="v3.4.1"
# Build and install proto3.
# git clone https://github.com/google/protobuf.git
cd protobuf
# git checkout tags/${VERSION}
mkdir build
cd build
cmake -G Ninja
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_BUILD_TYPE=Release
-Dprotobuf_BUILD_TESTS=OFF
../cmake
ninja
sudo ninja install
4. 构建并安装。
# 用ninja工具进行catkin的编译
catkin_make_isolated --install --use-ninja
注意:
- - 到这里,执行完上面的步骤,没报错的话就安装成功了。
- - 有些萌新因为git的配置问题报错下载失败,就按照报错提示百度一下解决;不想折腾git的话,也可以直接打开.rosinstall的那三个源码链接,下载对应版本的源码(version标注的内容)。
三、跑数据集安装测试
1. 测试数据集
- 现在已经安装了Cartographer和Cartographer的ROS集成,可以下载封装成bag包形式的数据集。这里提供了德国博物馆的数据集。这个数据集是人类背着激光雷达录制的,效果也是不错。
- 首先,下载数据集,然后运行demo,会自动打开rviz。
# 这句命令把数据集下载到了Downloads文件夹,如果没有wget工具,可以自己安装
wget -P ~/Downloads https:// storage.googleapis.com/ cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
# 这句用roslaunch启动了放在对应目录的数据集
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
- 如果下载bag速度慢的话,可以用迅雷下载第一句命令的地址,即https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag,然后放在对应的文件夹;
- 另外如果不想手动输入bag文件名,直接把文件拖动到终端命令行界面有惊喜。
随便找了张图:
![b1daefa775c88901a5fce02968653c56.png](https://i-blog.csdnimg.cn/blog_migrate/a4f81bcaf0b4fe3cd7bd5df189d94f64.jpeg)
2. 其他bag数据集
- MIT提供的公共数据集(2D、3D):https://www.ncnynl.com/archives/201810/2783.html
参考文献:
1. 官方手册 https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html](https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html