SLAM(Simultaneous Localization and Mapping )同时定位与地图构建,就是搭载特定的传感器的主体,在未知环境的情况下,于运动过程中建立环境的模型,同时估计自己的运动。简单来说就是移动机器人在未知环境中进行定位导航和地图绘制。
视觉SLAM指的就是机器人搭载的传感器是相机。
各类相机的区别在于有没有深度信息
单目相机:没有深度信息必须通过移动相机来产生深度Moving View Stereo
双目相机:通过视差来计算深度Stereo。
RGBD深度相机:通过物理方法测量深度(可以直接测量物体的图像和距离,从而恢复三维结构)。
视觉SLAM流程图
前端:VO 后端:Optimization 回环检测 :loop closing 建图: mapping
视觉里程计 Visual Odometry,即前端(front end),视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子。
非线性优化(Optimization),又称后端(back end),通过接收不同时刻视觉里程计的相机位姿,以及回环检测的信息,对其进行优化,得到全局一致的地图。
回环检测(Loop closing),检测机器人是否回到之前到达过的位置,识别到达过的场景,计算图像间的相似性,然后把信息提供给后端进行处理。
SLAM问题的数学描述
运动方程:
是当前位置,
是上一时刻位置
是噪声
是输入
观测方程:
是当前位置,
是某个路标点,
是机器人在此位置上产生的观测数据。
齐次坐标
百科解读:齐次坐标(homogeneous coordinates)就是将一个原本是n维的向量用一个n+1维向量来表示,是指一个用于投影几何里的坐标系统,如同用于欧氏几何里的笛卡儿坐标一般。
许多图形应用涉及到几何变换(平移(相加),旋转和缩放(矩阵相乘)),提供了矩阵运算把二维,三维,高维空间中的点集从一个坐标系变换到另一个坐标系的有效方法,其次它可以表示无穷远的点。
问题:两条平行线相交于一点
欧式几何空间同一平面的两条平行线不能相交,在透视空间里面,两条平行线可以相交。(火车铁轨)
解决方法:齐次坐标
在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有X = x/w,Y = y/w
(1, 2, 3), (2, 4, 6) 和(4, 8, 12)对应同一个欧式点Euclidean point (1/3, 2/3),任何标量的乘积,例如(1a, 2a, 3a) 都是对应笛卡尔空间里面的(1/3, 2/3) 。因此,这些点是“齐次的”,因为他们代表了笛卡尔坐标系里面的同一个点。齐次坐标有规模不变性。
考虑如下方程组:
我们知道在笛卡尔坐标系里面,该方程组无解,因为C ≠ D,如果C=D,两条直线就相同了。 让我们在透视空间里面,用齐次坐标x/w, y/w代替x ,y:
现在我们有一个解(x, y, 0),因为(C-D)w=0,所以w=0;两条直线相交于(x, y, 0),这个点在无穷远处。
齐次坐标在计算机图形学中是非常有用的基本概念,例如将3D场景投影到2D平面上。
参考: http://www.songho.ca/math/homogeneous/homogeneous.html
关于齐次坐标的理解(经典)_JANESTAR的专栏-CSDN博客
高翔 视觉SLAM十四讲