python卡尔曼滤波融合_数据融合之卡尔曼滤波示例

本文介绍了卡尔曼滤波在数据融合中的应用,通过高斯分布回顾和一个移动机器人定位的例子,详细阐述了卡尔曼滤波的工作原理。文章还探讨了1D和2D情况下的卡尔曼滤波,以及其在行人惯导系统中的应用,并提供了相关代码示例。此外,讨论了实际使用卡尔曼滤波时需要注意的问题,如状态变量、观测方程、过程噪声和测量噪声的确定。
摘要由CSDN通过智能技术生成

哎,难受,知乎把我的完美格式打乱成这样子。

卡尔曼几乎是做数据融合都知道的一个算法了把。卡尔曼滤波能够实现从有噪声的传感器数据中获取我们的较为准确的信息。而且通过卡尔曼,我们甚至能够去推算一些不可直接测量的值。

1.高斯知识的简单回顾

在卡尔曼滤波器中,我们的任务就是估计出物体最佳的期望以及方差出来。接下来我们来些一个简单的高斯函数

def f(mu,sigma,x):

return 1/sqrt(2.*pi*sigma) * exp(-.5*(x - mu)**2/sig,a2)

均值代表你的最佳估计,方差代表你的不确定性

对于多元的高斯分布,如果高斯分布是斜的,表示两个维度的不确定性是相关的

高斯另外一个条件概率的性质:

这个可以看作是给定的信息下,能够推测出的概率是多少。

以上是一个两个高斯信号的条件分布,对于条件分布,如果对于变量B,B我们可以看成是传感器提供的信息,我们非常非常不确定的话,那么自然很大很大,这样的逆就很小很小,最后其实对均值和方差那一项就没有影响了,也就是说B没有提供任何信息量。

这个公式反应了两个高斯信号相乘的话,会得到一个方差更小的高斯分布,直观上的理解就是我们的信息更多了,那么我们的不确定性也就减少了,这实际上也是卡尔曼滤波的更新过程的简单版

现在让我们写一个更新的函数

def update(mean1,var1,mean2,var2):

new_mean = (var2 * mean1 + var1 * mean2) / (var1 + var2)

new_var = 1 / (1 / var1 + 1 / var2)

return [new_mean new_var]

2. 一个移动机器人定位的例子

这个例子大家都应该见过,也就是一个不断测量和预测的过程实现定位的过程。

至于为什么运动会影起方差的减少,可以看下下面的图的过程。

以上是我们的运动更新,可以看到 由于运动的不确定性,它会导致运动之后的不确定性增加,也就是方差变大

def predict(mean1,var1,mean2,var2):

new_mean = mean1 + mean2

new_var = var1 + var2

ret

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值