SLAM Summary
What's SLAM
SLAM 是 Simultaneous Localization and Mapping,即同时定位与建图。
history
separate
最初,定位和建图问题是被看成两个独立问题研究的:
- 定位问题的关键是事先给定环境地图;
- 建图问题的关键是实现给定机器人观测时刻的全局位姿;
unify
-
1986 年将定位和建图问题放在概率论理论框架下统一研究
- 采用了基于概率论理论框架对机器人不确定性进行了讨论
- 将定位和建图中的机器人位姿量与路标点作为统一的估计量进行整体状态估计
-
2006 年使用 SLAM 名词进行表述
- 指定了详细的概率理论分析框架
- 对计算效率、数据关联、收敛性、一致性进行了讨论
aims
SLAM 的目的是使装载了特定传感器的移动机器人能够:
- 无先验环境知识的情况下
- 在移动过程中对周围进行建图
- 在移动过程中估计自己的运动和位置
status
- SLAM 在 无干扰 时,在 理论 层面上是一个已经被解决的问题 -> 工作环境限定在静态、刚体、光照变化不明显、没有人为干扰的场景时,SLAM 已相当成熟
- 现实中实现通用的 SLAM 解决方案存在实质性问题 -> 在构建和使用感知丰富的地图时存在重大问题(见数据关联部分)
categories
SLAM 依据概率图模型分为:
- 基于贝叶斯网络的滤波方法(最大似然法)
- 基于因子图的优化方法(最小二乘法)
classic
- 在贝叶斯网络中采用滤波法求解 SLAM
- 滤波法实时获取每一时刻的信息,并把信息分解到贝叶斯网络的概率中去
- 滤波法是在线 SLAM 系统,计算代价昂贵
滤波主要分为以下两种:
-
参数滤波
- 参数滤波又分为卡尔曼滤波和信息滤波
- SLAM 上目前应用广泛的是扩展卡尔曼滤波(EKF)
- 参数滤波在非线性问题上计算效率存在巨大问题,每一次观测后都需要对该协方差矩阵执行更新计算,地图规模很大时计算将无法进行下去
- 非参数滤波 粒子滤波(PF) -> Fast SLAM / Gmapping
modern
- 在因子图中采用优化方法求解 SLAM
- 优化法简单地累积获取到的信息,然后利用之前所有时刻累积到的全局性信息离线计算机器人的轨迹和路标点
- 优化法是完全 SLAM 系统,一开始实时性较差,后来优化方法在稀疏性和增量求解方面的突破,以及闭环检测方面的研究具有重大价值
优化方法的计算信息存储在各个待估计变量的约束之中,利用这些约束条件构建目标函数进行优化求解,它是非线性化的最小二乘问题
求解策略分为以下两种:
-
线性化求解
- 对非线性化问题进行线性化近似处理
- 直接求解线性方程得到待估计量,如 Graph SLAM
-
迭代求解
- 利用迭代策略,让目标函数快速下降到最小处
- 如梯度下降法等
工具有:
- Ceres-Solver 非线性优化
- g2o 图优化
- GTSAM 增量优化工具
- iSAM
mainstream
主流的 SLAM 多采用基于最小二乘的迭代优化求解
-
激光
SLAM
- 粒子滤波
gmapping
- 室内
cartographer
- 室外
LOAM
- 粒子滤波
-
视觉
SLAM
- 直接法
LSD_SLAM
- 半直接法
SVO_SLAM
- 稀疏法
ORB_SLAM
- 直接法
-
混合
SLAM
- 激光+视觉
rtabmap
IMU
+ 视觉VINS
- 激光+视觉
- 深度
SLAM
Key Definitions
data association
SLAM 建图是增量过程,环境路标信息需要被不断加入到已构建的地图中。
数据关联的关键在于是否能将在 不同地方 观测到的 同一个实物 所产生的路标特征判断为同一个路标特征。
数据关联可能由下列问题导致:
- 传感器观测错误 -> 多传感器联合观测;
- 定位累积误差 -> 闭环检测是有效降低定位累积误差的方式;
convergence
收敛用于衡量 SLAM 在理论上的可行性。
- 机器人观测模型和运动模型都具有不确定性;
- 不确定性导致估计的路标特征与实际环境特征存在偏差;
在概率框架下,具有以下特性:观测越多,地标估计之间的相关性单调增加。即无论机器人运动如何,对地标相对位置的了解总是会提高,地标的联合概率密度会随观察次数增加而上升。
consistency
收敛的一致性讨论的是估计量收敛于实际数值的问题。
- 弱一致收敛 -> 依概率收敛 -> 估计量取值与真值不一定一致
- 强一致收敛 -> 严格收敛 -> 估计量取值与真值一定一致
Probabilistic graphical model
Bayes' theorem
$$ p(x|y)=\frac{p(y|x)p(x)}{p(y)} $$
$p(y)$ 与 $x$ 是独立的,因此 $p(y)^{-1}$ 对任何 $x$ 的后验概率 $p(x|y)$ 是相同的,故 $p(y)^{-1}$ 在贝叶斯公式中常作归一化变量,用 $\eta$ 表示。
$$ p(x|y,z)=\frac{p(y|x,z)p(x|z)}{p(y|z)} $$
Preliminaries
在一段连续时间中的运动分解到离散的时间 $t=1,2,...K$ 中,在这些时刻中:
- $x_k$ 状态向量,描述在 $k$ 时刻机器人的位置和方向
- $u_k$ 控制向量,描述在 $k-1$ 时刻下达给机器人的指令,要求其在时刻 $k$ 时状态转为 $x_k$
- $y_i$ 地标向量,描述第 $i$ 个位置的地标,假设其位置保持时间不变
- $z_{k,j}$ 在时刻 $k$ 时(或在 $x_k$ 状态时),观测到第 $j$ 个地标点的观测向量
- $X_{0:k}=\{x_0,x_1,...,x_k\}=\{X_{0:k-1},x_k\}$ 所有的状态向量的集合
- $U_{1:k}=\{u_1,u_2,...,u_k\}=\{U_{1:k-1},u_k\}$ 所有的控制向量的集合
- $y=\{y_1,y_2,...,y_n\}$ 代表所有的地标点的集合
- $Z_{1:k}=\{z_1,z_2,...,z_k\}=\{Z_{1:k-1},z_k\}$ 代表所有的观测点的集合
Probabilistic SLAM
probabilitiy distribution
$$ P(x_k,y|Z_{1:k},U_{1:k},X_{1:k})=P(x_k,y|Z_{1:k},U_{1:k},x_0) $$
它描述了机器人状态向量和地标集合在时刻 $k$ 的联合后验概率密度。如果状态向量是完整的,那么它是所有以前时刻发生的所有状态的充分总结。
具体来说, $x_{k-1}$ 是直到 $k-t$ 时刻的控制和测量的一个充分统计量,即 $U_{0;k-1}$ 和 $Z_{0;k-1}$ ,仅控制变量 $u_k$ 关心状态 $x_{k-1}$ 。
$$ P(x_k,y|Z_{1:k-1},U_{1:k},x_0)=P(x_k,y|x_{k-1},u_{k}) $$
observation model
$$ P(z_k|Z_{1:k-1},U_{1:k},x_k,y)=P(z_k|x_k,y) $$
一旦机器人的状态和地图确定,观测值和给定地图和当前机器人状态是条件独立的。
motion model
$$ P(x_k|x_{k-1},u_k) $$
- 假设状态转换是一个马尔科夫链
- 观测和地图都是独立的
time-update
$$ P(x_k,y|Z_{1:k-1},U_{1:k},x_0)=\int P(x_k|x_{k-1},u_k)P(x_{k-1},y|Z_{1:k-1},U_{1:k-1},x_0) dx $$
mesurement-update
测量更新过程:
\begin{align} P(x_k,y|Z_{1:k},U_{1:k},x_0)&=\frac{P(z_k|Z_{1:k-1},U_{1:k},x_k,y)P(x_k,y|Z_{1:k-1},U_{1:k},x_0)}{P(z_k|Z_{1:k-1},U_{1:k})} \notag \\ &=\frac{P(z_k|x_k,y)P(x_k,y|Z_{1:k-1},U_{1:k},x_0)}{P(z_k|Z_{1:k},U_{1:k})} \end{align}Math equation
State
系统状态公式: $$ P(x_k|x_{k-1},u_k) \iff x_k = f(x_k-1,u_k,w_k) $$
Observation
观测状态公式: $$ P(z_k|x_k,y) \iff z_k = h(x_k,y,v_{k,j}) $$
Classical Visual SLAM Framework
传感器数据 -> 前端估计 -> 后端优化 -> 回环检测 -> 建图
Sensor data reading
相机图像信息读取和预处理,相机分为以下几类:
- 单目(monocular)
- 立体(Stereo)
- 事件(event-based)
- 广角(omnidirectional)
- 深度(RGB-D)
Visual Odometry
基于局部一致性提供机器人的位姿初步估计,估算相邻图像间相机的运动,以及局部地图的形状,并发送到后端进行优化
特别地,视觉里程计的 累积漂移 被认为是不可避免的。
Optimization
后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,得到 全局一致 的轨迹和地图。
总体来说,后端优化处理 噪声 问题。
Loop Closure Detection
回环检测判断是否达到过先前的位置,检测到回环会将信息提供给后端进行处理。
通过判断图像相似性完成。
Mapping
根据估计的轨迹,建立地图。
Metric Map
度量地图精确表示物体间的位置关系,分为稀疏和稠密两种。
- 稀疏地图可用于定位
- 稠密地图可用于导航
度量地图目前有如下类别:
- 2D 栅格地图 离散网格地图,稀疏表示
- 3D 点云地图 由激光雷达或 RGB-D 相机获取的大量点云数据,稠密表示
- 3D 网格地图 三角形或四边形网格,可提供高分辨率和精度的环境信息,稠密表示
Topological Map
拓扑地图强调元素之间的关系,只考虑节点的连通性。 2D 拓扑地图