安装已经有很多教程了,这里主要是记录一下一些坑和捋一下到底怎么安装配置,因为教程挺多的,步骤又不同。
基于ubuntu20.04 ROS-noetic
0.强烈建议,如果可以的话,请先重新安装系统,而且要桌面版(笔者本来是用server加xfec后重装桌面版,选择的是最小安装,就是没有文档套件那个选项)
1.不要按照Google官网的教程,是有问题的(也不知道有没有改,这个坑没去踩)
2.明确要建一个cartographer_ws工作空间,然后后续的cartographer、cartographer_ros、ceres_solver都是放在cartographer_ws/src里头的。这里cartographer、cartographer_ros有两种下载方式。
第一种是用wstool,第二种是直接git clone源码。建议是用git clone。
关键点在ceres_solver、这个用的是rosdep自动安装依赖安装的,其实这个是可以要求版本的.
然后,关键的来了,你按照教程使用wstool 新建src的时候(cartographer_ws/src的src),你打开src,然后显示一下隐藏文件,会有一个.rosinstall,如果你采用第一种方式下载cartographer、cartographer_ros的源码,这个文件就不是空的,会形如下图。如果是采用第二种方式,那他就是空的,这个时候你就要像下图一样写进你的cartographer_ws/src/.rosinstall里.
3.关于abseil,有些教程是在搞定cartographer、cartographer_ros、ceres_solver前就让你先安装的,笔者觉得其实不用那样,因为那样可能会和rosdep自动安装依赖冲突,搞定cartographer、cartographer_ros、ceres_solver后再去弄就好了。(你看到先装abseil的教程的话就换一个教程)
3.关于rosdep、笔者也试过科学上网,但搞了好几遍都不通,如果你能,那就最好了。不行的话就用rosdepc(鱼香ROS出的)
4.确定能跑通官方例程的时候,却不能在自己项目调用。
记得先把~/cartograhper_ws/install_isolated/setup.bash加进 .bashrc。否则你在自己的项目调用cartographer_ros会遇到问题。(找不到node、无法定位什么的)
正常来说,能在自己项目(xunfei_ws)调用cartographer(cartographer_ws)的环境应该是这样的
指令:echo $ {ROS_PACKAGE_PATH}
但如果你的项目先于cartographer的安装,可能就不是这样的了,要明确在一个终端里source是会覆盖的,你无法先后source 自己项目_ws和cartographer_ws 以实现上图效果。
解决方案就是,先删掉自己ws下的build和devel,再catkin_make,再source devel/setup.bash