Cartographer ROS安装记录

2023-05-16

Reference

  1. https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html#building-installation
  2. https://github.com/PointCloudLibrary/pcl/issues/3104

 


写在前面

安装Carto真的太不容易了,纵然梯子在手,也有很多奇奇怪怪的问题,这里做一下记录,希望可以帮助到更多的小伙伴。
 


安装必要的依赖项

  • ROS

  • 其他依赖项

    sudo apt-get install -y \
        python-wstool \
        python-rosdep \
        ninja-build \
        cmake \
        g++ \
        git \
        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-kinect-tf2-eigen \
        libatlas-base-dev \
        libsuitesparse-dev \
        liblapack-dev
    

 


初始化工作空间

mkdir XXX_ws
cd XXX_ws
wstool init src

如果src中有.rosinstall的话,会出以下错误,到src文件夹中删除.rosinstall就好

Error: There already is a workspace config file .rosinstall at "src". Use wstool install/modify.

 


拉取最新的工程文件

按理说是一定要执行下面的这句话的,这个地方有两个坑

wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
  1. raw.githubusercontent.com的host,正常来说无法被识别,因此需要在/etc/hosts中添加151.101.84.133 raw.githubusercontent.com到最后

  2. 整个过程极其的慢,同时ceres-solver下载不下来,所以可以直接在.rosinstall中添加如下内容,注意对于国内用户来讲,googlegit的ceres-solver无法clone,因此这里换做了github的ceres:

    - git:
        local-name: cartographer
        uri: https://github.com/cartographer-project/cartographer.git
        version: 1.0.0
    - git:
        local-name: cartographer_ros
        uri: https://github.com/cartographer-project/cartographer_ros.git
        version: 1.0.0
    - git:
        local-name: ceres-solver
        uri: https://github.com/ceres-solver/ceres-solver.git
        version: 1.13.0
    
  3. 如果还是很慢,可以人为的到上面的uri中手动clone到src中;

 


更新仓库的版本

使用如下语句,注意这一步运行的前提条件是上一步一定要做了,否则后面的都是无效的工作了:

wstool update -t src

经过上面的步骤之后应该是都会显示Done的。

 


编译Protobuf

按照官网的顺序下来,接下来需要编译Protobuf,这个地方也是极其的慢,可以先把v3.4.1的protobuf放在XXX_ws下,然后到修改src/cartographer/scripts/install_proto3.sh中的语句,不进行git相关的操作就可以;

这里说明一点,如果你的电脑中已经有protobuf了,那这个步骤个人并不建议做,因为不同版本的protobuf是不兼容的!不要因此破坏了你的环境,所以强烈建议在docker中测试;

 


编译工程

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
catkin_make_isolated --install --use-ninja

过程中rosdep init还是会有一些无法访问的问题,这也是host的问题,在/etc/hosts中添加151.101.84.133 raw.githubusercontent.com到最后就可以了。

 


其他问题

如果在电脑中不幸自己装入了PCL的库,那么在整个编译过程中还可能出现#error PCL requires C++14 or above的错误,此时可以到出问题的cc文件所在的工程中找到对应的CMakeLists.txt,添加如下语句就可以了:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cartographer ROS安装记录 的相关文章

随机推荐