《视觉SLAM十四讲》笔记
ch02 初识SLAM
经典视觉SLAM框架
视觉SLAM流程包括以下步骤:
1.传感器信息读取: 在视觉SLAM中主要为相机图像信息的读取和预处理.如果是在机器人中,还可能有码盘、惯性传感器等信息的读取和同步.
2.视觉里程计(Visual Odometry,VO): 视觉里程计的任务是估算相邻图像间相机的运动,以及局部地图的样子.VO又称为前端(Front End).
视觉里程计不可避免地会出现累积漂移(Accumulating Drift)问题.
3.后端优化 (Optimization): 后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图.由于接在VO之后,又称为后端(Back End).
在视觉 SLAM中,前端和计算机视觉研究领域更为相关,比如图像的特征提取与匹配等,后端则主要是滤波与非线性优化算法.
4.回环检测 (Loop Closing): 回环检测判断机器人是否到达过先前的位置.如果检测到回环,它会把信息提供给后端进行处理.
5.建图 (Mapping): 它根据估计的轨迹,建立与任务要求对应的地图.
地图的形式包括度量地图(精确表示地图物体的位置关系)与拓扑地图(更强调地图元素之间的关系)两种.
SLAM问题的数学表述
主要考虑从 k − 1时刻到 k 时刻,小萝卜的位置 x 是如何变化的.
运动方程:
1.xk,xk−1表示小萝卜在 k 和 k − 1时刻的位置
2.uk表示运动传感器的读数(有时也叫输入)
3.wk表示噪声
假设小萝卜在 k时刻于xk处探测到了某一个路标yj
观测方程:
zk,j–小萝卜在 xk位置上看到路标点yj,产生的观测数据.yj表示第j个路标点
vk,j–噪声
这两个方程描述了最基本的SLAM问题:当知道运动测量的读数u ,以及传感器的读数z 时,如何求解定位问题(估计 x )和建图问题(估计 y)?这时,我们就把SLAM问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?
ch03 三维空间刚体运动
旋转矩阵
点、向量和坐标系
1.向量a在线性空间的基[e1,e2,e3]下的坐标为[a1,a2,a3]T.
2.向量的内积与外积
2.1向量的内积: 描述向量间的投影关系
2.2向量的外积: 描述向量的旋转
其中 a^表示a的反对称矩阵
坐标系间的欧氏变换
1.欧式变换:
在欧式变换前后的两个坐标系下,同一个向量的模长和方向不发生改变,是为欧式变换.
一个欧式变换由一个旋转和一个平移组成.
2.旋转矩阵 R:
2.1推导:设单位正交基 [e1,e2,e3]经过一次旋转变成了 [e1′,e2′,e3′],对于同一个向量 a,在两个坐标系下的坐标分别为 [a1,a2,a3]T和 [a1′,a2′,a3′]T.根据坐标的定义:
等式左右两边同时左乘[e1T,e2T,e3T]T,得到:
矩阵R描述了旋转,称为旋转矩阵.