30

ORB-SLAM3系列-多地图管理

 3 years ago
source link: https://mp.weixin.qq.com/s/do-m9TuLX5-7OZPstMm_pw
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ORB-SLAM3系列-多地图管理

Original Liam 计算机视觉工坊 10/13
收录于话题
#SLAM

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

Image

论文名称: ORBSLAM-Atlas: a robust and accurate multi-map system 

Image

摘要

利用鲁棒的地图融合方法解决不限数量的子地图融合问题,Altas使SLAM系统变的更加的精准和鲁棒。在tracking线程跟踪失败的时候,系统会构建一个新的子地图。当该地图和先前的子地图有共同部分的时候就会进行地图融合。针对原来的方法中只舍弃特征点数量少的帧,我们也舍去位姿估计不准的帧来构建更加精准的子地图。

本文的贡献

  • 利用atlas来解决不限数量的子地图融合问题。altas有不限数量的子地图关键帧的词袋数据库,保证了地图场景重识别的效率。
  • 多地图的操作算法:新地图生成、在混合地图中重定位和地图融合
  • 在有差的相机位姿的时候评价跟踪失败的方法。这可以避免在闭环的过程中由于高度不确定的位姿导致的位姿图优化误差过大。

ORBLAM-Atlas多地图表示

640?wx_fmt=png
Screenshot from 2020-09-26 08-31-13.pngaltas由无数的子地图组成,每个子地图有自己的关键帧、地图点、共视图和最小生成树。每个地图的参考帧是第一帧上。新来帧只更新altas中的一个地图(active map)。altas中也保存了特别的地图的词袋数据库来识别关键帧。本系统有一个单独的场景重识别的模块,如果两个关键帧都来自active map就会执行闭环检测,如果在不同的地图中就会执行地图融合。

新地图产生的标准

当相机跟踪失败就开始进行重定位,如果重定位过了一段时间也不成功,active map变成了unactive map存储在了altas中。然后一个新地图被初始化,具体的过程参考ORB-SLAM2和ORB-SLAM中的地图初始化过程。评判tracking是否失败的标准:
  • 匹配的特征点的数量:当前帧和局部地图的匹配数量。
  • 相机位姿的observability:如果检测到的点几何条件不好,那么估计的相机位姿也不准(计算出来匹配点的距离大,特征属于不可用的特征)。

相机位姿的observability(可观察性)

利用位姿的协方差矩阵来估计相机的observability,假设每个地图点都估计的很准确,因为不能实时的计算每一帧地图点的协方差矩阵。信息矩阵Ωij表示第j个地图点在第i帧中的不确定性。相机i的不确定性是由其和局部地图匹配的特征点决定的。估计相机六自由度位姿为T̂ _i,w,属于李群。除此之外,利用6个参数εi的无偏高斯向量对位姿的不确定性进行编码,该向量定义了在T̂ _i,w周围逼近位姿真值的李代数:
640?wx_fmt=png
其中Exp(ε_i)把一个六维的向量直接转换为了李代数,其协方差矩阵C编码为相机位姿估计的准确性,而J矩阵为相机位姿对观测的地图点的雅各比矩阵。由于平移的幅度很小,所以在评判中仅用C的对角线上表示误差的值。
640?wx_fmt=png

多地图中的重定位

如果相机跟丢了,利用当前帧查询Atlas DBoW的数据库。这个查询能在所有地图中找相似的关键帧。一旦有了候选关键帧,地图和匹配的地图点,就可以按照ORB-SLAM中进行重新定位。主要包括利用PnP进行鲁棒的位姿估计和RANSAC阶段,然后进行匹配搜索、进行只优化位姿的非线性优化。

相似地图融合

执行ORBSLAM中的场景重识别来检测相似的地图进行融合,场景重识别的过程中需要检测和共视图中关键帧相连的三个关键帧来避免假阳性的检测。另外在地图融合的过程中,active map和具有共同区域的其他地图合并,然后用合并完的地图作为active map。
  • 1)在两个地图中检测共同的部分。场景重识别模块提供了两个匹配的关键帧,K_a和K_s和两个地图M_a和M_s中匹配的地图点。
  • 2)估计地图融合的变换矩阵。这里需要双目的SE(3)或者单目的Sim(3)变换(单目没有尺度信息,所以需要估计Sim3变换),这样就可以在世界参考帧中对齐两个地图。基于M_a和M_s两个地图的匹配关系,利用混合Horn method(Closed-form solution of absolute orientation using unit quaternions)的RANSAC来进行初始的估计,利用估计出来的位姿K_s来指导匹配,利用非线性优化两个地图的重投影误差得到两个地图间的匹配得到最终两个地图之间的位姿T_Wa, Ws。
  • 3)融合地图。利用位姿T_Wa, Ws把M_s中的所有关键帧和地图点都投影到M_a中;检测重复的地图点融合;把M_s和M_a中的所有关键帧和地图点放在M_m中;最后把M_s和M_a的生成树和共视图合并成M_m的生成树和共视图。
  • 4)在连接区域的局部BA。根据包含了与k_a共视的所有关键帧的M_m共视图。为了固定测量的自由度,在M_a中固定的关键帧在局部BA中保持固定,而在非线性优化过程中,其余关键帧被设置为可优化量。利用第二个重复点检测和融合来更新M_m共视性图。
  • 5)位姿图优化。最后利用位姿图优化来优化M_m的位姿。
地图融合线程和tracking线程并行运行,在融合之间有时候会触发全局BA,这时候局部建图会停止来避免在atlas中加入新的关键帧。如果全局的BA线程在运行,局部建图也会停止,因为生成树在BA后会发生改变。tracking线程会在旧的active地图中保持实时的运行。一旦地图融合完成,就重启局部建图线程。全局BA结束了以后也会重启局部建图线程来接收新的数据。本文仅做学术分享,如有侵权,请联系删文。下载1在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。下载2在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。下载3在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

640?wx_fmt=jpeg▲长按加微信群或投稿

640?wx_fmt=jpeg

▲长按关注公众号

觉得有用,麻烦给个赞和在看~640?wx_fmt=gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK