(一)单目VSLAM特点介绍:
1、ORB-SLAM2
- 工作流程:
- 主要模块:
- 前端:ORB特征提取匹配,估计相机位姿;根据跟踪地图点数的减少选择关键帧;
- 后端:BA优化局部地图(关键帧和地图点),此处的局部地图是当前关键帧的Covisibility Graph(与当前关键帧有共视点的关键帧);
- 回环检测:通过DBOW在关键帧序列中选出相似帧,计算Sim3(由于单目的尺度不确定导致尺度漂移,故采用相似变换将尺度优化也考虑进来);检测出回环的地方进行点云地图融合,并优化Essential Graph(Covisibility Graph的Spanning Tree应该是MST);
- 采用三线程结构,有非常好的跟踪和建图效果,能够保证轨迹与地图的全局一致性。
- 对特征点提取及匹配方案进行优化,如提取均匀分布特征点、循环优化减少Outlier,这使得ORB-SLAM的鲁棒性很高;
- 受车辆、行人等动态物体的影响大。
- 基于特征点,每次跟踪位姿都要提取匹配特征点,较为耗时;
- 系统较为精细庞大,三线程结构对搭载平台要求较高,目前多在PC运行;
- 只能建稀疏特征点地图,无法提供导航避障功能,只能提供定位;
2、LSD-SLAM
- 前端跟踪:用之前一帧的位姿作为初始值,直接法求解跟踪获得每一新帧相对于当前关键帧的se(3);
- 深度图估计:如果新帧跟关键帧变化较小,就通过small-baseline stereo comparison方法更新关键帧深度图;若变化较大就创建新关键帧,此新关键帧通过与最近的关键帧匹配来初始化。
- 地图优化:跟踪两两邻近关键帧间的sim(3),作为下一步全局优化的edge;位姿图优化+闭环检测(用特征点的词袋方法)+尺度漂移检测。kao
- 可在 CPU 上实现半稠密场景的重建;
- 考虑了像素梯度与直接法的关系,以及像素梯度与极线方向在深度估计中的角度关系;使深度估计精度有了较大提高;
- 用sim3作全局优化,可以减小尺度漂移,并可实现尺度可视化。
- 对相机内参和曝光非常敏感,并且在相机快速运动时容易丢失。
- 回环检测时还是得用特征点,不是单纯的直接法SLAM。
3、SVO
- 前端跟踪:和上一帧通过光流法跟踪,求位姿初始值,然后通过局部地图在图像上的投影用直接法优化位姿;通过平移量判断是否创建新关键帧,创建关键帧后均匀提取新特征点;
- 深度滤波(地图优化):每次跟踪完后,获得帧间位姿,然后三角化获得点云深度,然后基于均值——高斯滤波器对逆深度进行融合,以优化地图。
- 特征点与直接法的混合使用,使得它速度极快,在低端计算平台上也能达到实时性,而在 PC 平台上则可以达到 100 多帧每秒的速度;
- 框架简单,迁移容易。
- 在单目初始化时,使用了分解 H 矩阵而不是传统的 F 或 E 矩阵的方式,这需要假设特征点位于平面上;
- 目标应用平台为无人机的俯视相机,细节是围绕这个应用设计的,使得它在平视相机中表现不佳:如在关键帧选择时,使用了平移量作为确定新的关键帧的策略,而没有考虑旋转量;
- 为了速度和轻量化,舍弃了后端优化和回环检测部分,也基本没有建图功能。
(二)双目/RGB-D VSLAM:
1、RTAB-MAP(RGB-D/双目)
基于ROS的整个系统架构
RTAB-MAP的核心——VO模块
- VO模块:提取GFTT/BRIEF特征,并进行帧间光流追踪,通过RANSC PnP方法获得位姿初始值;再通过帧与局部地图点特征匹配,用BA方法更新位姿。
- 循环回环检测:ROS中的STM节点从图像中提取视觉特征(SIFT, SURF, ORB 等), 然后将其量化成"视觉词袋",创建定位点;每次检测相似帧时都是由WM从LTM中选择可能性大的定位点(每个定位点都有权重,权重随着被访问次数增加而增加)来进行比对,以优化运行速度;
- 后端优化:g2o/GTSAM(位姿图或因子图)优化。
- 建图:可以建2D/3D占据栅格图/八叉树图/点云图。
- 适用于长期和大规模环境在线建图的要求;
- 里程计鲁棒性较好,且低漂移;
- 提供相应软件包,地图生成开发实用且简便。
- 方案偏向于商品化,二次开发难,适合用来玩。
2、RGBD-SLAM-V2
- 前端:从每一帧的RGB提取特征,计算描述子,RANSAC ICP计算两帧之间的运动估计,并提出了一个EMM(环境测量模型)判断运动估计是否可以接受;
- 后端优化:也是词袋检测,然后G2O位姿图优化;
- 建图:可建立八叉树地图。
- 优点:二次开发较容易。
- 缺点:实时性相对较差,相机要慢速运动。
3、Elastic Fusion
- 首先将输入的一帧RGB和深度图转换为普通的RGB图像和点云;
- 前端Tracking部分:一方面,几何位姿估计:将该帧生成的点云与Surfel模型进行ICP配准,另一方面,光度位姿估计:利用直接法将该帧的RGB图与上一帧RGB图(通过OpenGL得到,后面叙述)配准,对ICP和直接法进行联合优化得到当前帧的相机位姿;
- MAP优化:对当前帧进行回环检测,若存在回环,则根据回环建立的约束,优化Deformation Graph变形图,并用优化后的变形图更新Map,若不存在回环,则根据当前帧的相机位姿将当前帧的RGB图像和点云融合到Surfel模型中,融合使用 openGL 的 shading language;
- 根据当前帧位姿从模型投影出当前视角下的深度图和RGB图像并判断投影出的RGB图是否加入关键帧。
- 直接对MAP进行优化,通过优化的MAP获得精确定位;
- 实现基于RGB-D相机的实时密集视觉SLAM。
(三)VSLAM+IMU(VIO)方案:
1、VIORB-SLAM2(单目+IMU)
- 工作原理:在ORB-SLAM2上改进而来,还没有深入了解;
- 前端:与ORB-SLAM师出同门,都采用orb特征点,通过特征匹配结合局部地图估计运动;
- 后端:?
- 优点:精度高,较为成熟
- 缺点:由于单目+特征匹配,鲁棒性较低
2、VINS-MONO(单目)
- 预处理:图像特征光流跟踪;IMU数据预积分;
- 初始化:纯视觉Sfm初始化;Sfm与IMU积分的松耦合;
- 局部BA联合优化和重定位:基于滑动窗口的非线性优化实现紧耦合;
- 回环检测与全局位姿图优化:四自由度位姿图优化。
- 用紧耦合方法实现的,通过单目+IMU恢复出尺度;
- 采用光流跟踪,跟踪鲁棒性较好,可实用与快速场景;
- 估计精度较高。
3、VINS-FUSION(双目)
- 工作原理: VINS-FUSION是VINS-MONO的进化版,共有四个版本:单目+imu;纯双目;双目+imu;双目+imu+GPS;最主要的版本就是-双目+imu+GPS,对比于VINS Mono,主要增加了global_fusion包,用来融合GPS以及视觉IMU定位的结果。
- 优点:
- 可以静止进行初始化;
- 尺度信息不一定完全依靠IMU(有双目),不会造成尺度不可关的情况;
- 鲁棒性上,双目明显优于单目。
- 缺点:由于视觉误匹配等各种原因,双目的精度会比单目差一点。
4、ORB-SLAM3(单目/双目+IMU)
相比于ORB-SLAM2加入了ATLAS成为了多地图系统;加入IMU可以进化为VIO-slam;
- 前端TRACKING:根据当前的active地图,实时地跟踪最新一帧的位置,利用最小化重投影误差的方式实现位姿的最大后验估计MAP。决定新一帧是否作为关键帧加入地图也是在这个线程中完成的。跟踪线程接受IMU、Frame输入,IMU 被预积分处理,而Frame被提取ORB特征,跟踪方法与2代类似。
- 局部建图优化:active地图加入新关键帧,在添加关键帧的时候,重复的关键点被移除。VI-Bundle Adjustment优化当前被插入帧前后窗口地图。
- 闭环检测:还是基于词袋法,将关键帧和整个Atlas地图集关键帧进行比较;找到相似后利用时间+几何一致性检验;
- 地图融合:关键帧和整个Atlas地图集关键帧进行比较,如果检测到两关键帧是同一地点,分为两种情况:若被召回帧是当前的active地图中的一部分,则需要进行loop correction回环矫正,在回环矫正之后,在另一个线程中进行,全局位姿图进行BA优化,整体的地图一致性得到了提升;若被召回帧是属于一个non-active的map,两个地图则会被合并成一个地图并将大地图设置为当前的active地图。
- 由于加入多地图概念,相比于ORB-SLAM2鲁棒性更强,在跟踪定位失败后,可以继续建立新图,并在回环检测召回时可以进行地图缝合;
- 加入IMU鲁棒性有了很大提高;
- 提供多种相机模型。
- 缺点:初始化时,使用视觉与IMU独立初始化再进行联合初始化,初始化速度较慢。
(四)各方案综合对比:
类别 | 特点 | 算法 | 定位精度 | 鲁棒性 | 建图 | 开发性 | 实时性 |
纯单目 | 尺度不确定性导致需要初始化,同时由于尺度不确定可以实现大尺度范围下工作 | LSD-SLAM | | 在光照变化较小情况下,跟踪稳定性好,鲁棒性好 | 半稠密点云 | 易 | 可在CPU 实时运行半稠密建图,30帧 |
ORB-SLAM2 | | 慢速运动下鲁棒性好,可实现重定位 | 稀疏 | 易 | 由于基于特征点,运行速度较慢 |
SVO | | 源码只适用平面场景,平移运动 | 稀疏 | 易 | 轻便,运行速度快 |
纯双目 /RGB-D | 鲁棒性较单目高;由于视觉误匹配等各种原因,双目的精度会比单目差一点 | RTAB-MAP | | 相对于RGBD-SLAMV2较好 | 点云/占据栅格图/八叉树图 | 难 | 在ROS下,可以在大规模场景中流畅运行 |
RGBD-SLAM-V2 | | | 点云/八叉树 | 易 | 实时性较差,必须慢速运动 |
Elastic Fusion | 定位精度较位姿优化方法低些 | | SURFEL图(精细地图) | | |
单目+IMU | IMU 的引可在快速运动时能够减少一些丢失,鲁棒性提高;而精度上与 VO 相近或略有下降 | VIORB-SLAM2 | 由于加入IMU误差项,较未加入IMU的版本精度低 | | | | |
VINS-MONO | 较VIORB-SLAM2高 | | | | |
ORB-SLAM3 | | 鲁棒性高,跟踪失败仍能继续工作 | | | |
双目+IMU | VINS-FUSION | 较VINS-MONO低 | 鲁棒性高于VINS-MONO | | | |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)