首页 > 编程知识 正文

orbslam2是什么,orbslam2原理

时间:2023-05-03 07:30:36 阅读:273442 作者:4733

        今天面试,很多基本问题都没有回答的很好。那些知识明明知道,但是就是讲不出来,看来看过是不行的,必须要自己总结一下。

一、介绍一下ORBSLAM的线程,并且分别讲一下


ORBSLAM主要有三个线程,分别是跟踪(Tracking),建图(LocalMapping),和闭环检测(LoopClosing)。
1)Tracking
        这个线程主要工作是从图像中提取ORB特征点,根据上一帧进行位姿估计(1.如何估计),或者进行重定位初始化位姿,然后根据跟踪已经重建的局部地图优化位姿(2.什么优化方法),再根据一些规则确定新的关键帧(3.什么规则)。
2)Local Mapping
        这个线程主要完成局部地图重建。接受上一个线程的关键帧,完成关键帧插入。验证最新生成的地图点并进行筛选(4.如何筛选地图点),然后生成心的地图点,使用Local BA调整,最后再对插入的关键帧进行筛选,去处多余的关键帧(5.如何筛选关键帧)。
3)Loop Closing
        这一线程主要有两个过程,分别是闭环检测,和闭环矫正。闭环检测首先使用BOW进行检测闭环关键帧(6.如何进行),然后通过Sim3算法计算相似变换(7.将一些Sim3)。闭环矫正主要是闭环融合和Essential Graph图优化(8.图优化)。

二、详细解读过程

1.如何进行位姿估计
1)TrackWithMotionModel
        认为前一次位姿相对变化与当前位姿相对变化一致。 △ triangle △Rk-1= △ triangle △Rk,由此可以计算得到当前帧的初始位姿,再经过g2o投影优化得到一个相对准确的位姿。
这一步是得到初始位姿之后,匹配特征点,然后计算投影误差,再进行最小投影误差计算,优化位姿。

2)TrackReferenceKeyFrame
        假设离自己最近的关键帧的位姿是自己的位姿(注意这里是关键帧,匀速模型是帧)。再跟上一步一样的优化。

3)reloaclization
都失败之后,重定位,EPnP求解。
        最小投影误差求解PnP
1.将三维空间点投影至像素平面;——根据词袋模型,选择与当前帧最相近的一帧,选取他对应的MapPoints,
2.建立重投影误差函数;——投影点必定与匹配点存在一定的距离误差:

3.求解误差函数关于投影点的偏导,优化位姿

EPnP:
在空间中3D点中选取4个控制点,用4个控制点去表示其他得点。再相机平面中得到4个控制点得坐标,求解。
2.如何根据重建的局部地图优化位姿
        将所有相连得关键帧以及对应得MapPoints进行投影,进行BA优化。

3.如何确定关键帧
        关键帧主要在两个方面考虑。1)关键帧自身质量过硬,不能有模糊,特征点数量充足,特征分布均匀。2)关键帧与其他关键帧之间的关系,需要和局部地图中的其他关键帧有少量的共视关系,但大部分特征点都是新特征点,以达到既存在约束,有尽量少的信息荣誉。
        ORBSLAM选择关键帧主要有三个条件:
1)长时间未插入关键帧(存在速度快慢的问题)
2)局部地图空闲
3)跟踪即将失败
这样做,会有扎堆出现关键帧的情况,因此后续会进行关键帧筛选。
4.如何筛选地图点
        观测到该MapPoints的关键帧太少。
地图点融合TODO:

5.如何筛选关键帧
        90%以上的MapPoints被其共视关键帧观测到。具体实现:
将关键帧前后10帧分为一组,计算组内得分,以最高分组的0.75为阈值,滤除一些组(?)。再在剩下的组内各自找到最高分的一阵作为备选帧。

6.如何进行闭环检测

7.Sim3求解位姿

转至:https://blog.csdn.net/weixin_39373577/article/details/86030981


8.如何进行闭环融合和图优化

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。