ubuntu20.04 Cartographer ROS小白简单安装使用

  • Post author:
  • Post category:其他

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

如果看完还有什么不懂的,可以点赞+私聊呀,我看见就免费帮你解决。加油!


版权声明:本文为qq_44850383原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。