ORB-SLAM3的Local Mapping线程详解

发布时间:2023年12月26日

Local Mapping线程是ORB-SLAM3的三大线程之一。

一、Local Mapping线程的主要流程

关键帧是通过根据经验去添加一些约束给帧,然后输出关键帧,如果能被观测到更多特征点的话,那么我们就能把其作为关键帧。

第一部分是插入关键帧;
第二部分是去除地图点,不是所有的地图点都是好的,对地图点进行一个筛选;
第三部分,为了结果更优,生成一些新点;
第四部分,局部BA做优化;
第五部分,IMU初始化,IMU好的初值,测量数据对结果来说会有很大的促进左右;
第六部分,去除关键帧,前面冗余的关键帧进行筛选;
第七部分,对IMU尺度进行优化,优化重力方向,使结果更好。
在这里插入图片描述

二、Local Mapping线程主要作用

加入关键帧和地图点到当前激活地图,删除冗余帧,并通过对当前帧的附近关键帧操作,利用视觉BA或视觉-惯性BA优化地图。此外,在惯性模式下,LocalMapping线程会利用最大后验估计(MAP)来初始化和优化IMU参数。

1、插入关键帧

将Tracking线程输出的关键帧插入共视图(CovisibilityGraph),其中节点是关键帧,边的权重为两个关键帧共视的地图点数量。

共视图中过多的边会占用计算资源,影响SLAM算法的实时性。一般通过设定阈值控制边的数量。

在这里插入图片描述

共视图是由结点和边构成的无向加权图,结点是关键帧,边表示的共视的地图点的数量,比如K1、K2之间的权重是W12,表示他们能够共同看到地图点的数量。K1、K2、K3互为共视共视关系,他们都能看到共视图特征点的个数。如果边不加约束的话,如果K1和K2能够共同看到地图点的个数就一个,那么就会有很多这种边,只要超过1就能构成边,那么无形当中会占用计算资源,影响SLAM算法的实时性。
这种情况我们会对W权值,做一个阈值的设定,保证边的数量是一个合理的数量,不然会影响后面一系列的方法,对ORB-SLAM3算法而言,处理的最小单位就是关键帧,保证关键帧在合适的数量,同时边也在合适的数量

2、剔除地图点

文章来源:https://blog.csdn.net/Prototype___/article/details/135214826
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。