Advertisement

视觉SLAM十四讲之视觉SLAM基础

阅读量:

初识SLAM:
相机:通过实现三维到二维的转换来减少空间维度的同时也会丢失距离信息;当仅有一个图像时无法直接获得深度信息;通过移动相机可以获得更多关于物体位置的数据以辅助判断距离远近的变化规律
分类:
单目:当仅有一个图像时无法确定物体的深度信息;通过移动相机可以获得更多关于物体位置的数据以辅助判断距离远近的变化规律
双目:双目摄像头通过左右两个摄像头捕捉不同视角的信息,并利用视差计算出物体的距离;然而这种方法会带来较大的计算量
RGB(深度相机):基于物理原理的深度相机能够提供精确的深度信息;然而其应用受限于物理环境的限制以及容易受到外界干扰的影响

完整的SLAM流程图:来自传感器的数据依次输入到视觉里程计模块中,在经过非线性优化模块处理后完成地图构建过程以及自环检测。

里程计 :从当前状态到下一步的状态,在局部环境下进行估计,并将这些局部运动估计值累加起来以获得整体运动结果
不足:由于在局部环境下进行估计可能导致误差积累,并最终导致系统漂移
解决方法:
1.后端(非线性优化):采用全局非线性优化策略,在带噪声的数据环境中对轨迹与地图进行最优解求解(MAP估计)
2.回环检测机制:当机器人移动至已访问过的位置附近时触发回环检测
视觉里程计方法
1.基于特征检测的方法实现视觉里程计(特征点法)
2.基于直接匹配的方法实现视觉里程计(直接法)
后端优化问题
为了提高精度,在带噪声数据的基础上对轨迹与地图进行最优解求解(MAP估计)
早期阶段主要依赖于滤波技术(如梯度下降法与高斯-牛顿法),后期则采用图优化(g2o)算法提升精度与效率
回环检测机制
1.判断机器人是否返回初始位置附近
2.识别已访问过的场景位置并计算其间的相似度值
方法步骤
1.提取场景中的关键特征信息并构建词袋模型;
2.通过动态更新语义空间模型来实现实时语义理解;
3.结合多模态数据增强语义理解能力;
4.定期更新模型参数以适应环境变化。

建图:主要用于导航和规划相关领域。
图像分类:主要包含以下几种类型:

  • 度量型地图(如距离测量)
  • 拓扑型地图(如路径分析)
  • 稀疏型地图(如高密度区域显示)
  • 浓密型地图(如细节丰富)
    单目与双目相机分别用于生成静态场景的深度信息和构建动态场景的空间模型。

运动方程和观测方程
位姿 :由平移和旋转描述

在三维空间中存在三种坐标系:世界坐标系、机器人坐标系以及图像像素坐标系。位姿描述由平移与旋转共同决定。第一部分讨论了旋转矩阵的概念及其应用;第二部分分析了旋转向量的表示方法;第三部分深入探讨了欧拉角的概念:万像锁;第四部分介绍了四元数在位姿描述中的作用;最后阐述了变换矩阵的作用:融合旋转和平移信息。

相机模型 三个坐标系:世界坐标系、相机坐标系、像素坐标系
小孔成像模型 :相似三角形 相机焦距:成像平面到相机的距离
相机外参 :变换矩阵-->旋转和平移
相机内参 :标定目的确定相机内参
畸变
径向畸变:透镜形状引起
切向畸变:成像平面与光照不垂直

图像特征分析 :-->追踪
1.camshift算法
2.meanshift算法

后端优化 :状态估计问题即从带噪声的数据中优化轨迹与地图;最大后验概率估计MAP即是使P(z/x)概率值最大的估计;在位姿为x的条件下得到观测z的概率即为所求; MAP即为使P(z/x)概率值最大的估计。
两个方程
运动方程(位姿与位姿的关系):相机位姿(由旋转和平移决定)完成定位;
观测方程(位姿与路标的关系):观测点用于构建路标图;
已知大量观测数据用于估算相机运动(受噪声影响导致估算存在偏差)——利用最小二乘法进行处理;
误差计算
运动误差等于当前位姿估计值减去上个时刻位姿与输入结合应得到的值;
观测误差等于实际观测数据减去当前位姿代入观测模型所得预测数据;
目标函数是由多个运动误差及多个观测误差共同作用的结果;
求最小化的方法(最小二乘法)
最速下降法即梯度下降法(过于直接而可能陷入局部最优),牛顿法则需计算复杂的Hessian矩阵;
高斯牛顿方法则更为高效;
工具包括ceres和g2o框架进行图优化。

视觉里程计(VO) :--->通过两两图像估计局部运动,再将估计的局部运动叠加从而得到整个运动
基于特征点法的视觉里程计:
使用特征点作为路标:
使用角点作为特征点
特征点的信息:
1.关键点-->包括位置、大小、方向(关键点所在块几何中心与质心连接成的向量代表方向)等
2.描述子-->关键点周围像素信息,最常用的是ORB在保证一定不变性的同时也能满足实时性的要求,而SIFT描述子虽然能很好满足旋转、缩放、平移不变形,但效率不高
ORB特征点:
1.旋转FAST关键点 :周围连续多个像素点和中心关键点灰度上相差量级 -->角点
1.1:旋转不变形:由灰度质心法实现,与图像块的几何中心和质心连接而成的方向向量有关
1.2:尺度不变性:由图像金字塔保证-->金字塔每层是不同尺度的图像,在金字塔每层中检测角点
2.BRIFT描述子 :一种二进制 描述,需要用汉明距离度量
特征匹配 :计算特征点的BRIFT描述子的汉明距离 ,该距离描述了像个特征点间的相似程度
1.暴力匹配
2.快速近似最近邻

特征点提取与匹配步骤:

  1. 获取图像数据
  2. 识别关键点坐标
  3. 生成关键点特征向量
  4. 基于描述子特征向量对两幅图像的关键点进行配准运算,并采用汉明距离作为评估标准
  5. 通过汉明距离阈值筛选有效匹配对
  6. 输出配准结果图示

利用多对二维图像特征点进行匹配,
即可恢复两帧间相机的姿态变化。
相机姿态变化的计算主要分为两种情况:
两张图像间的位姿变换(2D-2D):
双视几何模型(即对极几何)→根据配对点的像素坐标,
可求解出基础矩阵E(由旋转和平移参数组成)或本质矩阵F(由旋转、平移和内参矩阵K组成)。
单应矩阵H则通常用于处理同一平面场景,
如无人机拍摄的照片等。
需要注意的是,
仅凭旋转信息无法完成单目初始化,
必须要有一定程度的平移信息,
否则就无法完成初始位姿估计。
对于一张深度图与一张普通图片间的位姿变换(3D-2D):
可采用PnP算法→通过至少三个对应点估计初始位姿,
然后通过非线性优化方法(如定义重投影误差目标函数并不断迭代)
得到最优解。
而对于两张深度图之间的位姿变换(3D-3D):
常用ICP算法→基于迭代最近点的方法,
同样也可以结合Bundle Adjustment技术
以最小化重投影误差来进行优化计算。
综上所述,
特征点法的主要缺点包括:
1.关键点及描述子的提取过程耗时较长;
2.忽略了大量非关键信息;
3.有时会出现因 lack of feature 的特殊情况
(例如物体表面光滑导致特征不足的情况)。

过程说明如下:

分类方法如下:

LK光流算法定义如下

环路检测
目的 :消除累积偏差(漂移),尽管后端能够估算最大后验偏差,但仅根据邻近帧数据无法消除累积偏差
方式 :词袋模型
关键
1.能够识别相机 revisit 同一位置
2.由于环路检测提供了当前数据与所有历史数据的联系,在跟踪算法出现故障时(如丢失),可以通过环路检测实现定位

预计哪处可能出现回环
1.基于里程计的几何关系:当发现相机运动至之前的某一位置附近时,判断是否存在回环关系;但由于累积误差的影响,在此观察到的事实无法直接确认“相机已至之前某一位置附近”。
2.基于外观:仅凭两张图像之间的相似性来判定是否存在回环检测关系。
准确率:算法识别出的所有回环中确实存在真实回环的比例→在五个水果中被识别为苹果的是四个水果,在这四个中有三个是真实存在的苹果(准确率为75%)。
召回率:在所有真实存在的回环中被正确识别的比例→在五个水果中有四个是苹果,在这四个中有三个被正确识别出来(召回率为75%)。
在SLAM系统中对准确率的要求更为严格,在对召回率的要求上则相对宽容一些。
词袋模型(BOW):目的是通过“图像中的哪些特征”来描述一个图像,“哪些特征”即为“单词”。
度量两个图像相似性
1.确定特征(单词),将这些单词组合起来形成一个词汇表(字典);
2.确定一张图像中含有哪些特征(单词),用这些单词构成该图像的描述(按照词汇表中的顺序排列取值);
3.比较两张图象描述向量间的相似程度(可采用汉明距离或L1范数计算)。

方法

字典表示方法

相似性计算

全部评论 (0)

还没有任何评论哟~