参考博客:ubuntu20.04 Cartographer ROS小白简单安装使用_ubuntu20.04安装cartographer-CSDN博客
ubuntu20.04 编译cartographer - 知乎 (zhihu.com)
其实20.04安装没有那么多步骤,有些博主可能是按16.04,18.04的ubuntu来做的教程,导致版本对不上最后安装失败。下面附上步骤:
1.先按这个步骤一次性把所有基础依赖安装好,如果已有的话就会自动更
apt-get install -y build-essential protobuf-compiler clang cmake g++ git google-mock libboost-all-dev libcairo2-dev libcurl4-openssl-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libsuitesparse-dev lsb-release ninja-build stow python3-sphinx libgmock-dev libmetis-dev libceres-dev
2.安装其他辅助工具
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
3.初始化工作空间和安装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
这里补充一句,wstool那行命令运行不了的是访问不了github的原因,推荐下个加速器,加速github,电脑上就能直接访问了,如watt toolkit,免费的,里面网络加速往下翻有GitHub选项,虽然我一直以为只能加速steam
用了这行命令安装你会发现src下只有cartographer和cartographer_ros,没ceres,估计是官方20.04自带了,反正最后可以运行。
4.rosdep相关
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]
那也很好解决。把cartographer_ws/src/cartographer文件夹中的package.xml 文件中的第46行<depend>libabsl-dev</depend>
删掉就完事儿了
之后运行下面的代码:
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
5.abseil安装
注意20.04不用安装protbuf,他自己带了,可以用protbuf version查看一下,你自己装了又麻烦还一定报错。这一步在工作空间下运行代码
src/cartographer/scripts/install_abseil.sh
这一步本质也是从github下东西,加速器别关!
下面的操作是为了防止自带的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
有这个报错说明没有自带的abseil,没产生冲突。没出现这个报错说明有冲突但你已经删掉了。
5.编译!
catkin_make_isolated --install --use-ninja
成功后长这个样
6.结语
笔者到这里就成功编译了,之后也是跑了下官方那个数据集,也是圆满成功!