讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/123092196 文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证} 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证
一、前言核心思想 : \color{red}{核心思想:} 核心思想: 当前帧与上一帧(或者最近关键帧)进行特征点匹配,如果匹配点足够,则能计算出上一帧到当前帧的位姿变换,同时能够获得该关键点对在三维空间的坐标,显然易知对应的地图点。依次循环即可。
但是大家需要注意一个点,只有关键帧产生的新关键点才会进行地图更新,普通帧(双目或者深度相机)生成新的地图点是临时地图点,主要用于优化位姿估算,不会参与到全局地图的更新。
通过前面的博客,已经对 参考关键帧跟踪Tracking::Relocalization()、恒速模型跟踪Tracking::TrackWithMotionModel()、重定位跟踪Tracking::Relocalization(),进行了详细的简介,大家结合前面的博客,以及下面的图解进行分析:
应用场景 : \color{blue}{应用场景}: 应用场景: 没有速度信息的时候、刚完成重定位、或者恒速模型跟踪失败后使用,大部分时间不用。只 利用到了参考帧的信息。 ①匹配方法是SearchByBoW,匹配当前帧和关键帧在同一节点下的特征点,不需要投影,速度很快。 ②BA优化(仅优化位姿),提供比较粗糙的位姿。
思路
:
\color{blue}{思路}:
思路: 当使用运动模式匹配到的特征点数较少时,就会选用关键帧模式跟踪。思路是:尝试和最近一个关键帧去做匹配。为了快速匹配,利用了 bag of words (BoW) 来加速匹配。
具体流程
:
\color{blue}{具体流程}:
具体流程: ①计算当前帧的 BoW ②通过特征点的 bow 加快当前帧和参考帧之间的特征点匹配。使用函数 matcher.SearchByBoW()。
∙
\bullet
∙对属于同一node(同一node才可以是匹配点)的特征点通过描述子距离进行匹配,遍历该 node 中特征点, 特征点最小距离明显小于次小距离才作为成功匹配点,记录特征点对方向差统计到直方图。
∙
\bullet
∙ 记录特征匹配成功后每个特征点对应的 MapPoint(来自参考帧),用于后续 3D-2D 位姿优化。
∙
\bullet
∙ 通过角度差投票进行剔除误匹配 ③将上一帧的位姿作为当前帧位姿的初始值(加速收敛),通过优化 3D-2D 的重投影误差来获得准确位姿,只优化位姿
T
c
w
Tcw
Tcw,不优化 MapPoints 的坐标。其涉及的函数 Optimizer::PoseOptimization(&mCurrentFrame) 后续有专门章节进行讲解。 ④剔除优化后的 outlier 地图点
应用场景 : \color{blue}{应用场景}: 应用场景: 大部分时间都用这个跟踪,只利用到了上一帧的信息。 ①用恒速模型先估计一个初始位姿 ②用该位姿进行投影匹配 SearchByProjection,候选点来自GetFeaturesInArea,未使用BoW ③BA优化(仅优化位姿),提供比较粗糙的位姿
思路
:
\color{blue}{思路}:
思路: 假设短时间内(相邻帧)物体处于匀速运动状态,可以用上一帧的位姿和速度来估计当前帧的位姿。移动模式跟踪, 跟踪前后两帧得到变换矩阵。上一帧的地图3d点反投影到当前帧图像像素坐标上,在不同尺度下不同的搜索半径内,做描述子匹配搜索,这样可以加快匹配。在投影点附近根据描述子距离进行匹配(需要>20对匹配,否则匀速模型跟踪失败,运动变化太大时会出现这种情况),然后以运动模型预测的位姿为初值,优化当前位姿。优化完成后再剔除外点,若剩余的匹配依然>=10对,则跟踪成功,否则跟踪失败,需要Relocalization *
具体流程
:
\color{blue}{具体流程}:
具体流程: ①创建 ORB特征点匹配器 最小距离
<
0.9
∗
< 0.9*
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?