cartographer运行没有map_对cartographer的理解(笔记)

本文是关于cartographer的笔记,主要讲解cartographer_ros如何与cartographer库交互,数据流程,以及real_time_correlative_scan_matcher和ceres_scan_matcher的工作原理。在cartographer中,MapBuilder负责Local Submap建立和Loop Closure,数据经过预处理、点云旋转、候选位姿评估等步骤,结合ceres求解器进行优化。后端通过全局优化和分支界限法处理Loop Closure问题。
摘要由CSDN通过智能技术生成

这篇文章是根据专栏

cartographer源码详细解读​www.zhihu.com

做的笔记,感谢大神的无私分享.

cartographer_ros

这个包是用户用于调用cartographer库的一个接口包,将库里的功能都封装好了,便于用户使用.

首先, Node.h的构造函数中定义了一些ROS service,用户通过不同的ROS client可以使用这些service, 其中就包括了用于车子开始新的一圈儿的Node::HandleStartTrajectory,这个函数是外部使用这个库的起点.

然后,在HandleStartTrajectory里, 经历过一些状态检查之后会调用Node::AddTrajectory,来添加一个新的轨迹.

接着在AddTrajectory函数中,调用了Node的成员变量map_builder_bridge_的成员函数AddTrajectory. ->map_builder_bridge是MapBuilderBridge类的实例,用于将cartographer和cartographer_ros联系起来,他的成员函数AddTrajectory调用了cartographer库中的MapBuilder类的AddTrajectoryBuilder函数,从而将程序引到cartographer库.

(Node::AddTrajectory以及map_builder_bridge_->AddTrajectory中还有其他的一些处理,如传感器数据的接口等,这里主要是介绍算法流程,就不细说了)

cartographer

承接上文,程序通过MapBuilder类的AddTrajectoryBuilder函数转入到cartographer.

MapBuilder是cartographer算法的最顶层设计,MapBuilder包括了两个部分,其中Trajecto

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值