版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三种典型的视觉SLAM方法对比分析目录TOC\o"1-3"\h\u21875三种典型的视觉SLAM方法对比分析 1152431.1ORB-SLAM 1245253.1.1主要流程 1320873.1.2特点 471613.1.3配置方法 5224661.2VINS-Fusion 794851.2.1主要流程 792583.2.2特点 8304703.2.3安装方法 9159481.3LSD-SLAM 9224221.3.1主要流程 929269dist(ξji):=ξjiTWξji 4726(3.1) 10134161.3.2特点 1133941.3.3安装方法 11在视觉SLAM的发展历程中,出现了很多开源SLAM方案,例如2007年A.J.Davison等人提出的MonoSLAM、2014年Forster等人提出的SVO、2014年J.Engle等人提出的LSD-SLAM、2015年RaulMur-Artal和JuanD.Tardos等人提出的ORB-SLAM、2017年TongQin等人提出的VINS-Mono等。本章将介绍ORB-SLAM、VINS-Fusion和LSD-SLAM这三种典型方法。ORB-SLAMORB-SLAM提出于2015年,基本延续了PTAM的算法框架。研究人员在设计算法时,希望它能在识别位置时更加通用化,这需要特征具有旋转不变性,而ORB特征恰好满足了这个要求REF_Ref1887\r\h[11]。3.1.1主要流程在ORB-SLAM系统中,作者首次使用三个并行线程的方法完成SLAM,三个线程分别为:追踪、局部地图构建和闭环检测。ORB-SLAM系统框架如下:图3.1ORB-SLAM流程REF_Ref1887\r\h[11]跟踪ORB特征提取提取ORB特征首先要根据图像分辨率进行重采样,构造图像金字塔;然后在金字塔的每层对比像素点与周围像素灰度的差别,提取FAST角点;最后根据保留的FAST角点计算方向和ORB特征描述子。估计相机的初始位姿如果上一帧图像跟踪成功,可以认为相机的运动速率不变,以此来预测当前相机的位姿。但是如果运动模型失效或者相机处于非匀速运动,这时找不到足够的匹配点,需要加大搜索范围以进一步优化当前时刻的相机位姿。通过全局重定位来初始化位姿如果加大了搜索范围还是找不到足够的匹配点,则此时运动模型已经失效,需要选取若干关键帧作为备选匹配帧,计算与地图点云对应的ORB特征,轮流执行PnP算法,利用RANSAC算法迭代计算当前帧的位姿,最后基于找到的所有匹配点对相机位姿进一步优化。跟踪局部地图当获得了相机的初始位姿估计和一组初始特征匹配点后,可以将更多的地图云点投影到图像上,用来搜索更多的匹配点。为了降低完整地图的复杂度,只投影局部地图。局部地图包含与当前关键帧有共同地图云点的关键帧集合K1和与K1在共可视图中相邻的关键帧K2,在K1和K2中搜索当前关键帧可见的地图云点,如果不满足条件就丢弃,最后通过获得的地图云点优化相机位姿。新关键帧的判断标准构建局部地图时会去除冗余关键帧,为了使相机运动时,跟踪具有鲁棒性,需要尽可能快地插入关键帧,要求如下:条件1:全局重定位之后的20帧图像,不能插入关键帧;条件2:局部地图空闲,或上次插入关键帧之后的20帧图像内不能插入关键帧;条件3:当前帧至少跟踪到50个地图点;条件4:当前帧跟踪的点数少于参考帧跟踪的点数的90%。局部地图构建插入关键帧更新共可视图,添加一个关键帧节点Ki,更新关键帧间具有公共地图云点产生的边缘,更新生成树上与Ki有最多公共地图点的关键帧的链接,计算表示关键帧的词袋,用来帮助三角化新的云点建立数据联系。筛选地图云点一个云点必须满足如下两个条件:跟踪线程必须在超过25%的图像中找到该特征点;如果超过一个关键帧创建该地图云点,则该地图云点至少可以被三个关键帧观测到。创建新地图云点通过对共可视图中关联的关键帧Kc中的ORB特征点进行三角化,可以创建新的地图云点。对每个在Ki中未匹配的ORB特征,从其他关键帧的未匹配云点中进行搜索是否有匹配上的特征点,删除不满足对级约束的匹配点。ORB特征点对三角化后,为了将其作为新点插入地图,需要检查两个摄像机的正深度、视差、重投影误差和尺度一致性。局部BA局部BA主要对当前处理的关键帧Ki、所有在共可视图与之关联的关键帧Kc以及所有可以在这些关键帧中看到的地图云点进行优化。局部关键帧筛选为了保持重建的简洁,局部地图会尽量检测冗余关键帧并删除它们。如果至少有其他三个关键帧同时观测到关键帧Kc中90%的点,则认为是冗余的,需要将其删除。闭环检测抽取局部地图的最后一个关键帧Ki,用于检测和闭合回环。检测候选回环首先计算词袋向量及它在共可视图中相邻图像的相似度,保留最低分值,删除分值低于最低分值的关键帧和连接到Ki的关键帧。为了获得候选回环,需要连续检测3个一致的候选回环,它们在共可视图中是相连的关键帧。计算相似变换首先计算ORB特征关联的当前关键帧的地图云点与回环候选关键帧的对应关系。如果有足够多的数据找到了相似变换Sil,就可以优化它,并搜索更多的对应关系。若Sil有足够的有效数据,可以重新优化它,直到候选回环被接受。回环融合回环矫正首先要融合重复的地图云点,在共可视图中插入与回环相关的的新边缘。回环关键帧及其近邻能观测到的所有地图云点都映射到Ki及其近邻中,它的对应匹配点在映射的区域附近小范围内搜索。所有匹配的地图云点和计算相似变换过程中的有效数据进行融合,融合涉及到的所有关键帧都将更新共可视图的边缘,创建的新边缘将用于回环检测。本质图优化通过本质图优化位姿图,可以将回环闭合的误差分散到图像上,优化通过相似变换来矫正尺度漂移。优化后,每个地图云点根据观察到它的关键帧的矫正进行变换。3.1.2特点优点:(1)良好的泛用性。目前ORB-SLAM系统共有三个版本:2015年发布的ORB-SLAM1、2017年发布的ORB-SLAM2和2020年发布的ORB-SLAM3,其中ORB-SLAM1主要针对单目相机,ORB-SLAM2在它的基础上增加了双目相机和RGB-D相机,而ORB-SLAM3则在ORB-SLAM2的基础上增加了广目鱼眼相机,还在单目和双目上融合了IMU。ORB特征计算和匹配的速度很快,同时具有旋转不变性、尺度不变性,可以平衡精度和效率。优秀的回环检测算法。回环检测能够有效地消除累积误差,为后端优化提供更多有效数据。相比于PTAM的双线程结构,ORB-SLAM三线程结构的跟踪和建图效果更好,可以保证轨迹与地图的全局一致性。缺点:ORB-SLAM构建出的地图是稀疏点云图,只能满足定位的需求,无法提供避障、交互等功能。运行前需要读取一个很大的ORB字典,同时计算ORB特征也非常耗时。三线程结构对CPU的要求较高,ORB-SLAM目前只能在计算机上实时运算。3.1.3配置方法编译之前需要安装一些必要的依赖库,按照源码中的README操作即可,编译环境为Ubuntu16.04LTS(ROS-kinetic)。创建ROS工作空间图3.2创建ROS工作空间下载源码图3.3下载源码修改部分文件内容将ORB_SLAM文件夹下manifest.xml文件里<dependpackage="opencv2"/>这一行删掉或注释掉。ORB_SLAM1/src文件夹下有个ORBextractor.cc文件,添加两个头文件:图3.4添加头文件打开ORB_SLAM1/Thirdparty/g2o/g2o/solvers/linear_solver_eigen.h文件,找到typedefEigen::PermutationMatrix<Eigen::Dynamic,Eigen::Dynamic,SparseMatrix::Index>PermutationMatrix;,将其改为typedefEigen::PermutationMatrix<Eigen::Dynamic,Eigen::Dynamic>PermutationMatrix;打开ORB_SLAM1/CMakeLists.txt,在target_link_libraries()中添加两个库文件:图3.5添加库文件打开ORB_SLAM2/Examples/ROS/ORB_SLAM2/CMakeLists.txt文件,在set(LIBS...)中同样添加上述的两个库文件。编译ORB-SLAM1图3.6编译ORB-SLAM1编译ORB-SLAM2图3.7编译ORB-SLAM2编译ORB-SLAM3图3.8编译ORB-SLAM3运行结果图3.9运行结果图VINS-FusionVINS-Fusion是2019年由港科大提出的,它是VINS-Mono的扩展版本,支持单目+IMU、双目+IMU、双目+IMU+GPS和纯双目。主要流程VINS的算法流程主要包含:测量数据预处理、外参标定和初始化、后端优化、闭环校正和全局位姿图优化,示意图如下:图3.10VINS流程图REF_Ref24982\r\h[14]测量数据预处理对于视觉测量,需要跟踪连续帧之间的特征,检测最新帧中的特征;对于IMU测量,需要对两个连续帧之间的IMU偏差做预积分,这个过程要考虑偏差。估计器初始化纯视觉SLAM或者SFM可以从相对运动方法中导出初始值,通过将IMU预积分与纯视觉SfM结果对齐,可以粗略地恢复尺度、重力、速度甚至偏差。在初始化阶段,重力矢量幅度较大,且难以观察到加速度计偏差,因此在初始阶段选择忽略加速度计偏差项。紧耦合单目VIO在估计器初始化之后,为了进行高精度和鲁棒的状态估计,需要使用基于滑动窗口的紧耦合单目VIO。IMU的测量速度远高于视觉测量,虽然VIO的频率被图像捕获频率限制,但仍然可以利用最近的IMU测量值来直接传递最新的VIO估计值,以实现IMU速率的性能。重定位重定位的第一步是回环检测模块,它在识别已经到达过的地方的基础上,在当前帧与回环检测候选帧之间建立特征级的连接。为能够在最小计算量的情况下实现无漂移状态估计,需要将特征的对应关系紧密集成到单目VIO模块中。而在重定位中直接应用多个特征观测,能够实现定位精度以及状态估计的平滑度的提升。全局位姿图优化被滑动窗口边缘化的关键帧会被添加到位姿图中,并在其中充当顶点,它通过顺序边或回环边连接其他顶点。应用最小代价函数的方法,可以优化包括顺序边与回环边的整个图。而每次优化后会得到变换矩阵,其能实现局部坐标系到全局坐标系的转换,将矩阵应用于高速率局部位姿,可以实时高速全局位姿估计。由于位姿图非常稀疏,因此计算复杂度会随着位姿数量的增加而增加,需要下采样将位姿图数据库限制在有限范围内。3.2.2特点优点:多传感器兼容,可以在全局位姿图优化中轻松融合各种传感器。算法鲁棒性强,在光线不足、纹理丰富度低、运动变化剧烈遮等情况下,仍能保持良好的定位与建图功能。缺点:只能提供定位功能,避障、交互等功能还无法实现。比起单目+IMU,双目+IMU需要更精确的定标,所以它并不是总是表现为最佳,内参与外参标定的不准确会使系统有更多的噪声。3.2.3安装方法编译之前需要安装一些必要的依赖库,按照源码中的README操作即可,编译环境为Ubuntu16.04LTS(ROS-kinetic)。图3.11编译VINS-Fusion运行结果:图3.12VINS-Fusion运行结果图LSD-SLAMLSD-SLAM是J.Engel等人于2014年提出的SLAM系统,标志着单目直接法在SLAM中的成功应用。主要流程LSD-SLAM的算法流程包括三个部分:图像跟踪、深度图估计和地图优化,示意图如下,本节主要介绍LSD-SLAM的算法流程。图3.13LSD-SLAM流程图REF_Ref23526\r\h[9]3.3.1.1图像跟踪:直接图像配准在光度误差通过最小化方差方法归一化的基础上,当前帧相对于参考帧(以关键帧作为)的三位姿态变化可以被计算得到。若图像的灰度噪声呈高斯分布,那么目标函数最小化可以通过重加权高斯牛顿方法的迭代实现。3.3.1.2深度图估计(1)关键帧的选择根据相机移动距离来判断是否创建新关键帧,首先计算当前关键帧和图像帧的加权距离:dist(ξji):=(3.1)其中W是包含权重的对角线矩阵。设置当前关键帧和图像帧的距离阈值,通过比较加权距离和阈值来判断是否创建新关键帧。深度图的创建如果新图像帧被选择成为关键帧,就需要初始化它的深度图。初始化后深度图被平均至逆深度为1,并通过sim(3)变换缩放尺度因子。最后新创建的关键帧代替上一帧关键帧,并成为后续的图像跟踪参考帧。深度图的优化如果被跟踪的图像帧没有被选择成为新的关键帧,那么通过它实现当前关键帧的优化,在兴趣点图像区域内进行小基线立体配准,使深度得到更新,并体现在当前帧的深度图像中。除深度估计外,深度的不确定性的计算以及深度的及时修正也是很重要的,同时还要接受新像素点的加入。3.3.1.3图优化的边计算单目SLAM系统具有尺度不确定性,相机长距离的轨迹运动会导致尺度漂移,这是误差产生的主要原因之一。由于所有的距离计算都取决于尺度,外点剔除会导致核函数无法参数化。为了解决这个问题,可以利用相似变换sim(3)来计算关键帧之间的边。但用直接法配准有非凸性,需要初始位姿足够准确。跟踪新图像帧时,可以从前一帧的相机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建省福州市鳌峰2026年数学七年级第一学期期末质量检测试题含解析
- 昭平县2026年六年级数学第一学期期末考试试题含解析
- 河南省周口市商水县2027届数学七上期末考试试题含解析
- 2026-2027学年陕西省西安市西工大附中数学七上期末质量跟踪监视模拟试题含解析
- 连平县2026-2027学年六年级数学第一学期期末统考试题含解析
- 内黄县2026-2027学年六上数学期末联考模拟试题含解析
- 湖北省武汉市武汉小学瑞景小学2026年六上数学期末达标检测模拟试题含解析
- 2027届北京市教育院附中数学七上期末达标检测模拟试题含解析
- 2026广西河池供电局项目资料员招聘46人笔试备考试题及答案详解
- 2026吉林通化市集安市公益性岗位招聘74人考试备考试题及答案详解
- 湖北省十堰市2025-2026学年高一下学期期末考试生物试卷
- 2026国家电投湖北公司招聘5人笔试历年常考点试题专练附带答案详解
- 期末综合测试卷二(试卷)2025-2026学年五年级语文下册统编版(含答案)
- 期末模拟考试(一)-2025-2026学年高二下学期人教A版数学(含解析)
- 香港公司收购及合并守则
- 学堂在线 批判性思维-方法和实践 章节测试答案
- 少女乙女的恋爱革命全中文攻略
- 二氧化碳安全标签
- 锅炉本体和辅助设备的安装
- 《文化经纪理论与实务》17专题:出版经纪
- 广数fanuc gsvm加工中心电路图
评论
0/150
提交评论