Details of PL-slam loopclosure detection and its optimization method

本文介绍了一种基于视觉里程计的SLAM系统——PL-SLAM中的回环检测与优化方法。该方法通过计算关键帧之间的相似度并利用特定策略评估回环候选帧,最终实现地图的精确校正。

Preface:.

(0)General

单独线程


//加入新的关键帧
addKeyFrame();
...
//经过此函数生成了conf_matrix[n][n]的方阵,记录着所有关键帧之间的相似度
insertKFBowVectorPL(){
	...
	//使用bow算法对点特征计算相似度
	dbow_voc_p.transform();
	...
	//使用bow算法对线特征计算相似度
	dbow_voc_l.transform();
	...
	//使用论文提出的评分策略[1]对所有关键帧评分
	score_all();
}


/*基于方法[2]根据关键帧临近与分数大于最小回环评分计数满足的关键帧,如果超过4个则
判断为回环检测的候选帧,且保留最相似的帧*/
is_candidates();

//基于方法[3]估计当前帧与最相似帧的相对位姿,去除假阳性,不会影响召回率
isLoopClosure();

//基于方法[4]回环修正地图
loopClosureOptimizationCovGraphG2O();


[1]策略
st=0.5(nk/(nk+nl)+dk/(dk+dl))sk+0.5(nl/(nk+nl)+dl/(dk+dl))sl.\begin{aligned} s_{t}=& 0.5\left(n_{k} /\left(n_{k}+n_{l}\right)+d_{k} /\left(d_{k}+d_{l}\right)\right) s_{k} \\ &+0.5\left(n_{l} /\left(n_{k}+n_{l}\right)+d_{l} /\left(d_{k}+d_{l}\right)\right) s_{l} . \end{aligned}st=0.5(nk/(nk+nl)+dk/(dk+dl))sk+0.5(nl/(nk+nl)+dl/(dk+dl))sl.
其中:nkn_knk,nln_lnl分别是关键帧的点特征与线特征的数量,dkd_kdk,dld_ldl分别是点特征与线特征的分散值;

[2]方法

请添加图片描述
其思路是当前帧于过去评分最高的帧之间交叉验证。
[3]方法
对当前帧与最相似帧进行点线的特征匹配,之后通过三角测量计算出有效的变换:
ξ^ij∈se(3)\hat{\boldsymbol{\xi}}_{i j} \in \mathfrak{s e}(3)ξ^ijse(3)
之后进行回环错误检测,去除假阳性结果,真正的阳性满足:
Eigenvalue(∑ξ^ij)<0.01Max(rotationerror)<3.00°Max(translationerror)<0.50minliersration>50%Eigenvalue (\sum \hat{\boldsymbol{\xi}}_{i j})<0.01 \\ Max(rotation_{error})<3.00\degree \\ Max(translation_{error})<0.50m \\ inliers_ration>50\%Eigenvalue(ξ^ij)<0.01Max(rotationerror)<3.00°Max(translationerror)<0.50minliersration>50%

[4]方法
讲回环融入之前错误的回环地图,这是一个PGO问题;定义损失函数为当前帧与回环检测帧之间变换的 se(3)\mathfrak{s e}(3)se(3) 李代数:
rij(ξiw,ξjw)=log⁡(exp⁡(ξ^ij)⋅exp⁡(ξjw)⋅exp⁡(ξiw)−1)\mathbf{r}_{i j}\left(\boldsymbol{\xi}_{i w}, \boldsymbol{\xi}_{j w}\right)=\log \left(\exp \left(\hat{\boldsymbol{\xi}}_{i j}\right) \cdot \exp \left(\boldsymbol{\xi}_{j w}\right) \cdot \exp \left(\boldsymbol{\xi}_{i w}\right)^{-1}\right)rij(ξiw,ξjw)=log(exp(ξ^ij)exp(ξjw)exp(ξiw)1)
其中运算:
log:SE(3)−>se(3)exp:se(3)−>SE(3)log: SE(3)->\mathfrak{s e}(3) \\ exp:\mathfrak{s e}(3)->SE(3)log:SE(3)>se(3)exp:se(3)>SE(3)
PGO问题可以使用g2o库中优化函数解出;

(1)Optimazation

分析
PL-SLAM中关于回环检测的部分的相关函数有:

insertKFBowVectorPL();

is_candidates();

第一个函数计算出相似度评分,第二个函数给出最小相似评分(相当于一个阈值);直接提高某一帧的相似度评分并不能直接将此帧作为候选帧,所以我们的优化策略放在第二个函数中;

方法
我们想着可以利用里程计几何关系并行判断回环,当里程计检测到回到回环时,我们可以降低最小相似评分,从而使最相似的帧可以通过候选判断;
这里我们定义出最小相似度系数:
SimminSim_{min}Simmin
我们知道漂移问题影响最大的不是位移里程计(因为其位移时特征的深度尺度是可估计的),而是偏航角度,当偏航角越大时,视觉里程计的置信度就越低,我们定义里程计置信度:
CovdCov_{d}Covd
可以知道它与最后一次回环纠正后的偏航角负相关:
Covd∝1Δyawinit+1Cov_{d}∝\frac{1}{\Delta{yaw_{init}}+1}CovdΔyawinit+11
于此同时得到形状相似判断最相似的帧FramejFrame_jFramej与当前帧FrameiFrame_iFramei,可以计算出位置与偏航角的偏差,k1k_1k1为一个比例系数:
Diff=Δyawij∗k1+ΔTranijDiff=\Delta{yaw_{ij}}*k_1+\Delta{Tran_{ij}}Diff=Δyawijk1+ΔTranij
之后我们就可以得到我们的最小相似度系数,k2k_2k2也是一个小于1的比例系数:
Simmin=k2∗Diff∗Covd=(Δyawij∗k1+ΔTij)Δyawinit+1∗k2Sim_{min}=k_2*Diff*Cov_d=\frac{(\Delta{yaw_{ij}}*k_1+\Delta{T_{ij}})}{\Delta{yaw_{init}}+1}*k_2Simmin=k2DiffCovd=Δyawinit+1(Δyawijk1+ΔTij)k2
之后选择一个很好的表达本问题的负相关函数即可。

再分析
我们这里得到的最小相似度系数一定小于1,所以我们的方法肯定可以提高算法的召回率;但同时这个方法的不足也很明显,首先以上公式都是线性相乘,并没有多考虑一下置信度会带来哪些影响,同时也没有结合之前的路径信息来判断回环。

召回率过高的缺点
召回率高的同时准确率会下降,这样后面对位姿图验证(这点很关键,有错误的回环纠正将对建图是毁灭性影响)的次数就会增多,提升了系统的运算量,可能会降低系统实时性。

### PL-SLAM 算法介绍 PL-SLAM 是一种基于点和线特征的实时单目视觉同步定位与建图(SLAM)系统[^1]。此算法在 ORB-SLAM 的基础上进行了改进,加入了处理线特征的能力,从而提高了系统的稳定性和准确性。 #### 构架概述 PL-SLAM 不仅限于前端设计,而是提供了一个完整的框架,涵盖了地图创建、特征跟踪、局部映射以及闭环检测等多个方面[^3]。其中: - **地图**由一系列关键帧构成,每个关键帧都包含了所观测到的环境特征(如点和平面),并记录了其三维姿态; - **路标点**用于表示环境中显著的位置标记,它们不仅保存着自身的空间坐标还携带描述符以便识别; - 对于**共视图**而言,当两个节点间共享至少20个共同可见地标时,则认为二者存在连接;而在构建全局结构的关键图中这一阈值提升到了100以上。 ### 实现细节 #### 全局重定位 针对可能出现的姿态丢失情况,PL-SLAM采用了增强版的EPnP算法——即 EPnPL决重定位问题。该方法能够有效地应对线特征间的冲突及错误检测,通过最小化已知直线段与其图像投影之间的几何差异来精确定位摄像机位置[^2]。 ```python def epnp_l(lines_3d, lines_2d): """ 使用EPnPL算法相机姿态 参数: lines_3d (list): 世界坐标系下的3D线条列表 lines_2d (list): 图像平面上对应的2D线条列表 返回: pose (Pose object): 计得到的相机姿态对象 """ # 初始化参数... # 执行EPnPL优化流程... return pose ``` #### 特征追踪 每当插入一个新的关键帧时,都会触发一次特征追踪操作,目的是调整当前估计出来的相机运动轨迹使之更加贴合实际观察数据。这一步骤同样依赖于减少重投影误差的原则来进行迭代求最优。 ### 应用场景 由于融合了多种类型的视觉线索,PL-SLAM特别适合应用于那些富含边缘信息但缺乏纹理变化的室内或室外环境下,比如走廊、隧道等狭窄通道内的导航任务。此外,在机器人自主探索未知区域或是无人机低空飞行避障等方面也有广泛的应用前景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值