?|高翔博士SLAM十四讲(第四篇)
这一篇文章的侧重点在:自己在编代码实践过程中,对框架和理论知识的感悟和理解。(用于查缺补漏,可跳过此节)
下文分析的代码为project 0.2
,两两帧间的视觉里程计。
- 程序从
run_vo.cpp
开始执行,首先将所有待处理RGB
图片和depth
图片信息准备好,然后进入一个for
循环,不断执行,直到所有图像都被处理完成。 - 在该
for
循环中,最重要的一句代码是调用对象vo
(其本身为VisualOdometry
类型)的一个成员函数addFrame
,其功能是,先将第i
帧图片装入Frame
类,然后结合上一帧i-1
图像(curr_
与ref_
),以估计位姿。 - 在该
addFrame
成员函数中,最主要的几步是:3.1提取ORB特征点的关键点(Oriented FAST);3.2计算与关键点对应的描述子(Rotated BRIEF);3.3特征点匹配(暴力匹配、汉明距离);3.4位姿估计(Perspective-n-Point,3D-2D )。最后,如果判定是一个好的估计,使用另一个成员函数addKeyFrame
加入到关键帧。
ch 9. project 0.3 0.3和0.2版本的差别不大,构建的框架
run_vo.cpp
保持原状。不同之处在于
addFrame
成员函数(之前介绍的第3步)中的3.4位姿估计poseEstimationPnP()
,我们以之前得到的 RANSAC PnP位姿估计结果作为初值,再调用 g2o 进行优化。得到更为精确的位姿估计结果。ch 9. project 0.4 【?|高翔博士SLAM十四讲(第四篇)】0.4和0.3版本的差别较大,尤其是两种VO的工作原理。
- 程序同样从
run_vo.cpp
开始执行,首先将所有待处理RGB
图片和depth
图片信息准备好,然后进入一个for
循环,不断执行,直到所有图像都被处理完成。 - 在该
for
循环中,最重要的一句代码是调用对象vo
(其本身为VisualOdometry
类型)的一个成员函数addFrame
。但值得注意的是,该函数实现位姿估计是通过当前帧与地图之间的特征匹配关系,直接计算了Tcw
。 - 在该
addFrame
成员函数中,最主要的几步是:3.1提取ORB特征点的关键点(Oriented FAST);3.2计算与关键点对应的描述子(Rotated BRIEF);< 3.3>特征点匹配(这里要注意,之前我们是提取ref_
和curr_
的特征点,进行这些特征点的匹配;此时,我们所做的匹配主要是在以下两种点集之间:从curr_
提取的特征点 以及 从地图map
中挑选的点);3.4位姿估计(Perspective-n-Point,3D-2D )。最后,如果判定是一个好的估计,首先使用成员函数optimizeMap()
对地图进行优化,然后再使用另一个成员函数addKeyFrame
加入到关键帧。
推荐阅读
- 女博士!!加倍努力
- 博士男子高铁不让座|博士男子高铁不让座, 10年了, 总是“那些人”在恶心着这个社会!
- 一毕业就年薪200万的左鹏飞
- 19.1.26
- 这位美女博士,想通过情绪算法,让手机变身“心理减压师”
- 李博士雄哥印象
- 费尔斯泰因博士说瑜伽
- 美女博士初入职场,惨遭淘汰(这30条职场道理,越早知道越好)
- 我校中医学博士学位授权点顺利通过专项评估
- 商业教练带给我的震撼