Ubuntu18.04+cartographer安装(2024.9.7 亲测成功)

前言

说实话,去年这个时候为了在Ubuntu上跑carto真的费了我很多时间,大部分原因是因为网络原因。恩...就是获取外国资源纯靠运气,所以编译源码什么的时候失败率很高。但是!!!今年的我终于知道怎么获取外国资源了www,具体的可以看前面的文章!

话不多说,就开始记录怎么完成这个东西的吧!!随便把demo2D的图一边建起来...

cartographer安装

当然还是要依靠网络的力量,我直接把参考的文章贴在这里了:

这个是全面一点的

这个也不错

我是按照第一个博客的方法来的,其中一些方法对于网络不好的同学来说十分友好,当然要注意的一点是---ROS版本是melodic

当然在安装过程中也出现一点小问题,后面发现是跳步了...下载的时候也不能分心阿

安装相关依赖包

点击查看代码
sudo apt-get update
 
sudo apt-get install -y 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  ros-melodic-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
 
sudo apt-get install -y python-wstool python-rosdep ninja-build stow

安装cartographer、cartographer_ros和ceres-solver

初始化工作空间

点击查看代码
mkdir catkin_google_ws
cd catkin_google_ws
wstool init src

从原作者的gitee上下载安装cartographer和cartographer_ros

点击查看代码
cd src
git clone https://gitee.com/liu_xiao_eu/cartographer.git
git clone https://gitee.com/liu_xiao_eu/cartographer_ros.git

在上述建好的src文件夹下,获取ceres-solver源码

!!!这里要注意的一点是,ceres的版本一定要是1.13.0,这样才可以对应melodic的环境

点击查看代码
wget ceres-solver.org/ceres-solver-1.13.0.tar.gz //解压后进入
cd ceres-solver-1.13.0
mkdir build
cd build
cmake  ..
make

然后测试是否通过,并下载

点击查看代码
make test
sudo make install

安装 cartographer_ros 的依赖【这部分由于我之前已经安装好了ros,确定rosdep update执行没问题,直接跳入第六步】

点击查看代码
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

安装 abseil-cpp library

点击查看代码
src/cartographer/scripts/install_abseil.sh

同样的,作者也指出了可以快速下载的方法,未验证,贴图如下:

后续来了:个人亲测gitclone方法也不太好用,目前未发现是上面网址的问题还是下面的;不过最好建议还是用小梯子去下载,一劳永逸~

编译Cartographer

点击查看代码
catkin_make_isolated --install --use-ninja

这个时候编译成功就可以使用测试了!!!如果编译不成功,可以删掉build_isolated和devel_isolated,或者全部删掉从头开始试试

遇到的问题--Cmake版本

整体来看我的安装还是很顺利的,就是编译的时候显示cmake的版本不匹配,这还不简单,升级就好了!!我借鉴的是这篇文章:Cmake升级

我的版本原本是3.10好像,要求的是升级到3.16以上,但是注意!!!

不要删除原本的cmake!!!会导致ROS也被删除!!!!

我没有踩坑,还好多看了一下...按照他的教程方法来就可以了

测试

下载数据集

使用官方的2D数据集进行测试wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag ,但是经测试,官方网站的数据已经不能下载了。

官方2D数据集

官方网站

我从别人那里保存了2D的数据集,经测试是可以用的,但是3D的没下载,太大了hhh:
国内2D数据集
提取码: cynb

建图

carto工作目录下输入命令:

点击查看代码
source install_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

这里有一个特别容易出错的点:我就在这里错了好几次!!!!首先是${HOME}要自己改成 /home !!!!第二个就是要看清楚,home前面有个斜杠 / ,这一点很容易漏掉,我在这里错的次数可多了,而且找不到bug,后面一换问题就解决了...

保存地图

这里要记住一点就是:在打开每一个终端之后,第一个要做的就是刷新环境变量source install_isolated/setup.bash,我还没搞清楚是为什么,等后面弄清楚再来更新。

打开一个终端之后先刷新环境变量source install_isolated/setup.bash!!!

打开一个终端之后先刷新环境变量source install_isolated/setup.bash!!!

打开一个终端之后先刷新环境变量source install_isolated/setup.bash!!!

然后按照步骤进行:(不能跳步!!)

  1. 完成轨迹, 不接受进一步的数据:

rosservice call /finish_trajectory 0

  1. 序列化保存其当前状态:

rosservice call /write_state "{filename: '${HOME}/Downloads/mymap.pbstream'}",这里的文件路径自己定义,例如我的就是:

rosservice call /write_state "{filename: '/home/cy/mymap.pbstream'}",这里也要注意了,/home 前面一定有斜杠 / !!!!

  1. 将pbstream转换为pgm和yaml:

因为carto建图的格式和gmapping什么的不一样,所以要将它转变为熟悉的pgm(图片格式)和yaml(rviz可以打开)。

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/Downloads/mymap -pbstream_filename=${HOME}/Downloads/mymap.pbstream -resolution=0.05,同样的,路径也是自己设置:

rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=/home/cy/mymap.pbstream -pbstream_filename=/home/cy/mymap.pbstream -resolution=0.05

再说一遍:/home 前面一定有斜杠 / !!!

再说一遍:/home 前面一定有斜杠 / !!!

再说一遍:/home 前面一定有斜杠 / !!!

之后就可以看到地图了!!!我的地图如下,嘿嘿:

后记

终于把cartographer安装好了,接下来需要解决的是怎么在自己的机器上跑嘿嘿,毕竟不能只跑人家的demo,关于如何移植cartographer到自己的机器上等我学会了会再更新一片博文!!请期待吧!!!嘿嘿,休息一下。

致谢

在攻克cartographer这个曾经令我头疼的问题的过程中得到了很多网络资源的帮助!!所以特此将他们列出:

安装cartographer全面版

cmake版本解决

保存地图

posted @ 2024-09-07 17:27  cyMessi  阅读(0)  评论(0编辑  收藏  举报