【优秀论文解读】BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM
1|0论文简介
本论文新颖性在于3D激光雷达中实时闭环 且能够实时进行回环矫正 词袋模型为BoW3D 实时构建词袋 效率高 但是鲁棒性未知
2|0词袋存储
word包含两种变量:Dim_value为描述子计算得到的非零数和Dim_ID为word相对应的维度数 具体的计算可以查看论文:Link3d关键点的计算
Place Set为一张图片中的word集合 包含两种变量:FrameID为第几帧和DesID为一帧画面中的描述子的ID号、
Place Set记录了word出现在第几帧中的第几个描述子
优点:不需要加载额外的单词文件 且hash表的查找需要的时间复杂度很低 对于检索来说大大的提高了效率
3|0类似于tf-idf的处理方式
当一个word出现次数过多并且超过了阈值时 认为这个特征比较普通 为了提高检测效率将不对这种word做记录
tf-idf的处理方式为:
为单词w在第i帧图片中出现的次数
为图片中的单词总数
所有的图片数 即当前记录了多少帧
单词w在所有图片中出现的总次数
意思是如果单词w出现的次数越多 那么这个w的tf-idf得分就越高 表明这个word不适合用来分类
本文的做法使用一种类似于tf-idf的方法 目的同样是为了提高检索效率:
为word对应的place set中包含的place个数(参考上面的图片)
为place的总数
为总的单词数
如果这个数值高于了阈值 那么这个word对应的place set将不会再被计算
4|0回环矫正
构建误差方程:
为回环检测到的历史帧的点云
为当前帧的点云
为激光点
求解R t的方法:
为去中心化的点云坐标 剩下的应该都不用太解释
5|0检测回环
- Link3D的描述子作为输入且维护一个记录该帧每个place出现频率的hash table
- 获得每一个Link3D描述子中的word对应的place set
- 为每一个place set计算ratio 如果某个单词的频率过高 则直接进入下一次循环
- 如果没有大于阈值 则遍历这个单词对应的place set中的每一个place
- 如果这个place在hash表中 则该place的频率加一 如果没有出现过 则把这个place加到hash表中
- 计算这个hash table中频率最高的place 如果高于了阈值 则认为这一帧是他的回环历史帧
原文的伪代码:
还有一个更新词典的策略 过于简单 不做文字详解:
6|0优化全部相关变量
两帧之间的残差定义为:
为所有相邻的边的集合
为回环检测的边
全部都会使用Levenberg-Marquadt方法在g2o上优化
__EOF__

本文链接:https://www.cnblogs.com/linglingdog/p/17059849.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】