Ubuntu18.04快速安装Cartographer以及Cartographer_ros

任务动机:快速完成基于Ubuntu18.04的Cartographer以及Cartographer_ros安装。

任务描述:分步安装验证后,将步骤合并成安装脚本。

Cartographer由谷歌一直在维护,从之前的tf1到现在melodic版本上的tf2_ros都有更新支持。而且cartographer所依赖的库也在一直更新,包括abseil-cpp,ceres-solver,protobuf等,其依赖的版本混乱,并不能相互兼容。经过测试,在2019年的某个版本解决好依赖问题之后,同样的方法在2020年clone新的官方代码就编译出错了。并且官方只更新代码,并没有对安装文档进行对应的更新,所以直接按照cartographer/scripts中的安装脚本操作,而又使用最新代码,是必然会出错的。为了解决此问题,本仓库固化依赖以及cartographer的版本,经过多次测试,该方法有效。

版本固化时间为2020年07月01日16:58:57。

1. 源码

  1. cartographer
  2. cartographer_ros

该仓库的cartographer以及cartographer_ros代码均为笔者固化版本时官方github最新代码,依赖调教好版本的依赖包也都已经放在dependencies文件夹,所有代码均使用cmake编译方式,无官方推荐的ninjia(对持续源码修改以及开发不方便),该仓库的方法不保证对后续谷歌更新的cartographer以及cartographer_ros有效,请使用本仓库下的代码版本。建议cartographer_ros将仓库克隆到catkin_ws/下与src平级目录,后续修改源码或者查看代码实现可直接跳转。

按照本文所介绍的安装方法你可以获得以下便利:

  1. 在ubuntu16.04上一键编译和安装cartographer和cartographer_ros
  2. cartographer库采用CMake方式编译,而非谷歌所使用的ninjia
  3. cartographer工程可在QtCreator中直接打开和编译
  4. 更改cartographer源码后可在之前的编译基础上继续编译,减少重复编译浪费时间
  5. cartographer_ros仓库可直接放到ROS工作空间一同编译和修改
  6. cartographer_ros可使用ros-qt-plugin在QtCreator中修改代码,可随意进行函数跳转
  7. cartographer_ros的代码在QtCreator中可直接跳转到所安装的cartographer仓库的代码(而非本系统安装的库),方便同步修改

2. 手动固化安装版本的过程

以下过程为笔者手动固化安装版本的详细过程,其中的脚本已集中放在了install.sh脚本中支持一键运行了,用户无需再进行该过程。

给出该过程是为了用户参考和了解所固化的具体版本号。

2.1 安装基础依赖

# Install the required libraries that are available as debs.
sudo apt-get update
sudo apt-get install -y \
    cmake \
    g++ \
    git \
    google-mock \
    libboost-all-dev \
    libcairo2-dev \
    libeigen3-dev \
    libgflags-dev \
    libgoogle-glog-dev \
    liblua5.2-dev \
    libprotobuf-dev \
    libsuitesparse-dev \
    libwebp-dev \
    ninja-build \
    protobuf-compiler \
    python-sphinx \

2.2 安装abseil-cpp

版本:lts_2020_02_25

# Install abseil-cpp
cd  ~/Downloads
git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
git checkout lts_2020_02_25
mkdir build
cd build
cmake ..
make -j2
sudo make install

2.3 安装ceres solver

版本:1.13.0

# Install ceres solver
cd  ~/Downloads
git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
git checkout 1.13.0
mkdir build
cd build
cmake ..
make -j2
sudo make install

2.4 安装protobuf

版本:master@d4c5992352aae1ed18f44c1a40d2149006bf8704

# Install prtobuf 3.0
cd  ~/Downloads
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git checkout d4c5992352aae1ed18f44c1a40d2149006bf8704
mkdir build
cd build
cmake ..
make -j2
sudo make install
sudo ldconfig

此处注意如果安装完没有执行sudo ldconfig指令时会报错找不到shared libraries protobuf.so.23。

2.5 安装cartographer

版本:master@e5894cce1f8047d5c807158711e468b3f5550f1a

# Install cartographer

cd  ~/Downloads
git clone https://github.com/cartographer-project/cartographer.git
git checkout e5894cce1f8047d5c807158711e468b3f5550f1a
cd cartographer
mkdir build
cd build
cmake ..
make -j2
sudo make install

2.6 安装cartographer_ros与编译

版本:master@be4332b3385b5eea2511d11de5cc6792ecb4af2e

# Install cartographer ros
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/cartographer-project/cartographer_ros.git
git checkout be4332b3385b5eea2511d11de5cc6792ecb4af2e
cd ~/catkin_ws
catkin_make -j2

此处进行编译时请使用catkin_make -j2,如果直接使用catkin_make则会全线程启动编译,会导致内存不足,从而报错编译器内部错误。

3. 一键安装

使用该脚本安装前请确保已安装ROS-Melodic。

./install.sh

为了避免与用户本机的ros工作空间中已存在的cartographer_ros包可能发生的冲突,安装脚本会在用户目录新建一个carto_ws的ROS工作空间,运行完成后用户可自行选择移到自己的工作空间中一同使用。

3.1 ARM64主板注意事项

一键安装脚本可直接在AMD64架构的板子上运行,在ARM64架构的板子上会报不存在/usr/lib/aarch64-linux-gnu/libGL.so,导致后续的cartographer_rviz编译失败,因而要链接生成,请注意取消脚本中line52的注释。

sudo ln -s /usr/lib/aarch64-linux-gnu/libGL.so.1 /usr/lib/aarch64-linux-gnu/libGL.so

4. 重编译脚本

修改cartographer源码后需要编译安装才能生效,从而提供给cartographer_ros使用。

cartographer重编译可直接运行:

./rebuild_install.sh

然后再去编译cartographer_ros所在的ROS工作空间。

5. 数据集

谷歌官方文档页面给出的数据集可直接使用本仓库的下载脚本get_carto_bags.sh将所有bag文件下载到本地~/data/carto_bags/中。

./get_carto_bags.sh

6. 安装脚本下载

https://download.csdn.net/download/zhzwang/12806260

你可能感兴趣的:(算法,ubuntu)