【优秀论文解读】BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM

2023-05-16

论文简介

本论文新颖性在于3D激光雷达中实时闭环 且能够实时进行回环矫正 词袋模型为BoW3D 实时构建词袋 效率高 但是鲁棒性未知

词袋存储

在这里插入图片描述

word包含两种变量:Dim_value为描述子计算得到的非零数和Dim_ID为word相对应的维度数 具体的计算可以查看论文:Link3d关键点的计算

Place Set为一张图片中的word集合 包含两种变量:FrameID为第几帧和DesID为一帧画面中的描述子的ID号、

Place Set记录了word出现在第几帧中的第几个描述子

优点:不需要加载额外的单词文件 且hash表的查找需要的时间复杂度很低 对于检索来说大大的提高了效率

类似于tf-idf的处理方式

当一个word出现次数过多并且超过了阈值时 认为这个特征比较普通 为了提高检测效率将不对这种word做记录

tf-idf的处理方式为:
t f − i d f = n w i n i log ⁡ N n w t f-i d f=\frac{n_{w i}}{n_{i}} \log \frac{N}{n_{w}} tfidf=ninwilognwN
n w i n_{wi} nwi为单词w在第i帧图片中出现的次数
n i n_i ni为图片中的单词总数
N N N所有的图片数 即当前记录了多少帧
n w n_w nw单词w在所有图片中出现的总次数
意思是如果单词w出现的次数越多 那么这个w的tf-idf得分就越高 表明这个word不适合用来分类

本文的做法使用一种类似于tf-idf的方法 目的同样是为了提高检索效率:
 ratio  = N set  / ( N n w ) \text { ratio }=N_{\text {set }} /\left(\frac{N}{n_{w}}\right)  ratio =Nset /(nwN)
N s e t N_{set} Nset为word对应的place set中包含的place个数(参考上面的图片)
N N N为place的总数
n w n_w nw为总的单词数

如果这个数值高于了阈值 那么这个word对应的place set将不会再被计算

回环矫正

构建误差方程:
r l , c ( R l , c , t l , c ) = 1 2 ∑ i = 1 n ∥ s l i − ( R l , c s c i + t l , c ) ∥ 2 \begin{array}{c} r_{l, c}\left(\boldsymbol{R}_{l, c}, \boldsymbol{t}_{l, c}\right)=\frac{1}{2} \sum_{i=1}^{n}\left\|s_{l}^{i}-\left(\boldsymbol{R}_{l, c} s_{c}^{i}+\boldsymbol{t}_{l, c}\right)\right\|^{2} \end{array} rl,c(Rl,c,tl,c)=21i=1n sli(Rl,csci+tl,c) 2
l l l为回环检测到的历史帧的点云
c c c为当前帧的点云
s s s为激光点
求解R t的方法:
W = ∑ i = 1 n s ^ l i s ^ c i T \boldsymbol{W} = \sum_{i = 1}^{n} \hat{\boldsymbol{s}}_{l}^{i} \hat{s}_{c}^{i T} W=i=1ns^lis^ciT
W = U Σ V T W = U\Sigma V^T W=UΣVT
R l , c = V U T R_{l,c}=VU^T Rl,c=VUT
t l , c = s , − R l , c s t_{l,c}=s^, - R_{l,c}s tl,c=s,Rl,cs
s l s c s_ls_c slsc为去中心化的点云坐标 剩下的应该都不用太解释

检测回环

  1. Link3D的描述子作为输入且维护一个记录该帧每个place出现频率的hash table
  2. 获得每一个Link3D描述子中的word对应的place set
  3. 为每一个place set计算ratio 如果某个单词的频率过高 则直接进入下一次循环
  4. 如果没有大于阈值 则遍历这个单词对应的place set中的每一个place
  5. 如果这个place在hash表中 则该place的频率加一 如果没有出现过 则把这个place加到hash表中
  6. 计算这个hash table中频率最高的place 如果高于了阈值 则认为这一帧是他的回环历史帧

原文的伪代码:

在这里插入图片描述

还有一个更新词典的策略 过于简单 不做文字详解:

在这里插入图片描述

优化全部相关变量

i , j i,j i,j两帧之间的残差定义为:
r i , j ( T w , i , T w , i ) = ln ⁡ ( T i , j − 1 T w , i − 1 T w , j ) ∨ \begin{array}{c} r_{i, j}\left(\boldsymbol{T}_{w, i}, \boldsymbol{T}_{w, i}\right)=\ln \left(\boldsymbol{T}_{i, j}^{-1} \boldsymbol{T}_{w, i}^{-1} \boldsymbol{T}_{w, j}\right)^{\vee} \end{array} ri,j(Tw,i,Tw,i)=ln(Ti,j1Tw,i1Tw,j)
min ⁡ T { ∑ ( i , j ) ∈ S ∥ r i , j ∥ 2 + ∑ ( i , j ) ∈ L ∥ r i , j ∥ 2 } \begin{array}{c} \min _{T}\left\{\sum_{(i, j) \in S}\left\|r_{i, j}\right\|^{2}+\sum_{(i, j) \in L}\left\|r_{i, j}\right\|^{2}\right\} \end{array} minT{(i,j)Sri,j2+(i,j)Lri,j2}
S S S为所有相邻的边的集合
L L L为回环检测的边
全部都会使用Levenberg-Marquadt方法在g2o上优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【优秀论文解读】BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM 的相关文章

  • Deep Meta Learning for Real-Time Target-Aware Visual Tracking 论文阅读

    这篇文章是韩国的一个组做的 一直没中 直到19年中了ICCV xff0c 据说是第一篇将元学习引入目标跟踪的文章 xff0c 用的架构是siamese网络的架构 xff0c 但是在模型在线更新的时候使用了meta learning的思想 M
  • C++11 之for 新解

    前言 C 43 43 11这次的更新带来了令很多C 43 43 程序员期待已久的for range循环 xff0c 每次看到javascript xff0c lua里的for range xff0c 心想要是C 43 43 能有多好 xff
  • 将sql文件导入数据库时,报错Data truncated for column

    解决办法 打开my span class token operator span ini配置文件 将sql model中的 span class token constant STRICT TRANS TABLES span 去掉
  • UCF101和HMDB51数据集的处理 for Human Action Recognition

    数据集简介 xff1a 一 数据集获取 xff1a 1 UCF 101 http crcv ucf edu data UCF101 UCF101 rar 此外 xff0c 该数据集由于超过4G了无法上传百度云 xff0c 所以还在自己移动硬
  • VTK6.3.0 error: no override found for 'vtkPolyDataMapper'

    1 开发环境 计算机系统 Win7 Qt版本 5 4 0 Qt Creator版本 3 0 1 VTK版本 6 3 0 编译器 VS2013 2 解决方法1 根据参考资料 1 的说明 xff0c 在源程序中添加头文件 cpp view pl
  • Qt for iOS,Qt 与Objective C混合编程

    因为我写了一系列Qt的博文以及一本书 Qt on Android核心编程 xff0c 最近有好几个使用Qt的朋友问起 Qt for iOS 的事情 xff0c 因为我在这方面的经验特别少 xff0c 写不出系统的文章来 xff0c 非常抱歉
  • ESP32 for arduino 的3个hardware serial

    在arduino IDE的开发环境中 xff0c 如果使用的开发板不是arduino的开发平台 xff0c 而是ESP32模组的开发板 xff0c 那么在实际开发中由于ESP32的支持库与arduino不同 xff0c 会使得我们在使用一些
  • QT 报 QMetaObject::connectSlotsByName: No matching signal for on_btn_clicked()

    在QT中 xff0c 自己编写命名信号和槽的时候 xff0c 在用connect的时候报出以下错误 xff1a QMetaObject span class token double colon punctuation span conne
  • ChkBugReport工具for Android

    关于这个工具 xff0c 找到的资料都比较旧了 xff0c 貌似是索尼移动的开发人员开发的 xff0c 2014年左右的文章比较多 xff0c 应该是那个时候索尼移动还是比较鼎盛的时期吧 现在已经很少看到关于这个工具的文章了 xff0c G
  • VS Code For Web 深入浅出 -- 进程间通信篇

    在上一篇中 xff0c 我们一起分析了 VS Code 整体的代码架构 xff0c 了解了 VS Code 是由前后端分离的方式开发的 且无论前端是基于 electron 还是 web xff0c 后端是本地还是云端 xff0c 其调用方式
  • Renesas CS+ for ca cx入门(一)

    这是一篇关于Renesas的CS 43 for ca xff08 以下简称CA xff09 的入门简介 xff0c 在网上关于这个IDE的使用方法比较少人讲述 xff0c 兴许使用的人比较少吧 另一个类似的IDE是CS 43 for cc
  • Tips for Qt

    Based on Qt 5 14 0 Qt Creator 4 11 0 1 在UI设计界面添加控件后 xff0c 要编译一下 xff0c 再到编辑界面写代码 xff0c 否则系统不识别新添加的控件 2 多看帮助文档 xff0c 好多开发时
  • v-if和v-for的优先级

    文章目录 vue2vue3 vue2 v for优先级比v if高v for与v if作用在不同标签时候 xff0c 是先进行判断 xff0c 再进行列表的渲染 注意事项 永远不要把 v if 和 v for 同时用在同一个元素上 xff0
  • 学习ROS-Academy-for-Beginners-noetic,修改记录

    一 编译安装ROS Academy for Beginners noetic 可以参考我之前的博客ROS Academy for Beginers noetic安装教程 之后可以看到里面提供了很多例程 xff0c 包括 软件包 内容 rob
  • System real conversion functions

    原文链接 https www hdlworks com hdl corner verilog ref items SystemRealConversionFuncs htm System real conversion functions
  • java 最大公约数和最小公倍数

    题目 题目 输入两个正整数m和n 求其最大公约数和最小公倍数 比如 12和20的最大公约数是4 最小公倍数是60 说明 break关键字的使用 代码一 package l2 for 题目 输入两个正整数m和n 求其最大公约数和最小公倍数 比
  • 使用 NumberFormatter 类在 php 中将数字转换为单词

    我在解决 php 中的数字到单词函数时遇到困难 我怎样才能将其格式化为 二十九和二十九 请帮忙 首先 29 29 应该怎么读Twenty nine point two nine 话虽如此 如果你需要准确地得到Twenty nine and
  • java计算句子中每个单词的频率

    我正在编写一个非常基本的java程序 它计算句子中每个单词的频率 到目前为止我已经做到了这么多 import java io class Linked public static void main String args throws I
  • 直方图或包数据结构的 Objective-C 实现

    我没有实现自己的实现 而是想知道是否有人知道我可以使用的 Objective C 中的直方图或包数据结构实现 本质上 直方图是列表的哈希图 其中列表包含与其哈希条目相关的值 一个很好的例子是超市商品的直方图 您可以将每组商品乳制品 肉类 罐
  • Python 词干分析器问题:词干错误

    你好 我正在尝试用 python 词干分析器来词干 我尝试了 Porter 和 Lancaster 但他们也有同样的问题 他们无法正确阻止以 er 或 e 结尾的单词 例如 它们源于 computer gt comput rotate gt

随机推荐