当前存在的问题:
如何理解“线性高斯系统(LG),它的无偏最优估计可以由卡尔曼滤波器给出”
把相机的运动和场景大小同时放大两倍,单目相机所看到的像是一样的。
Ⅰ. 传感器
1.1 单目相机 - Monocular
估计模式: 移动的单目相机通过比较多帧差异可以得到深度信息 - 运动恢复结构(Structure from Motion, SfM)
说明:
三维空间的二维投影,这个过程丢掉了深度。
把相机的运动和场景大小同时放大两倍,单目相机所看到的像是一样的。
单目SLAM估计的轨迹和地图与真实的轨迹和地图相差一个因子,即尺度(Scale)。由于单目SLAM无法仅凭图像确定这个真实尺度,称为尺度不确定性(Scale Ambiguity)。
优势: 结构简单,成本低。
缺点: 单张图片无法确定物体真实大小。
1.2 双目相机 - Stereo,立体摄像头
估计模式: 由两个单目相机组成,相机间距离(基线)已知,估计像素空间位置。双目相机不主动对外发射光源,因此称为被动深度相机。
优势:
基线距离越大测量越远,可以用于室内和室外。
可以计算相机与物体之间的距离,场景的三维结构可以通过单个图像恢复,同时消除尺度不确定性。
不需要结构光、TOF的发射器和接收器,因此结构简单硬件成本低。
缺点:
强光、暗光影响较大;
依赖自然光,对无纹理的物体或表面影响较大,如纯色墙,因双目相机依据视觉特征进行图像匹配,这一问题会引起匹配失效。
配置和标定较为复杂。
深度量程与精度受基线与分辨率限制。
视差的计算非常消耗计算资源,需要使用GPU和FPGA设备加速,才能实时输出整张图像的距离信息,在现有条件下,计算量是双目的主要问题之一。
1.3 深度相机 - RGB-D
估计模式: 红外结构光或 ToF 原理,通过主动向物体发射光并接收返回的光,通过物理测量手段计算距离。
优势:
节省大量计算资源。
近距离(1米内)精度较高,毫米级。
测量范围广、对光线和颜色的敏感度低等。
主动投影,适合弱光照使用。
缺点:
测量范围窄、噪声大、视野小、易受日光干扰、无法测量透射材质,主要用于室内。
测量距离和分辨率存在一定的局限性。远距离精度差,随着距离的拉长,精度也随之变差。
Ⅱ. 经典视觉 SlAM 框架
经典的视觉SLAM框架包含以下五个部分。其中,前端和计算机视觉领域更为相关,比如图像的特征提取和匹配,负责给后端提供待优化的数据,以及这些数据的初始值;后端主要是滤波与非线性优化算法,负责整体的优化过程,它往往面对的只有数据,不必关心这些数据到底来自什么传感器。
2.1 传感器信息读取
视觉SLAM中主要为相机图像信息的读取和预处理。
机器人中,还有码盘、IMU等信息的读取和同步。
2.2 视觉里程计(Visual Odometry, VO)
估算相邻图像间相机的运动和局部地图(恢复场景空间结构),存在累积漂移。VO又称为前端(Front End)。
2.3 后端优化(Optimization)
后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在VO之后,又称为后端(Back End)。
除了解决“如何从图像估计出相机运动”,还需要关心这个估计带有多大噪声,这些噪声是如何从上一时刻传递到下一时刻的,对当前的估计有多大自信。
后端优化要考虑的问题:如何从这些带有噪声的数据中估计整个系统的状态(机器人自身的轨迹,地图),以及这个状态估计的不确定性有多大——最大后验概率估计(Maximum-a-Posteriori,MAP)
2.4 回环检测(Loop Closing)
判断机器人是否到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。
视觉回环检测实质上是一种计算图像数据相似性的算法。
2.5 建图(Mapping)
根据估计的轨迹,建立与任务要求对应的地图。分为度量地图(Metric Map)和拓扑地图(Topological Map)两种。
度量地图(Metric Map)
强调精确的表示地图中物体的位置关系,通常用稀疏(Sparse)和稠密(Dense)对其分类。稀疏地图不需要表达所有物体,只关注路标;稠密地图着重于建模所有看到的东西,二维栅格地图、三维体素地图,都是稠密地图;
拓扑地图(Topological Map)
拓扑地图强调地图元素之间的关系,由节点和边构成,只考虑节点间的连通性;
Ⅲ. SLAM问题的数学描述
两个方程描述了最基本的SLAM问题
当知道运动测量的读数u,以及传感器的读数z时,如何求解定位问题(估计x)和建图问题(估计y)
将SLAM问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量。
根据机器人的真实运动和传感器的种类,存在着若干种参数化方式。
运动方程:参数化—>李群李代数
观测方程:路标点如何投影到一张照片上—>相机的成像模型
为了解决SLAM问题,我们需要
状态估计理论:把定位和建图的不确定性表达出来;
滤波器或非线性优化:估计状态的均值和不确定性(方差)。
状态估计问题的求解,与两个方程的具体形式,以及噪声服从哪种分布有关。按照运动和观测方程是否线性,噪声是否服从高斯分布进行分类:线性/非线性和高斯/非高斯系统。
线性高斯系统(LG),是最简单的,它的无偏最优估计可以由卡尔曼滤波器给出。
复杂的非线性非高斯系统(NLNG),使用扩展卡尔曼滤波器和非线性优化两大类方法求解。
最早的实时视觉SLAM系统基于EKF开发[2],为了克服EKF的缺点(线性化误差和噪声高斯分布假设),开始使用粒子滤波器等其他滤波器,乃至非线性优化。
现在主流视觉SLAM使用以图优化(Graph Optimization)为代表的优化技术进行状态估计[13]。
参考文献
[2] A. J. Davison, I. D. Reid, N. D. Molton and O. Stasse, "MonoSLAM: Real-Time Single Camera SLAM," in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 29, no. 6, pp. 1052-1067, June 2007, doi: 10.1109/TPAMI.2007.1049.
[13] Strasdat H, Montiel J M M, Davison A J. Visual SLAM: why filter?[J]. Image and Vision Computing, 2012, 30(2): 65-77.
领取专属 10元无门槛券
私享最新 技术干货