SLAM数学描述

SLAM过程可总结为两个基本方程:

Xk=f(Xk1,Uk,Wk) 运动方程

Zk,j=h(Yj,Xk,Vk,j) 观测方程

对于不同的传感器,这两个方程有不同的参数化形式。如果我们保持通用性,把它们取成抽象形式,那么SLAM过程可总结为上述两个基本方程。

这两个方程描述了最基本的SLAM问题:当我们知道运动测量的读数 u ,以及传感器的读数 z 时,如何求解定位问题(估计 x)和建图问题(估计 y)? 这时,我们把SLAM问题建模成了一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏着的状态变量?

状态估计问题的求解,与两个方程的具体形式,以及噪声服从哪种分布有关。我们按照运动和观测方程是否为线性,噪声是否服从高斯分布进行分类,分为线性/非线性和高斯/非高斯系统。其中线性高斯系统(LG 系统)最为简单,他的无偏最优估计可以由卡尔曼滤波器(KF)给出。而在复杂的非线性非高斯系统(NLNG系统)中,我们会使用以扩展卡尔曼滤波器(EKF)和非线性优化两大类方法去求解它。时至今日,主流视觉SLAM使用以图优化(Graph Optimization)为代表的优化技术进行状态估计。我们以为优化技术已经明显优于滤波器技术,只要计算资源允许,我们通常都偏向于使用优化方法。

二、什么是运动? 我们要考虑从 K1 时刻到 K 时刻,机器人的位置 X 是如何变化的。

通常,机器人会携带一个测量自身运动的传感器,比如说码盘或惯性传感器。这个传感器可以测量有关运动的读数,无论什么传感器,我们都能使用一个通用的、抽象的数学模型:

Xk=f(Xk1,Uk,Wk)

这里的 Uk 是运动传感器的读数(有时也叫输入),Wk 为噪声。

三、什么是观测? 假设机器人在K 时刻,于 Xk 处探测到了某一个路标 ,我们要考虑这件事情是如何用数学语言来描述的。

当机器人在 位置上看到某个路标点 ,产生了一个观测数据 ,用一个抽象的函数h 来描述这个关系:

Zk,j=h(Yj,Xk,Vk,j)

这里Vk,j 是这次观测里的噪声。

最后修改:2023 年 11 月 10 日
如果觉得我的文章对你有用,请随意赞赏