0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OV2SLAM(高速视觉slam)简析

3D视觉工坊 来源:古月居 2023-03-21 17:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

0. 简介

视觉里程计最近几年越来越受到学术界以及工业界的认可,以ORB和VINS为代表的视觉SLAM已经可以满足绝大多数场景,而OV2SLAM在其他VSLAM中脱颖而出,其实时性以及具体的回环性能在测试中都得到了认可。

1.OV2SLAM与ORB-SLAM2的对比

下图为OV2SLAM的示意图

172c802e-bbd6-11ed-bfe3-dac502259ad0.png

下图为ORB-SLAM2示意图

17409a3c-bbd6-11ed-bfe3-dac502259ad0.png

下面是两个算法的对比

175c101e-bbd6-11ed-bfe3-dac502259ad0.png

我们从上表中可以看到相比于ORB-SLAM2而言,OV2SLAM有以下四个主要的区别点

1.放弃了ORB算子,采用了LK光流来代替。这样可以大大的节省前端特征点提取的时间

2.在输出实时pose的时候,ORBSLAM2精度比OV2SLAM高,相比于ORBSLAM2使用TrackLocalMap来进行motion-only的BA而言,OV2SLAM输出的实时pose是通过PnP计算出来的。虽然OV2SLAM也有TrackLocalMap,但是他这一步仅进行特征点的re-track, 没有进行位姿计算。

3.在回环检测部分ORBSLAM2使用的是DBOW 离线训练字典,而OV2SLAM使用的是iBowLCD 在线构建字典,这就导致OV2SLAM可以适应更多的场景

4.最后也是最关键的就是全局位姿输出,ORBSLAM2使用的是FullBA 优化来优化全部关键帧的位姿和3D点,而OV2SLAM使用的是looselyBA,这个优化方式仅优化当前帧和回环帧关联的信息。所以使用FullBA 可以影响到包括losselyBA以及其余关键帧的pose和3D点。

2 视觉前端

这部分内容其实都大同小异,值得一提的是:

图像预处理(image pre-processing )关键点追踪(keypoint tracking)离群值滤波(outlier filtering)位姿估计(pose estimation)触发条件,创建关键帧(keyframe creation triggering)

17797bae-bbd6-11ed-bfe3-dac502259ad0.png

下面我们来简述一下具体流程:

1.图像预处理:通过CLAHE进行对比度增强,这既增加了动态范围,又限制了曝光适应引起的强度变化。

2.关键点追踪:关键点跟踪是通过引导的从粗到精的光流法来执行的。使用具有9×9像素窗口和金字塔比例因子为2的反向组合Lucas-Kanade(LK)算法[12]的金字塔实现来单独跟踪关键点。

这里提到2D点和3D点这两种,对于3D关键点(即已经三角化的3D关键点),会先使用匀速运动模型估计当前帧的初始位姿,然后将3D keyoints对应的3D点投影到当前帧,作为该3D keypoints在当前帧的初始位置。

对于2D关键点-即那些没有关于其真实3D位置的先验信息的关键点,会将其在当前帧的初始位置设置为在上一帧中的位置

3.离群值滤波:采用基于核线约束的RANSAC滤波,使用3D关键点估计基础矩阵(Essential Matrix)然后用它来过滤不一致的2D关键点。

4.位姿估计:使用稳健的Huber成本函数最小化3D关键点重投影误差来执行姿态估计,也就是我们上文提到的PnP计算位姿并更新运动模型

5.创建关键帧:跟踪的3D关键点的数量w.r.t.。最后一个关键帧低于阈值(跟踪的关键点少于85%),或者如果检测到明显的视差(平均15个像素的未旋转关键点运动),则会创建新的关键帧。

值得一提的是OV2SLAM将每张图像分为nbwcells*nbhcells个网格,是基于网格的特征提取。每一帧的更新也是只保留了一个指向当前帧的指针pcurframe,用于实时记录当前帧跟踪到的2D、3D特征点以及位姿信息。

接受到新图像时只更新时间戳和帧号,在光流跟踪以及计算位姿后分别更新当前帧的特征点、位姿信息并更新运动模型。

3. 建图线程

主要处理两个任务,负责三角化以及局部地图的跟踪,在双目的配置情况下会增加立体匹配的功能。

3.1 三角化

mapping中的三角化是整个系统中唯一生成3D点的地方,包括初始化成功后的生成初始地图。三角化的主要功能是在当前关键帧与共视关键帧之间产生新的地图点,使得跟踪更稳。

具体过程为:对于当前关键帧中的每一个2D特征点,将当前2D点与第一次观测到该2D点的关键帧中的对应2D点进行三角化。相比ORB-SLAM中将当前关键帧与其共视程度最高的20帧至少有15个共视点的相邻关键帧通过词袋进行特征匹配,再将成功匹配的点对进行三角化的策略,二者的效果有待进一步实验对比

下图为ORB-SLAM的LocalMapping中的三角化搜索范围。这个操作和ORB-SLAM2类似

17b51024-bbd6-11ed-bfe3-dac502259ad0.png

3.2 暂时三角化

通常用于单目初始化3D地图,本文发现在双目情况下可以用于在当前关键帧之前,已经正确追踪到,但找不到双目匹配的关键点。这时所有成功三角化的地图点立刻应用于前端进行定位,然后这些3D位置通过BA进行重新优化。

3.3 局部地图追踪

类似于ORB-SLAM2局部地图,局部地图包括当前关键帧或共视图关键帧观察到的3D地图点。

局部地图追踪的目标是找出属于局部地图的3D地图点是否可以与当前帧的关键点相匹配。这种重追踪的操作可以看做是基本的回环检测。

任意这样的3D地图点,在当前关键帧的投影与一个关键点的距离少于两个像素点时被定义为候选匹配。计算3D地图点和其他几个候选点的距离,接受最近距离的候选。

4. 状态估计线程

使用局部BA来精炼已选择的关键帧位姿和3D地图点位置,此外过滤冗余的关键帧来限制外来局部BA的运行时间。

4.1 局部地图的优化

这里的优化与ORB-SLAM相近,优化当前关键帧和与其至少有25个共视点的相邻关键帧的位姿以及这些关键帧对应的地图点的3D坐标,对于那些不在这些关键帧范围内,但是可以观测到这些地图点的关键帧,也将观测添加到BA中但是不对这些关键帧的位姿进行优化。

4.2 关键帧过滤

删去关键帧的标准为:该关键帧观测到的95%3D点已经被至少其他4个关键帧观测到

5. 在线词袋回环检测器

回环检测主要负责检测回环和重定位,即校正当前姿势估计和当前帧与已检测到LC的已传递关键帧之间的估计轨迹。这是一个重要的创新点。主要流程主要分为关键帧预处理、使用iBoW-LCD算法检测候选关键帧、验证候选关键帧、位姿图优化以及looseBA。

5.1 关键帧预处理以及选取候选关键帧

作者在论文中提到,出于定位的考虑,OV2SLAM并不会跟踪太多的特征点(大概只有200多)。在这里为了更新词袋树,对每幅图像额外提取300个FAST特征并计算其描述子,然后将此关键帧传给iBoW-LCD用于更新词袋树,当关键帧数量大于100帧时,在词袋树中查找当前关键帧的闭环候选关键帧。

5.2 验证候选关键帧

发现一个好的LC候选,首先确定不是一个假阳性。对当前关键帧Ki和候选关键帧Klc,首先应用一个k最近邻暴力匹配算法在这两个关键帧的描述子中。

而不明确的匹配首先由经典的ratio test进行过滤。然后使用RANSAC方法进行计算基础矩阵Essential Matrix 以便只保持满足极线几何(对极几何)的匹配。

使用这种内在维持方法,我们使用P3P-RANSAC方法用回环候选关键帧Klc观测到的剩余3D地图点对当前关键帧Ki进行一个假设位姿计算。

若计算出一个可靠位姿,由大量内参器(inliers)确定,我们得到候选关键帧Klc的局部地图,然后搜索在当前关键帧Ki的额外的匹配,将3D地图点的投影使用P3P的方法计算位姿。

然后,使用等式(1)基于到目前为止发现的所有匹配来精炼假设位姿,并且基于由Huber鲁棒成本函数检测到的离群值来执行最后的过滤步骤。

5.3 位姿图优化

最终如果保留30个内点,我们验证回环检测,并执行位姿图优化(PGO)来矫正完整轨迹。

目的是将误差均摊到检测到的关键帧与当前关键帧之间的所有关键帧之间。

5.4 looseBA

与ORB-SLAM中的fullBA相比,OV2SLAM只对受闭环检测影响的关键帧以及地图点进行优化,这样减轻了BA的负担,但是仍然要花费数秒的时间

6. OV2SLAM总结

OV2SLAM整体精度比ORBSLAM2略微下降,但是速度明显提升。通过PnP、looselyBA 等方法能够快速的构建出我们想要的地图。对于OV2SLAM而言相较于ORBSLAM2增加了异常点剔除、估算位姿准确性等操作。

当然对于ORB-SLAM3来说除了会判断远点和近点,远点只用于优化旋转,尺度信息只能依靠近点以外,还是用了极大后验概率(MAP)估计应用于利用几何BA(光束平差法)最小化特征重投影误差中。并将历史数据一起加入约束中一起计算BA。

除此以外,ORB-SLAM3中还提出新的位置识别算法,现在当前候选关键帧进行几何一致性检测,然后检测候选关键帧与三个共视关键帧的局部一致性,以计算成本为代价换来高召回率。

除此以外相较于这两篇文章,ORB-SLAM3还提出了 ORB-SLAM Atlas,该地图集提供了ORB-SLAM3的多地图SLAM特性,ORB-SLAM地图集中存有一系列非活动的地图,并且这些地图可以进行位置识别、相机重定位、回环检测以及精准的无缝地图拼接。

7. OV2SLAM 安装

安装 OpenGV

git clone https://github.com/laurentkneip/opengv
cd opengv
mkdir build
cd build/
cmake ..
sudo make -j4 install

安装OV2SLAM

xxxxxxxxxx
cd ~/catkin_ws/src/
git clone https://github.com/ov2slam/ov2slam.git
cd ~/catkin_ws/src/ov2slam
chmod +x build_thirdparty.sh
./build_thirdparty.sh
cd ~/catkin_ws/src
catkin_make --pkg ov2slam

运行 OV2SLAM

xxxxxxxxxx
rosrun ov2slam ov2slam_node /home/crp/catkin_ws/src/ov2slam/parameters_files/accurate/euroc/euroc_mono.yaml
cd ~/catkin_ws/src/ov2slam
rviz -d ov2slam_visualization.rviz
rosbag play MH_04_difficult.bag




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    36

    文章

    4578

    浏览量

    175785
  • SLAM
    +关注

    关注

    24

    文章

    456

    浏览量

    33185
  • RANSAC
    +关注

    关注

    0

    文章

    10

    浏览量

    8051
  • orb
    orb
    +关注

    关注

    0

    文章

    21

    浏览量

    10149

原文标题:经典文献阅读之—OV2SLAM(高速视觉slam)

文章出处:【微信号:3D视觉工坊,微信公众号:3D视觉工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是激光雷达 3D SLAM技术?

    在智能移动设备自主运行的赛道上,激光雷达3DSLAM技术正成为破局关键,但多数人对其认知仍停留在表层。要读懂这一核心技术,不妨先回溯“SLAM”的本质——SLAM
    的头像 发表于 12-02 19:23 46次阅读
    什么是激光雷达 3D <b class='flag-5'>SLAM</b>技术?

    FPGA和GPU加速的视觉SLAM系统中特征检测器研究

    特征检测是SLAM系统中常见但耗时的模块,随着SLAM技术日益广泛应用于无人机等功耗受限平台,其效率优化尤为重要。本文首次针对视觉SLAM流程开展硬件加速特征检测器的对比研究,通过对比
    的头像 发表于 10-31 09:30 296次阅读
    FPGA和GPU加速的<b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b>系统中特征检测器研究

    自动驾驶中如何将稀疏地图与视觉SLAM相结合?

    [首发于智驾最前沿微信公众号]在自动驾驶场景中,稀疏地图通常是由一系列关键帧和若干三维稀疏特征点构成的地图,每个特征点包含三维坐标和描述外观的描述子;而视觉SLAM是运行在车辆上的实时算法,它一边
    的头像 发表于 10-28 09:07 456次阅读
    自动驾驶中如何将稀疏地图与<b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b>相结合?

    全新轻量级ViSTA-SLAM系统介绍

    无需相机内参、极致轻量的前端(前端模型大小仅为同类35%),实时单目视觉SLAM,ViSTA-SLAM。与现有方法相比,ViSTA-SLAM不仅更轻、更快,在相机跟踪和密集3D重建质量
    的头像 发表于 09-22 15:53 626次阅读
    全新轻量级ViSTA-<b class='flag-5'>SLAM</b>系统介绍

    一种适用于动态环境的自适应先验场景-对象SLAM框架

    由于传统视觉SLAM在动态场景中容易会出现严重的定位漂移,本文提出了一种新颖的基于场景-对象的可靠性评估框架,该框架通过当前帧质量指标以及相对于可靠参考帧的场景变化,全面评估SLAM的稳定性。
    的头像 发表于 08-19 14:17 639次阅读
    一种适用于动态环境的自适应先验场景-对象<b class='flag-5'>SLAM</b>框架

    基于深度学习的增强版ORB-SLAM3详解

    ORB-SLAM3虽是当前最先进的SLAM之一,但由于使用传统的ORB(定向FAST和旋转BRIEF)特征,在尺度、旋转和光照发生显著变化时可能会表现出局限性。
    的头像 发表于 07-14 17:21 1264次阅读
    基于深度学习的增强版ORB-<b class='flag-5'>SLAM</b>3详解

    一种适用于动态环境的实时RGB-D SLAM系统

    近期用于视觉SLAM的3D高斯泼溅(3DGS)技术在跟踪和高保真建图方面取得了显著进展。然而,其顺序优化框架以及对动态物体的敏感性限制了其在现实场景中的实时性能和鲁棒性。为此,我们提出
    的头像 发表于 07-04 15:14 966次阅读
    一种适用于动态环境的实时RGB-D <b class='flag-5'>SLAM</b>系统

    一种适用于动态环境的3DGS-SLAM系统

    当前基于神经辐射场(NeRF)或3D高斯泼溅(3DGS)的SLAM方法在重建静态3D场景方面表现出色,但在动态环境中的跟踪和重建方面却面临着挑战。
    的头像 发表于 06-13 10:10 990次阅读
    一种适用于动态环境的3DGS-<b class='flag-5'>SLAM</b>系统

    三维高斯泼溅大规模视觉SLAM系统解析

    近期兴起的神经辐射场(NeRF)与三维高斯泼溅(3DGS)技术在视觉SLAM中展现出令人鼓舞的突破性成果。然而,当前主流方法多依赖RGBD传感器,并且仅适用于室内环境。在大规模室外场景中的重建鲁棒性
    的头像 发表于 05-27 14:13 1129次阅读
    三维高斯泼溅大规模<b class='flag-5'>视觉</b><b class='flag-5'>SLAM</b>系统解析

    【「# ROS 2智能机器人开发实践」阅读体验】视觉实现的基础算法的应用

    SLAM在结构化环境中更稳定,而视觉SLAM(如ORB-SLAM3)更适合动态场景。 SLAM Toolbox的实践应用
    发表于 05-03 19:41

    【「# ROS 2智能机器人开发实践」阅读体验】+ROS2应用案例

    地图构建,包括算法原理介绍、安装与配置方法、仿真环境中的SLAM以及真实机器人上的SLAM。 这一过程不仅涉及到计算机视觉和机器人学的知识,还需要对ROS 2的节点管理和数据处理有一定
    发表于 04-27 11:42

    一种基于点、线和消失点特征的单目SLAM系统设计

    本文提出了一种稳健的单目视觉SLAM系统,该系统同时利用点、线和消失点特征来进行精确的相机位姿估计和地图构建,有效解决了传统基于点特征的SLAM的局限性。
    的头像 发表于 03-21 17:07 831次阅读
    一种基于点、线和消失点特征的单目<b class='flag-5'>SLAM</b>系统设计

    托盘“智”运,SLAM导航 地牛式AGV机器人,“7*24小时”工作!

    AGV地牛小巧灵活,载重大,采用激光SLAM导航,可智能控制路线。支持定制化云平台监控,多级安全措施保障安全。适用于多行业仓储物流,提高搬运效率,降低人力投入。
    的头像 发表于 02-11 17:56 689次阅读
    托盘“智”运,<b class='flag-5'>SLAM</b>导航  地牛式AGV机器人,“7*24小时”工作!

    一种基于MASt3R的实时稠密SLAM系统

    精心设计的集成式硬件与软件堆栈,实现稳健且精准的视觉SLAM已成为可能。然而,SLAM尚未能成为一种即插即用的算法,因其需要硬件方面的专业知识以及校准操作。即便对于仅配备单个摄像头且无诸如IMU等额外传感器的最
    的头像 发表于 12-27 15:25 2276次阅读

    用于任意排列多相机的通用视觉里程计系统

    如何让多相机视觉SLAM系统更易于部署且对环境更具鲁棒性?本文提出了一种适用于任意排列多相机的通用视觉里程计系统。在KITTI-360和MultiCamData数据集上验证了该方法对于任意放置相机的鲁棒性。与其他立体和多相机
    的头像 发表于 12-13 11:22 1145次阅读
    用于任意排列多相机的通用<b class='flag-5'>视觉</b>里程计系统