Cartographer安装及调试

一》首先简单介绍一下cartographer,Cartographer理论概述:
Cartographer主要理论是通过闭环检测来消除构图过程中产生的累积误差[1]。用于闭环检测的基本单元是submap。一个submap是由一定数量的laser scan构成。将一个laser scan插入其对应的submap时,会基于submap已有的laser scan及其它传感器数据估计其在该submap中的最佳位置。submap的创建在短时间内的误差累积被认为是足够小的。然而随着时间推移,越来越多的submap被创建后,submap间的误差累积则会越来越大。因此需要通过闭环检测适当的优化这些submap的位姿进而消除这些累积误差,这就将问题转化成一个位姿优化问题。当一个submap的构建完成时,也就是不会再有新的laser scan插入到该submap时,该submap就会加入到闭环检测中。闭环检测会考虑所有的已完成创建的submap。当一个新的laser scan加入到地图中时,如果该laser scan的估计位姿与地图中某个submap的某个laser scan的位姿比较接近的话,那么通过某种 scan match策略就会找到该闭环。Cartographer中的scan match策略通过在新加入地图的laser scan的估计位姿附近取一个窗口,进而在该窗口内寻找该laser scan的一个可能的匹配,如果找到了一个足够好的匹配,则会将该匹配的闭环约束加入到位姿优化问题中。Cartographer的重点内容就是融合多传感器数据的局部submap创建以及用于闭环检测的scan match策略的实现。(摘自【泡泡机器人SLAM】微信公众号)。
二》由于我在编译cartographer时遇到了很多的奇葩错误,可能是电脑原因,配置不行,经过一个痛苦的过程终于编译通过也是一把辛酸泪啊,所以把最后编译通过的步骤展示给大家,因为没有截图错误的情况可能提供不了太多错误的解决办法。
安装过程主要根据张明明(hitcm)的博客安装的,没有根据官网上安装,后面可以尝试一下。
需要安装3个软件包,ceres solver、cartographer和cartographer_ros
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-indigo-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
2/安装ceres solver,路径随意:
这个可根据hitcm的博客进行,
1. git clone https://github.com/hitcm/ceres-solver-1.11.0.git
2. cd ceres-solver-1.11.0/build
3. cmake ..
4. make –j
5. sudo make install
注:在这个过程中一开始我电脑出现过一个错误,没有安装gflags和glog包,即使上面安装了所有的依赖库,但是最后还是重新用编译方式安装成功的。第一种安装方法可以安装安装caffe中安装这两个包的方法进行安装,可以很好的搜到;第二种是找的一个比较少见的网址上介绍的安装方法,里面有详细的编译过程:How to install Google Ceres solver and 1DSfM on Ubuntu 14.04
3/然后安装 cartographer,路径随意:
1. git clone https://github.com/hitcm/cartographer.git
2 . cd cartographer/build
3. cmake .. -G Ninja
4. ninja
5. ninja test
6. sudo ninja install
上述第3步执行错误的同学可以忽略3-6步,改用下面的方法。
7. cmake ..
8 . make
9. sudo make install
我建议使用7到9步,这种编译比较稳妥。
4/安装cartographer_ros:
下载到catkin_ws下面的src文件夹下面
git clone https://github.com/hitcm/cartographer_ros.git
然后到catkin_ws下面运行catkin_make即可。
这需要安装者有一定ROS基础,自己已经建立了一个工作区间catkin_ws,不了解的还是要先看一下ROS,在这个过程中
*PS1:在这里直接catkin_make 会报错:Unknown CMAKE_BUILD_TYPE:Release
修改如下:在文件cartigrapher_ros cartigrapher_rviz cartigrapher_ros_msgs文件下的CMakeList.txt 文件中,在24行加入:set(CMAKE_BUILD_TYPE “Release”)
PS2: 若报CMP0002错误,在usr/src/gmock/gtest/CMakeList.txt中添加 cmake_policy(SET CMP0002 OLD)
PS3: 保存地图 rosservice call /finish_trajectory “stem: ‘test’” 地图保存路径为: ~/.ros/test.pgm (home/YOUR_PC/.ros/test.pgm)*
5/数据集下载

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值