• ROS学习(十八)机器人SLAM功能包——cartographer的安装与测试



    前言

      本篇主要介绍常用的slam功能包——cartographer,为谷歌开发,在计算资源有限的情况下,可以实现机器人在二维和三维条件下的定位及建图功能。目前该算法采用基于图网络的优化方法,主要基于激光雷达来实现SLAM。

    一、安装

    两种安装方式,编译安装和二进制文件安装。如果后期,有编译自己代码的需要,建议编译安装。编译安装,又有两种方法,即一键安装和分步安装。

    1、编译安装

    1.1 安装依赖

    执行如下命令:

    sudo apt-get install -y 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-kinetic-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
    
    • 1

    1.2 初始化工作空间

    为了不与现有功能包冲突,最好为cartographer专门创建一个工作空间catkin_google_ws,执行如下命令:

    mkdir -p ~/catkin_google_ws/src
    cd ~/catkin_google_ws/src
    catkin_init_workspace
    
    • 1
    • 2
    • 3

    1.3 下载功能包

    执行如下命令:

    cd ~
    git clone https://github.com/serapann/ros-kinetic-cartographer.git
    cd ros-kinetic-cartographer
    cp -R * ~/catkin_google_ws/src
    
    • 1
    • 2
    • 3
    • 4

    1.4 编译安装

    1.4.1 一键安装编译

    依次执行如下命令:

    cd ~/catkin_google_ws
    catkin_make_isolated --install --use-ninja
    
    • 1
    • 2

    等待一段时间,一键编译完成,效果如下:
    在这里插入图片描述
    添加环境变量,命令如下:

    sudo echo "source ~/catkin_google_ws/install_isolated/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
    • 1
    • 2

    1.4.2 分布安装

    1.4.2.1 安装ceres-solver

    依次执行如下命令:

    git clone https://github.com/hitcm/ceres-solver-1.11.0.git
    cd ceres-solver-1.11.0
    mkdir build
    cd build
    cmake ..
    make -j4
    sudo make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1.4.2.2 安装cartographer
    git clone https://github.com/hitcm/cartographer.git
    cd cartographer
    mkdir build
    cd build
    cmake .. -G Ninja
    ninja
    ninja test
    sudo ninja install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1.4.2.3 编译安装cartographer_ros
    #安装cartographer_ros
    cd ~/catkin_google_ws/src
    git clone https://github.com/hitcm/cartographer_ros.git
    
    • 1
    • 2
    • 3

    为了区分catkin_make和catkin_make_isolated之间的区别,这里两种编译过程都记录下。

    方法1:catkin_make编译
    cd ~/catkin_google_ws
    catkin_make
    
    • 1
    • 2

    因为上面操作将cartographer、ceres-solver、cartographer_ros都放进来了,报如下错误:
    在这里插入图片描述
    说前两者不能cmake,没有可以catkin编译的功能包,请使用catkin_ catkin_make_isolated编译。因为已经安装完前两者了,可以执行如下命令删掉:

    cd ~/catkin_google_ws/src
    rm -rf ceres-solver cartographer
    
    • 1
    • 2

    然后再进行catkin_make编译:

    cd ~/catkin_google_ws
    catkin_make
    
    • 1
    • 2

    编译完成后,效果如下:
    在这里插入图片描述
    添加环境变量,执行如下命令:

    sudo echo "source ~/catkin_google_ws/devel/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
    • 1
    • 2

    或者打开该文件,在文件尾添加如下一行:

    gedit ~/.bashrc
    source /home/zt/catkin_google_ws/devel/setup.bash
    
    • 1
    • 2
    方法2:catkin_make_isolated编译

    执行如下命令:

    cd ~/catkin_google_ws
    catkin_make_isolated
    
    • 1
    • 2

    你会发现使用catkin_make_isolated编译的时间会明显更长,是一轮一轮编译的,catkin_make则不是。
    catkin_make编译,在根目录生成build和devel 两个文件夹,而catkin_make_isolated编译,则在根目录生成build_isolated和devel_isolated两个文件夹。
    编译完成后,效果如下:
    在这里插入图片描述

    添加环境变量,执行如下命令:

    sudo echo "source ~/catkin_google_ws/devel_isolated/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
    • 1
    • 2

    2、二进制文件安装

    ros在2019年7月份已经将cartographer集成在软件源里,可以使用如下命令直接安装:

    sudo apt-get install ros-kinetic-cartographer*
    
    • 1

    我是使用的编译安装,二进制文件安装,没有尝试。

    二、仿真测试

    1、启动2D slam demo

    执行如下命令,下载2D数据集:

    wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
    
    • 1

    效果如下:
    请添加图片描述
    将下载好的数据集文件cartographer_paper_deutsches_museum.bag,移动到catkin_google_ws/src目录下,执行命令:

    roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/catkin_google_ws/src/cartographer_paper_deutsches_museum.bag
    
    • 1

    效果如下:
    请添加图片描述

    2、启动3D slam demo

    执行如下命令,下载3D数据集(文件较大):

    wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/b3-2016-04-05-14-14-00.bag
    
    • 1

    效果如下:
    请添加图片描述

    将下载好的数据集文件b3-2016-04-05-14-14-00.bag,移动到catkin_google_ws/src目录下,执行命令:

    roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/catkin_google_ws/src/b3-2016-04-05-14-14-00.bag
    
    • 1

    效果如下:
    请添加图片描述
    该demo使用3D雷达建模,可以调整RVIZ中的视角,看到3D雷达的信息。

  • 相关阅读:
    【RocketMQ中生产者生产消息的高可用机制、消费者消费消息的高可用机制、消息的重试机制、死信队列于死信消息】
    JavaFX:控件边框设置
    服务端(后端)主动通知前端的实现:WebSocket(springboot中使用WebSocket案例)
    淘宝扭蛋机源码解析:功能实现与技术细节
    Python 处理POS标签
    【Node.js实战】一文带你开发博客项目(API 对接 MySQL)
    web中操作sqlite数据库
    数据结构数组 Array 手写实现,扩容原理
    「Verilog学习笔记」根据状态转移表实现时序电路
    SpringBoot整合其它项目
  • 原文地址:https://blog.csdn.net/u011832219/article/details/124878832