假设小萝卜正携带着某种传感器在未知环境里运动, 由于相机通常是在某些时刻采集数据的,所以我们也只关心这些时刻的位置和地图。怎么用数学语言描述这件事呢?
- 一段连续时间的运动变成了离散时刻 t = 1, . . . , K 当中发生的事情;
- 用 x 表示小萝卜自身的位置, 于是各时刻的位置就记为 x1, . . . , xK,它们构成了小萝卜的轨迹。
- 地图方面,我们设地图是由许多个路标(Landmark)组成的,而每个时刻,传感器会测量到一部分路标点,得到它们的观测数据。不妨设路标点一共有 N 个,用 y1, . . . , yN 表示它们。
一、运动方程
什么是运动?我们要考虑从 k − 1 时刻到 k 时刻,小萝卜的位置 x 是如何变化的。
二、观测方程
什么是观测?假设小萝卜在 k 时刻,于 xk 处探测到了某一个路标 yj,我们要考虑 这件事情是如何用数学语言来描述的。
举例:
假设小萝卜在平面中运动,那么,它的位姿由两个位置和一个转角来描述,即
同时,运动 传感器能够测量到小萝卜在每两个时间间隔位置和转角的变化量:
小萝卜携带着一个二维激光传感器,激光传感器观测一个 2D 路标点时,能够测到两个量:路标点与小萝卜本体之间的距离 r 和夹角 ϕ,记路标点为
观测数据为
运动方程和观测方程为
传感器是相机,那么观测方程就是“对路标点拍摄后,得到了图 像中的像素”的过程。
三、联合方程
SLAM 过程可总结为两个基本方程:
当我们知道运动测量的读数 u,以及传感器 的读数 z 时,如何求解定位问题(估计 x)和建图问题(估计 y)?这时,我们把 SLAM 问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?
四、状态估计
状态估计问题的求解,与两个方程的具体形式,以及噪声服从哪种分布有关。