Cartographer ROS安装使用
操作系统:ubuntu 20.04(f)
ros版本:noetic
参考文档:https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html#building-installation
1,首先装一些辅助工具:
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
2,初始化工作空间和安装cartographer、cartographer_ros,ceres-solver
mkdir cartographer_ros
cd cartographer_ros
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
如果在第四行报错,是因为是国外的网站,自己创建一个文件即可。
这里第四行的意图是把cartographer_ros.rosinstall中的内容追加到src目录下的rosinstall文件中,我们来手动操作,解决上面的问题。
(1)首先,在github上找到cartographer_ros.rosinstall文件,打开后内容如下:
- git: {local-name: cartographer, uri: 'https://github.com/cartographer-project/cartographer.git', version: 'master'}
- git: {local-name: cartographer_ros, uri: 'https://github.com/cartographer-project/cartographer_ros.git', version: 'master'}
- git: {local-name: ceres-solver, uri: 'https://github.com/ceres-solver/ceres-solver.git', version: 'master'}
我们手动的将cartographer_ros.rosinstall中的内容复制到src目录下的.rosinstall
文件中,默认此文件会被隐藏,可以勾选显示选项显示此文件:
(2)修改完成.rosinstall
完成后,执行第五行
3,安装依赖
注意:rosdep执行失败的话可惜私聊我解决,如果在搭建ros开发环境时已经成功执行过了rosdep初始化和update,这里也可以不再执行。
sudo rosdep init
rosdep update
rosdep install –from-paths src –ignore-src –rosdistro=${noetic} -y
在这一步遇到了这样一个报错:
ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies: cartographer: [libabsl-dev] defined as “not available” for OS version [focal]
这个报错的意思是我当前这个操作系统没有这样一个依赖,在:https://github.com/cartographer-project/cartographer_ros/issues/1726 上找到了解决方案:解决的博主说这个依赖三后面加的,所以其实可以不用这个依赖,在编译配置文件中删掉就可以了。所以就把cartographer_ws/src/cartographer文件夹中的package.xml 文件中的第46行<depend>libabsl-dev</depend>
删掉就完事儿了
删除后再执行:
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
报错解决
上述安装的依赖,安装了大部分,但是还是有一些需要单独安装:
src/cartographer/scripts/install_abseil.sh
在我们的ros中其实也有一个abseil库,为了编译过程中不造成混乱,就先把原来的库给删了
sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
执行过程中,遇到如下报错:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package ros-noetic-abseil-cpp
说没找到,那就不会造成混乱,那就不管了直接编译:
catkin_make_isolated --install --use-ninja
这样就完成了Cartographer的安装
安装完成之后文件应该是这个样子的,注意abseil-cpp文件是在下图和src一个目录下的
————————————————————————-
这里添加一个安装完成之后怎么进行测试
首先下载别人已经录制好的bag包:
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
第二步就是运行cartographer来创建地图:
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
如果看完还有什么不懂的,可以点赞+私聊呀,我看见就免费帮你解决。加油!