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的数据集,经测试是可以用的,但是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
!!!
然后按照步骤进行:(不能跳步!!)
- 完成轨迹, 不接受进一步的数据:
rosservice call /finish_trajectory 0
- 序列化保存其当前状态:
rosservice call /write_state "{filename: '${HOME}/Downloads/mymap.pbstream'}"
,这里的文件路径自己定义,例如我的就是:
rosservice call /write_state "{filename: '/home/cy/mymap.pbstream'}"
,这里也要注意了,/home 前面一定有斜杠 / !!!!
- 将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这个曾经令我头疼的问题的过程中得到了很多网络资源的帮助!!所以特此将他们列出: