经典SLAM学习

这篇博客汇总了多位专家对于SLAM(Simultaneous Localization And Mapping)的学习资源,包括冯兵的公开课、白巧克力亦唯心的博客、ORB系列讲解、Xingyin-Fu的博客以及路游侠和高博知乎上的专业解答,是初学者深入理解SLAM的宝贵资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经典SLAM对比
                                                 ORB                               SVO

    一、追踪

  1. ORB特征提取
  2. 初始姿态估计(速度估计)
  3. 姿态优化(Track local map,利用邻近的地图点寻找更多的特征匹配,优化姿态)
  4. 选取关键帧
二、地图构建
  1. 加入关键帧(更新各种图)
  2. 验证最近加入的地图点(去除Outlier)
  3. 生成新的地图点(三角法)
  4. 局部Bundle adjustment(该关键帧和邻近关键帧,去 除Outlier)
  5. 验证关键帧(去除重复帧)
三、闭环检测
  1. 选取相似帧(bag of words)
  2. 检测闭环(计算相似变换(3D<->3D,存在尺度漂移,因此是相似变换),RANSAC计算内点数)
  3. 融合三维点,更新各种图
  4. 图优化(传导变换矩阵),更新地图所有点

                    

整个过程分为两个大模块:追踪与建图(与PTAM类似)。
  • 上半部分为追踪部分。主要任务是估计当前帧的位姿。又分为两步:
    • 先把当前帧和上一个追踪的帧进行比对,获取粗略的位姿。
    • 然后根据粗略的位姿,将它与地图进行比对,得到精确的位姿并优化见到的地图点。随后判断此帧是否为关键帧。如果为关键帧就提取新的特征点,把这些点作为地图的种子点,放入优化线程。否则,不为关键帧的时候,就用此帧的信息更新地图中种子点的深度估计值。
  • 下半部分为建图部分。主要任务是估计特征点的深度。因为单目SLAM中,刚提的特征点是没有深度的,所以必须用新来的帧的信息,去更新这些特征点的深度分布,也就是所谓的“深度滤波器”。当某个点的深度收敛时,用它生成新的地图点,放进地图中,再被追踪部分使用
初始化


1.选取足够多的特征点(这里当然是ORB特征了)(如果没有则重置),归一化所有特征点,分别同时(并行)计算特征点的H阵和F阵,计算每个点对的symmetric transfer errors,和卡方分布的对应值比较,由此判定该点是否为内点。累计内点的总得分。(这里的SM既可以是SH也可以是SF,TM也是如此。分别是从当前帧到参考帧的变换误差和参考帧到当前帧的变换误差

2.然后就是模型的选择了,根据公式如果大于0.4选H,反之选F


3.根据模型恢复运动(即求R和T)

4.进行了全局BA。ORB中对初始化要求高,所以要有足够的视差。另外,由于坐标系会附着在初始化成功的那帧图像的位置,因此每次初始化不能保证在同一个位置。

疑问:全局BA是优化里面对所有关键帧(除了第一帧)和所有mappoint的全局优化?


        首先 SVO是混合使用了特征点法和直接法:它跟踪了一些关键点(角点,没有描述子,由FAST实现),然后像直接法那样,根据这些关键点周围的信息,估计相机运动以及它们的位置 。(不需要知道点与点的对应关系p1,p2,根据当前的位姿估计值 来寻找p2的位置,通过优化两点的光度误差来求得位姿的转化关系)

         它假设前两个关键帧所拍到的特征点在一个平面上(四轴飞行棋对地面进行拍摄),然后估计单应性H矩阵,并通过三角化来估计初始特征点的深度值。从而获得第一帧的特征点位置及它们的深度。

       SVO适用于摄像头垂直向下的情况(也就是无人机上,垂直向上也可以,朝着一面墙也可以),为什么呢?1.初始化的时候假设的是平面模型 2.KF的选择是个极大的限制(关键帧选取靠的 是 关于景深的一个阈值,当前帧和相邻关键帧之间任意轴向运动(x方向,y方向,z方向)超过场景平均深度的一个百分比,就会选为关键帧,和图像无关,和相机运动距离有关。),除了KF的选择原因外摄像头水平朝前运动的时候,SVO中的深度滤波做的不好。



















T

r

a

c

k


track主要做两件事:①确定每帧的位姿

                                ②确定关键帧提供给Local Mapping

具体模块:

(1)将初始化的数据封装成帧,后续针对帧处理

     


             

         ①Feature对特征封装(keypoint+descriptor)

         ②Feature是Frame与MapPoint之间的纽带

         ③MapPoint对特征对应的3D点的封装

         ④MapPoint对应最好的特征描述子

(2)帧间跟踪:Track Reference Key Frame,

                &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值