Nvidia Xavier NX安装并测试Cartographer

这里写自定义目录标题

前言

最近成功在Nvidia Xavier NX和Nvidia Xavier AGX安装并测试了谷歌的开源激光slam算法Cartographer,在此记录下过程中的一些坑。

安装过程

  1. 首先需要安装ROS,需要注意的是Nvidia Xavier NX和Nvidia Xavier AGX都是安装的Ubuntu18.04系统,所以安装对应的ROS版本:Ros-melodic。安装教程参考ROS官网。
    Cartographer大部分教程可以参考官网,链接如下:
    Cartographer官网

  2. 安装依赖库

sudo apt-get update
sudo apt-get install -y \
    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
  1. 安装abseil
git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
git checkout d902eb869bcfacc1bad14933ed9af4bed006d481
mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl \
  ..
ninja
sudo ninja install
cd /usr/local/stow
sudo stow absl

abseil是google开源的C++基础库。ninja是google自己的编译器,速度更快,如果没有安装*软件的话,可能有的时候下载不再来,或者下载速度很慢,可以考虑在Window平台上下载并拷贝到Nvidia平台上。

安装步骤最好按照这个来做,否则容易造成问题,如下所示,在编译cartographer_ros时提示的错误。
Nvidia Xavier NX安装并测试Cartographer
过程如下所示:
Nvidia Xavier NX安装并测试Cartographer
我在执行make和cmake时,一开始是在build文件夹下执行sudo cmake …/ 和sudo make sudo make install 操作,在后面执行cd /usr/local/stow sudo stow absl命令时出现了问题,如下所示。
Nvidia Xavier NX安装并测试Cartographer
所以在编译时还是要加上官网给出的编译条件。

  1. 安装Ceres
VERSION="1.13.0"

# Build and install Ceres.
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout tags/${VERSION}
mkdir build
cd build
cmake .. -G Ninja -DCXX11=ON
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install

Ceres我是在Window平台上的Github上下载的,下载1.13.0版本即可。
5. 安装proto3

VERSION="v3.4.1"

# Build and install proto3.
git clone https://github.com/google/protobuf.git
cd protobuf
git checkout tags/${VERSION}
mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -Dprotobuf_BUILD_TESTS=OFF \
  ../cmake
ninja
sudo ninja install

protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。注意要下载对应的版本。
我一开始参考了如下链接:
protobuf

Nvidia Xavier NX安装并测试Cartographer
但是没有安装成功,在后面编译cartographer_ros时,总是提示Protocol版本不对。后来按照官网的教程,一次就安装成功了。
6. 安装cartographer
需要注意的是注意安装cartographer和cartographer_ros的顺序,要先安装cartographer,再编译cartographer_ros才可以,因为cartographer_ros依赖cartographer。需要注意cartographer的版本和cartographer_ros的版本要对应一致。我在一开始编译cartographer_ros的过程中导致找不到cartographer的一些文件,就是版本没有对应一致。错误如下图所示:
Nvidia Xavier NX安装并测试Cartographer

  1. 安装cartographer_ros

最终cartographer_ros如果编译没有问题,那就是cartographer安装成功了。
8. 下载bag包并测试

bag可以从下面链接下载。
bag包下载地址
下面测试bag包。
这一步不要忘记了,不然找不到ros路径。

echo "source ~/cartographer/cartographer_ros/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

执行roslaunch。

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

HOME为home路径(~/),bag_filename为bag包所在的路径,软件会自动打开Rviz,显示定位和建图轨迹。

软件包

我把我用到的安装Cartographer所用到的软件,放在了如下百度网盘链接中。软件包包含abseil,Ceres,proto3,各个版本的cartographer_ros和cartographer,vscode,我安装中使用的是最新版本的cartographer_ros和cartographer。
提取码:1111 。
软件包百度网盘地址
下面是运行b0-2014-10-07-12-50-07.bag的建图结果。
Nvidia Xavier NX安装并测试Cartographer
下面是运行b0-2014-07-11-10-58-16.bag的建图结果。
Nvidia Xavier NX安装并测试Cartographer

上一篇:Ninja - chromium核心构建工具


下一篇:【switch_thumb用矢量图时大小总是和滑轨宽度一样大的问题解决】