ORBSLAM2总结系列——初始化

该系列出现,是因为之前都是没成系统的总结相关slam系统,现在对很多工具,理论都有了相应熟悉了解后,希望日后可以回读该系列,即可快速记起该slam系统的细节。暂时来说比较零散,后面会不断迭代紧凑,并可能与其他经典联动或触类旁通,相互学习,最终熟悉了解后,可以自己写一个slam系统。

  • 理论知识点

    • 初始化流程

      • 单目 Tracking::MonocularInitialization()

        • 特征点大于100的帧才开始初始化(初始化初始化器)
        • ORBmatcher::SearchForInitialization()
          • 匹配大于等于100才继续后续步骤
          • 只寻找第0层图像,查找帧1特征点附近对应帧2的特征点
          • 遍历上述所有的帧2特征点,找出最优特征描述子和次优特征描述子(汉明距离)
          • 需要最优特征描述子与次优特征描述子,汉明距离的差别达到一定阈值,才把最优特征描述子当做匹配点
          • 若于整张图片需要去除部分旋转方向不是很统一的特征点,则对所有特征点进行方向直方图分类,最多保留三组主要旋转方向,角度区间为30°(区分阈值大于一定值,则把数量低得取消)
        • Initializer::Initialize()
          • 该部分涉及的基础部分算法需要好好复习一下。
          • 生成RANSAC的点索引
          • 分别求RANSAC中最好的H与F矩阵
            • H矩阵:归一化,求H矩阵,根据评分(大概是重投影误差与阈值的关系,后续研究一下)得出最好的H矩阵
            • F矩阵:与上类同
          • RH = SH/(SH+SF),根据此打分选择对应的H与F
          • 从对应的变换矩阵中解出R与t,并三角化出三维点与可否三角化的标志
        • Tracking::CreateInitialMapMonocular()
          • 添加联系

            • 把参考帧与当前帧对应生成为关键帧,并计算其词袋向量
            • 把关键帧加入地图
            • 创建地图点,关键帧关联地图点,地图点关联关键帧(关联共识关系)
            • 计算该地图点的最优描述子(取中值中最优),并计算该地图点的平均观测方向(所有共视关键帧关于该地图点方向平均)和观测范围(根据参考帧的尺度对参考帧上该地图点距离进行最大最小范围确定)
            • 给普通当前帧增加对应的地图点与外点标志
            • 把地图点加入地图
            • 上述就是主要是三个主体互相建立关系,关键帧,地图,地图点,附带一个普通帧。一开始建立关键帧与地图彼此关系,后面建立地图点与别的关系
            • 在这里插入图片描述
          • 更新边,全局优化

            • KeyFrame::UpdateConnections()
              • KFcounter存放与该关键帧有共视关系的其他关键帧,与对应权重(即看到同一个地图点次数)。
              • 找出最大权重关键帧,把权重大于15的关键帧加入vPairs,并把建立另外的共视帧与该帧的联系(共视帧 -> 该帧);若果没有大于阈值的关键帧,则把最大权重帧进行同等操作
              • 该帧自身,把共视的帧存入mConnectedKeyFrameWeights(好像没有15阈值限制),把阈值限制的共视帧根据权重顺序逆序存入mvpOrderedConnectedKeyFrames,对应权重存入mvOrderedWeights
              • 若是第一次建立连接,则把权重最大的关键帧设为父关键帧(权重最大关键帧 < - >该关键帧,父子关系),把mbFirstConnection置为false
            • Optimizer::GlobalBundleAdjustemnt()
              • 单目仅考虑单帧投影的约束
              • 双目与RGBD除了单帧投影的约束,还考虑mbf的约束
          • 尺度归一化,初始化两帧的t与地图点(以当前关键帧的所有地图点中值距离来归一)

          • 把关键帧加入局部地图线程,更新状态(当前帧的位姿、参考关键帧,,更新上一关键帧id与本体,更新局部地图关键帧、地图点、参考帧)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值