当前位置:   article > 正文

cartographer安装与编译(成功运行数据集)_cartography源码安装

cartography源码安装

1 Cartographer的介绍

Cartographer是一种用于构建实时二维和三维地图的开源算法库。它由Google开发,旨在支持机器人和自动驾驶车辆的定位和环境建模。Cartographer结合了激光雷达和惯性测量单元(IMU)的数据,并利用了多传感器数据的时间同步性,以高效地生成准确的地图。

Cartographer的主要特点包括:

(1)并行扫描匹配(Parallel Scan Matching):Cartographer使用并行计算来加快扫描匹配的速度。它将激光雷达数据划分为多个子集,并在并行处理器上同时处理这些子集,以实现快速的扫描匹配。

(2)位姿图优化(Pose Graph Optimization):Cartographer使用图优化技术来估计机器人的姿态和地图的拓扑结构。通过优化位姿图,可以提高地图的准确性和一致性,并减少传感器噪声和误差的影响。

(3)实时地图更新:Cartographer能够在机器人移动时实时更新地图。它通过处理连续的激光雷达数据流,并根据新的观测信息和机器人的运动来更新地图。这使得Cartographer适用于实时应用,如机器人导航和建筑物内的环境建模。

(4)支持二维和三维地图:Cartographer支持构建二维和三维地图。对于二维地图,它可以处理激光雷达数据,而对于三维地图,它可以使用激光雷达和IMU数据来进行建模。

2 Cartographer的框架

从上面的系统框图中可以看出, catographer算法的输入是各类传感器,其中包括有雷达数据,里程计位姿,IMU数据和GPS数据。雷达数据首先经过一个体素滤波器,再经过自适应体素滤波与由里程计和IMU融合构成位姿估计器生成local slam ,在local slam中 的扫描匹配使用 google 自家的seres库进行非线性求解,然后是构成子图,子图的构建过程通过运动滤波器。当子图不再生成时则会加入到global slam中,位姿间的约束通过稀疏位姿调整。

3. Cartographe的r安装 

因为运行cartographer需要很多依赖,因此第一步就是解决依赖的问题,执行下面的指令安装必要的库:

  1. sudo apt-get install \
  2. clang \
  3. cmake \
  4. g++ \
  5. git \
  6. google-mock \
  7. libboost-all-dev \
  8. libcairo2-dev \
  9. libcurl4-openssl-dev \
  10. libeigen3-dev \
  11. libgflags-dev \
  12. libgoogle-glog-dev \
  13. liblua5.2-dev \
  14. libsuitesparse-dev \
  15. lsb-release \
  16. ninja-build \
  17. stow \
  18. python3-wstool \
  19. python3-rosdep \
  20. python3-sphinx \
  21. libatlas-base-dev

接下来是安装abseil库:

  1. git clone https://github.com/abseil/abseil-cpp.git
  2. cd abseil-cpp
  3. git checkout 215105818dfde3174fe799600bb0f3cae233d0bf # 20211102.0
  4. mkdir build
  5. cd build
  6. cmake -G Ninja \
  7. -DCMAKE_BUILD_TYPE=Release \
  8. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  9. -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl \
  10. ..
  11. ninja
  12. sudo ninja install
  13. cd /usr/local/stow

接下来是ceres库

  1. sudo apt-get install  liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
  2. GitHub - ceres-solver/ceres-solver: A large scale non-linear optimization library
  3. mkdir build
  4. cd build
  5. cmake ..
  6. make -j4
  7. sudo make install

然后安装proto3

  1. git clone https://github.com/google/protobuf.git
  2. cd protobuf
  3. git checkout tags/${VERSION}
  4. mkdir build
  5. cd build
  6. cmake -G Ninja \
  7. -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  8. -DCMAKE_BUILD_TYPE=Release \
  9. -Dprotobuf_BUILD_TESTS=OFF \
  10. ../cmake
  11. ninja
  12. sudo ninja install

最后再安装cartographer

  1. cd cartographer
  2. mkdir build
  3. cd build
  4. cmake .. -G Ninja
  5. ninja
  6. CTEST_OUTPUT_ON_FAILURE=1 ninja test
  7. sudo ninja install

由于本人使用的github上大神注释好源码的版本,因此这里主要是按照该项目的安装演示,首先是到GitHub - xiangli0608/cartographer_detailed_comments_ws: cartographer work space with detailed comments该链接中克隆到自己的系统上。

 4.Cartographer的编译

进入到工作空间,然后找到cat_make.sh脚本,执行./cat_make.sh,即可对整个工程进行编译。成功编译后会显示有四个功能包包含进去。

5. Cartographer的运行

5.1 2d 建图实验

执行指令 roslaunch cartographer_ros lx_rs16_2d_outdoor.launch

效果图:

5.2 3d 建图实验

执行指令:

roslaunch cartographer_ros lx_rs16_3d.launch

效果图

5.3 纯定位模式

执行指令:

roslaunch cartographer_ros lx_rs16_2d_outdoor_localization.launch

效果图

5.4官方数据集测试

先下载官方的数据集,点击该链接即可Running Cartographer ROS on a demo bag — Cartographer ROS documentation

5.4.1官方数据集2d建图测试

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/b2-2016-04-05-14-44-52.bag

效果图

5.4.2官方数据集3d建图测试

执行指令:ghm@ghm-QNLXS:~$ roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag

效果图:

 

5.2.3 纯定位测试

执行指令:(1) roslaunch cartographer_ros offline_backpack_2d.launch bag_filenames:=${HOME}/Downloads/b2-2016-04-05-14-44-52.bag

等建图完成之后,再运行(2) roslaunch cartographer_ros demo_backpack_2d_localization.launch    load_state_filename:=${HOME}/Downloads/b2-2016-04-05-14-44-52.bag.pbstream    bag_filename:=${HOME}/Downloads/b2-2016-04-27-12-31-41.bag

(1)所完成的工作生成一张地图,然后保存地图的配置文件,这样在(2)才可以在所对应的地图中进行定位测试。

效果图:

结语:本文中学习了如何将cartographer安装到自己的系统,并成功通过cartographer对自制的数据集和官方的数据集进行建图和定位测试,数据集的获取可以私信。

下一篇预告:使用husky机器人对自定义的gazebo仿真环境进行测试。

参考链接:

GitHub - xiangli0608/cartographer_detailed_comments_ws: cartographer work space with detailed comments

https://github.com/cartographer-project/cartographer

Running Cartographer ROS on a demo bag — Cartographer ROS documentation

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/876820
推荐阅读
相关标签
  

闽ICP备14008679号