摘要
SLAM到底是个啥?SLAM问题的求解思路是怎么样的?
这是一篇简单记录学习SLAM基本概念的博客。
SLAM到底是个啥?
SLAM问题可以描述为: 机器人在某个未知环境中从某个未知位置开始移动,在移动过程中根据传感器数据进行自身定位估计,同时在自身定位的基础上增量式构造地图,从而实现机器人对未知环境的地图构建和在地图中对自身的位置进行定位。对于机器人来说,SLAM主要回答了两个问题:1)我在什么地方? 2)周围环境是怎么样的?
要回答这两个问题,机器人需要通过传感器采集数据,然后根据这些数据推断出自身的位姿信息和所处的环境信息。假设机器人在某个时间$t$内通过传感器获得一系列连续的传感器数据,即观测值$Z$。依据机器人所配备的传感器,观测值$Z$可以是激光雷达数据,图像数据,里程计数据和惯性导航单元数据等。SLAM需要解决的就是通过观测值$Z$评估系统状态$X$。系统状态通常包含两部分,一部分用于表示机器人在环境中的位置,另一部分用于表示环境地图。通常,机器人会携带一个测量自身运动的传感器,比如里程计。因此可以构造一个评估函数,利用当前获得的传感器数据,从前一时刻的系统状态评估当前时刻的系统状态,如下所示:
$X_k=f(X_{k-1}, U_k,w_k)$
这里的$U_k$是运动传感器的数据,$w_k$为噪声。这里的$f$指代一种计算模型,当输入的运动传感器类型不同时,$f$的具体形式会千差万别。我们通常把它称为运动方程。
与运动方程相对应是观测方程。观测方程描述的是当机器人在$X_k$位置上利用传感器感知环境,产生了观测数据$Z_k$。此处同样用一个抽象的函数$h$来表述这个关系:
$Z_k = h(X_k, v_k)$
这里$v_k$表示此次观测的噪声。由于观测所用的传感器形式更多,因此这里的观测数据$Z$以及观测方程$h$也有许多不同的形式。
运动方程和观测方程描述了最基本的SLAM问题。因此SLAM问题可以作为状态估计问题,其中$Z$和$U$是已知的。当选定了传感器,运动方程和观测方程也是已知的,因此SLAM求解的目标就是对$X$进行估计,使得运动方程和观测方程等式两边尽可能的成立。
SLAM问题的解决思路
从应用的角度来看,SLAM问题涉及很多方面,包括传感器的选择,对$X$的估计方式,地图的表示形式等。
从传感器的角度来讲,SLAM依赖的传感器主要包括激光传感器和视觉传感器两大类。
从$X$的估计方式来讲,SLAM的求解思路主要包括基于滤波的求解和基于非线性优化的求解。目前普遍认为非线性优化的方法要由于滤波方法。
从地图的表示形式来讲,SLAM得到的地图表示方式主要分为度量地图与拓扑地图,度量地图有二维,三维,稀疏,稠密等多种表现形式。
后记
关于博客中提到的所有方面,等我懂了再写。(> <)