Kalman滤波是什么及作用
一种通过预测值和测量值组合来滤除随机噪音和不确定性,得到当前状态的滤波方法。
可用于融合多个传感器、估算带噪音的数据。
例如一个机器人可以沿着X轴运动,在理论上,若以10m/s的速度从0点出发向正方向运动,该机器人在1s过后将位于10m处。
但在实际情况中,由于轮子与地面的滑移和障碍物减缓速度的情况随机发生,1s的运动后机器人的位置是一个正态分布,其均值u=10,σ与机器人控制精度有关。
与此同时,若使用传感器来测量机器人的位置,得到的结果通常也是正态分布的。
正态分布及求和计算
1 |
|
命名惯例
x_t 状态 state
z_t 测量 measurement
u_t 控制 control action
测量更新 measurement update
例如,给机器人一个控制命令后,我们认为其位置(Prior belief)的高斯分布为mu,sigma2。
若此时,传感器测量得到的位置分布为v,r2,
那么构建融合的高斯分布是这样的:
新的均值:mu’ = (r2mu + sigma2v)/(r2 + sigma2)
新的方差:sigma2’ = 1/(1/r2 + 1/sigma2)
1 |
|
状态预测
在知道当前先验位置分布mu1,sigma2(1)的时候(sigma2表示sigma的平方),给出运动控制指令的先验作用效果分布mu2,sigma2(2),
预测其状态的公式如下:
后验均值 Posterior Mean mu’ = mu1 + mu2
后验方差 Posterior Variance sigma2’ = sigma2(1) + sigma2(2)
1 |
|
1D Kalman 滤波代码
1 |
|
多维度卡尔曼滤波
2d高斯
均值:一个均值组成的向量
方差:协方差矩阵,其对角线为方差,二维图像上与椭圆的长短轴相关;对角线之外的是相关项,与椭圆转动有关,正值向右转。
维度中变量的组合可是位置组合如[x, y]’,也可以是位置与速度组合如[x, x’]’
变量分为可见变量和隐藏变量,比如机器人的位置传感器获取其位置是可见变量,而其速度是可以通过位置与时间的关系得到的隐藏变量。
通过重复进行状态预测和测量更新,可以达到比单独传感更小的方差分布。
卡尔曼滤波例子
1 |
|
Kalman滤波的类型
KF-线性
EKF-非线性
UKF-高度非线性