cartographer逐行代码解析视频教程

​01前言

Cartographer是google在2016年推出的一套基于图优化的激光SLAM算法。如果你是SLAM研究者你一定听说过它的大名。这套算法可以融合多种传感器数据,以较低的资源消耗、较高的实时性构建栅格地图(这里仅指二维地图,虽然cartographer也支持3d建图,但建出来的地图既不是栅格地图也不是3d点云或其他常见格式,这种地图只能用于定位,没法用于路径规划、任务决策等,所以稍显鸡肋,目前业界很少使用这种地图))。可以说这套算法是目前激光slam界算法中的老师傅:没有新算法的眼花缭乱,但稳健、出色。无论在机器人领域还是自动驾驶领域都大量借鉴了cartographer中的思想,也因此,众多相关企业在招聘SLAM人才时都要求对其有较深的理解。

02学习它

学习cartographer并不容易。

难在哪里?根据笔者自身经验和调研周围的朋友,最难的部分并不在于cartographer相关论文中提出的新算法。关于这一部分的讲解,网络上资源很多,有好有差,但多看看总能看出些眉目直到理解(虽然也要费点力气)。反而最难的部分在于:

前端:

ROS版本中数据流的传递,乍一看乱七八糟的多态、继承,不知怎的就把数据送去进行scan match 了?

外推器中乱七八糟的imu_tracker都是啥?反正不管

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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策略的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值