Vslam

(一)单目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图(精细地图)  单目+IMUIMU 的引可在快速运动时能够减少一些丢失,鲁棒性提高;而精度上与 VO 相近或略有下降VIORB-SLAM2

 

由于加入IMU误差项,较未加入IMU的版本精度低

    VINS-MONO

 

较VIORB-SLAM2高

    ORB-SLAM3 鲁棒性高,跟踪失败仍能继续工作   双目+IMUVINS-FUSION较VINS-MONO低鲁棒性高于VINS-MONO    

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注