欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cartographer ROS安装记录

程序员文章站 2022-05-29 10:25:46
...

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)