ros-kinetic部署cartographer并保存地图-2020.06.12

由于cartographer更新频繁,官网上的安装指导和ros机器人开发实践上的安装方法早就不行了。这是2020.06.05在roskinetic上实测通过的安装方法和地图保存方法。

参考链接:

安装方法:https://blog.csdn.net/weixin_39458342/article/details/103276265?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

地图保存:

https://blog.csdn.net/SimileciWH/article/details/84846416?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

1、安装方法

安装依赖库(默认已安装ros和cmake3.5以上版本)

  sudo apt-get update
  sudo apt-get install -y \
          g++ \
          git \
          google-mock \
          libboost-all-dev \
          libcairo2-dev \
          libeigen3-dev \
          libgflags-dev \
          libgoogle-glog-dev \
          liblua5.2-dev \
          libsuitesparse-dev \
          ninja-build \
          python-sphinx

除此之外,pcl要求是1.7版本的,1.9的不可以!1.9的不可以!1.9的不可以!!!重要的事情说三遍,如果之前使用了pcl1.9版本,要卸载干净,不然会出错:

创建工作区catkin_ws 并复制cartographer, cartographer_ros, ceres-solver代码到本地,并确定ceressolver为1.14.0版本

  mkdir catkin_ws
  cd catkin_ws
  wstool init src

  cd src
  git clone https://github.com/googlecartographer/cartographer_ros.git
  git clone https://github.com/googlecartographer/cartographer.git
  git clone https://github.com/ceres-solver/ceres-solver.git

  cd ceres-solver
  git checkout 1.14.0

 

安装proto3以及其他依赖项 

cd ../../    #切换到catkin_ws文件夹下

sudo apt-get install autoconf autogen
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make
# 这一步可能会报错,无视就好
make check
sudo make install
sudo ldconfig # refresh shared library cache.

 

编译安装

cd ../  #切换到catkin_ws文件夹下面

  catkin_make_isolated --install --use-ninja
  source install_isolated/setup.bash 

2、地图保存

当使用cartographer在线建图时,cartographer不知道什么时候结束,所以要先调用服务来关闭传感器数据的接收(在catkin_ws文件夹下运行该命令)

rosservice call /finish_trajectory 0 

将当前地图信息的快照保存为后缀名为.pbstream(根目录下运行即可)

 #rosservice call /write_state "{filename: '<绝对路径存放地图信息>/<地图保存的名字>.pbstream', include_unfinished_submaps: 'true'}"

#如将地图保存到/home/zhangamn/map文件夹下,命名为map.pbstream

zhangman@zhangman-G3-3579:~$ rosservice call /write_state /home/zhangman/map/map.pbstream true

通过cartographer提供的ros包,将后缀名为.pbstream的地图信息,转化成ros地图信息

#rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=<保存地图的绝对路径>/<地图命名> -pbstream_filename=<存放pbstream地图快照信息的绝对地址>/.pbstream -resolution=0.05

#如将上面保存的map.pbstream转换为ros地图,命名为map并保存到/home/zhangamn/map文件夹

zhangman@zhangman-G3-3579:~$ rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=/home/zhangman/map/map -pbstream_filename=/home/zhangman/map/map.pbstream -resolution=0.05
 

你可能感兴趣的:(经验,安装教程)