本文主要是介绍高翔视觉slam十四讲学习(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一章(第一讲、第二讲)视觉SLAM基础
1. SLAM概述
1.1 概念
SLAM(Simultaneous Localization and Mapping):同时定位与地图构建,指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。
1.2 SLAM主要内容
SLAM主要内容:
- 定位
- 建图
所需传感器分类
根据安装位置分为
- 携带于机器人本体(轮式编码器、相机、激光等):测得的通常都是一些间接的物理量而不是直接的位置数据,只能通过一些简介的手段从这些数据中推算自己的位置。
- 安装与环境中(导轨、二维码标示等):能够直接测量到机器人的位置信息,简单有效的解决定位信息。
视觉SLAM主要使用传感器:相机
相机分类
- 单目(Monocular):以二维的形式反映三维的世界,缺少深度维度,若要恢复三维结构,必须移动相机的视角,但无法通过单个图像确定三维结构的真实尺度(尺度不确定性)。
- 双目(Stereo):由两个单目相机组成,两个相机间的距离(基线)已知,通过左右眼图像的差异和基线来估计每个像素的空间位置,场景的三维结构可通过单个(应该是左右目各一张)图像恢复出来。基线距离越大,能够测量到的距离就越远,即可用于室内,亦可用于室外。缺点:配置与标定均较为复杂
- 深度相机(RGB-D):通红外结构光或Time-of-Flight(ToF)测量物体离相机的距离,这种方法为物理测量,相比双目节约了大量计算量。缺点:测量范围窄、噪声大、视野小、易受日光干扰、无法测量投射材质等。
1.3 经典视觉SLAM框架
- 传感器信息读取
- 视觉里程计(Visual Odometry,VO):视觉里程计任务是估算相邻图像间相机的运动,以及局部地图的样子。VO 又称为前端(Front End)。仅通过视觉里程计来估计轨迹,将不可避免地出现累计漂移(Accumulating Drift)。前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等。
- 后端优化:后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在 VO 之后,又称为后端(Back End)。后端则主要是滤波与非线性优化算法。
- 回环检测(Loop Closing):回环检测判断机器人是否曾经到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
- 建图(Mapping):它根据估计的轨迹,建立与任务要求对应的地图。地图可以分为度量地图与拓扑地图两种。度量地图强调精确地表示地图中物体的位置关系,通常我们用稀疏(Sparse)与稠密(Dense)对它们进行分类。相比于度量地图的精确性,拓扑地图则更强调地图元素之间的关系。
1.4 SLAM问题的数学表述
- 运动方程
- 观测方程
我们按照运动和观测方程是否为线性,噪声是否服从高斯分布进行分类,分为线性/非线性和高斯/非高斯系统。
类型 | 解决方法 |
线性高斯系统(Linear Gaussian, LG 系统) | 卡尔曼滤波器(Kalman Filter, KF) |
非线性非高斯系统 (Non-Linear Non-Gaussian, NLNG 系统) | 扩展卡尔曼滤波器(Extended Kalman Filter, EKF)和非线性优化 |
这篇关于高翔视觉slam十四讲学习(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!