问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

通俗易懂理解ORBSLAM2跟踪模块

发布网友 发布时间:2022-09-06 07:27

我来回答

1个回答

热心网友 时间:2024-11-26 06:10

[1] 计算机视觉Life ORB-SLAM2源码讲解专题四:单目Tracking线程源码

帧间跟踪

(1)正常模式:

(2)出现意外:

(3)实在不行,垂死挣扎:

局部地图跟踪

关键帧判断和产生

EPNP的使用原则好像只有重定位才用到。
比如匀速运动模型或者是参考关键帧模型,都不用,因为他们的匹配点比较好。

纯跟踪是什么意思?地图更不更新是什么意思?为什么有一个产生地图点的事。
纯视觉里程计,没有产生关键帧,所以没有局部建图,所以没有新的地图点产生。只有匹配地图点使得某帧对应的地图点不为NULL。

关键帧确定的原则是什么:
当前帧对应的地图点被观测的数量小于最新关键帧对应的地图点被观测的数量的90%并且当前帧对应的地图点被观测的数量小于15

词袋匹配具体利用词袋后,然后怎么做?****跟踪中他们的共性是什么
先缩小范围(词袋、重投影),再计算描述子距离,得到最佳匹配,再用旋转直方图进行剔除误匹配。

跟踪局部地图,出了提升位姿的准确性,对地图点有什么影响呢,增加地图点?局部地图的局部关键帧选择,重复了怎么办???
不增加地图点。只有匹配地图点使得某帧对应的地图点不为NULL。有一个判重按钮。

Tracking线程的局部地图跟踪是什么
Tracking线程的局部地图跟踪,首先每次更新当前帧的局部关键帧,再由局部关键帧得到局部地图点。而当前帧的局部关键帧是:(1)和当前帧共视(有共同地图点)的关键帧,(2)以及(1)中每个关键帧的最强共视关键帧10帧,(3)还有(1)中的的孩子和父亲关键帧统统拉入伙。然后通过局部关键帧得到局部地图点,用于Tracking线程的位姿跟踪。

1.使用匀速运动模型进行特征点匹配?
将上一帧的每个非NULL地图点投影到当前帧进行特征点匹配,在地图点的投影点附近进行找到特征点集合,然后从中找到描述子间距离最小的特征点,将该地图点作为该特征点对应的地图点,然后把他们的旋转角度差存入旋转直方图,用于去除错误的匹配。
匹配步骤:缩小范围(重投影);利用描述子距离寻找最佳匹配点;利用旋转直方图去除误匹配
匹配点数量大于阈值进行pose only BA.
2.单目追踪过程中地图点从哪里来,即单目地图点补充?
单目初始化+局部地图中地图点创建。
3.为什么不PNP呢?
[1]匀速运动模型进行特征点匹配,如果有足够数量的匹配,直接pose only BA, PnP没有必要了,PnP还得RANSAC,得到的结果也不一定使得所有匹配点重投影误差最小,还不如直接Pose Only BA.
[2]如果相机的运动问题使得匀速运动模型不成立,那么怎么办?得到的匹配点就不是很多,比如重定位模式下,这时候需要PnP为Pose Only BA 提供初始值了。
4.如何进行pose only BA?一元边?
一元边:就一个优化变量
进行4次优化
[1]每次优化10次,误差太大(基于卡方分布的自由度得到的,比如自由度为2, 服从高斯分布,误差小于1个像素,这个事发生的概率超过95%对应有一个值),设为外点,不优化
[2]前2次需要鲁棒核函数,其他不需要,因为误差已经明显下降了
[3]返回内点数量

上一帧的地图点是怎么得到的呢?通过特征点匹配得到的。
初始化成功之后,什么情况下进行三角化呢?对于单目而言,那就只有在local mapping创建地图点环节。

对单目而言,没有。

描述子最优距离和描述子次优距离,有的时候需要判断2者差别明显,匹配才是比较可信的。
[1]匀速运动模型=>重投影搜索,只有最优

[2]追踪参考帧,重定位=>词袋搜索,最优和次优,比例:0.7

[3]初始化=>小窗口搜索,最优和次优,比例比较高,0.9

上一帧的参考关键帧就是最近的关键帧

local mapping中当前关键帧的参考关键帧:和当前帧共视程度最高的关键帧
tracking中的参考关键帧是最新的关键帧

重定位的时候,通过检测当前帧和那个关键帧最接近,来确定当前的位置和姿态
主要就是利用词袋数据,在已有的关键帧中查找和当前帧最接近的关键帧集合。
主要过程:
// 得到和当前帧有共同单词的关键帧集合,得到共同单词数最多的数量
// 将大于共同单词数阈值的关键帧放入一个集合
// 对于集合中的每一个,找他的最强共视关键帧10帧,
// 得到该组中的累计得分和得分最高的关键帧(这个组的代表)
// 累计得分大于阈值的组并把该组的代表放入候选关键帧集合中

垂死挣扎!

有关键帧的地图点和当前帧的地图点,当前帧的地图点初始化都是NULL,如果当前帧和关键帧特征匹配上的话,那么他们的地图点是同一个,将关键帧对应的地图点赋值给普通帧的地图点。

匹配步骤:缩小范围(词袋);利用描述子距离寻找最佳匹配点和次佳匹配点;利用旋转直方图去除误匹配

// (1)更新局部关键帧 mvpLocalKeyFrames 和局部地图点 mvpLocalMapPoints

Tracking线程的局部地图跟踪,首先每次更新当前帧的局部关键帧,再由局部关键帧得到局部地图点。而当前帧的局部关键帧是:(1)和当前帧共视(有共同地图点)的关键帧,(2)以及(1)中每个关键帧的最强共视关键帧10帧,(3)还有(1)中的的孩子和父亲关键帧统统拉入伙。然后通过局部关键帧得到局部地图点,用于Tracking线程的位姿跟踪。

// (2)在局部地图中查找与当前帧匹配的MapPoints

// (3)位姿优化

(1)遍历当前帧的所有地图点,对isBad的地图点进行置为NULL。
(2)对于局部地图点,判断局部地图点是否在视野中,并进行统计数量。
(3)对视野范围内的地图点进行重投影匹配。

(1)把地图点转换到当前帧相机坐标系下,如果深度为负,那么返回false.
(2)把地图点转换到当前帧像素坐标系下,如果超出图像边界,那么返回false.
(3)如果地图点和当前相机位置的距离不在最大和最小范围内,返回false
(4)计算从当前相机指向地图点的方向和地图点的平均观测方向大于60度,返回false
(5)根据地图点到光心的距离预测地图点一个尺度,仿照特征点金字塔层级

Tracking中的参考关键帧就是最新的关键帧。参考关键帧对应的地图点(该地图点被多次观测,比如2或者3)的数量
mnMatchesInliers:
当前帧对应的地图点被观测(大于0就行)的数量
thRefRatio:单目0.9,频繁插入

结论:当前帧对应的地图点被观测的数量小于最新关键帧对应的地图点被观测的数量的90%并且当前帧对应的地图点被观测的数量小于15,插入。还有就是间隔多少帧插入一下。其他不care.

no care:
ratioMap:1
thMapRatio: 0.35

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... the knife __he cut the bread is very sharp The knife __he uesd to cut the bread is very sharp.A.with whic... 李宁板鞋有夏季的吗 手机内存太满又无法删除怎么办 法律规定的劳动保险费是什么 劳动保险费属于规费吗 现在植物大战僵尸2这游戏收费吗? 植物大战僵尸这手机游戏要钱吗? 关于我回家晚了的名言警句诗句 我有一句名言:时光机只能使人去到未来,而不能回到过去。 猪笼草怎么浇水?几天一次? 跪求win7家庭普通版激活工具 财务公司借款可不可以不还? 王者荣耀为什么嬴政第二个技能没有法术加成 房子全款发票拿到房管局办事大厅即拿契税。以后卖房子是不是要少交... 买房有全款发票提前去交税是不是要少交? 买房不交契税的时候可不可以把金额缩小一点 pr剪视频卡顿怎么解决 西瓜头留齐肩短发需要留多久 短发多久能留长 ...点点出血,也不严重,过一段时间又好了,这会是什么情况引起的?_百度... ...结果发现有血,右耳听力应该没有下降,是怎么回事 ...流血 流脓 这是什么症状 耳朵流血流脓是 什么原因? 去过杭州行程码多久更新 在杭州行程码还是显示老家的怎么办 杭州市行程码号,还可以回老家吗? 可以投诉公司吗 员工在什么情况下可以告公司 良言一句三冬暖的下一句是什么? 做什么任务 做什么任务啊 各职业必做职业任务 小蚁智能摄像机去哪下载苹果app 江门亲子鉴定中心孕期鉴定费用多少? 吴召国老婆是谁 经验交流〗太多人都在问吴召国媳妇是谁 思埠集团董事长吴召国老婆是谁 头上碰的包怎么下去 茶吧机不能加热是机子坏还是电水壶坏 茶吧机不制热怎么办一直显示90?