24小时新闻关注

cbg,王珮瑜,虎皮尖椒

本涂鸦跳跃豪华版文将简化卡尔曼滤波器。希望你能学习并揭开你在学习卡尔曼过滤器中让你感觉到神秘的东西。

要了解卡尔曼滤波器,我们需要了解基础知识。在卡尔曼滤波器中,分布由所谓的高斯分布给出。

什么是高斯分布

高斯是位置空间上的连续函数,下面的区域总和为1。

高斯的特征在于两个参数,平均值,通常缩写为希腊字母Mu,以及高斯的宽无翼鸟家庭教师漫画度,通常称为方米福网差2(Sigma square)。因此,我们任务是保持2平方作为我们试图找到的对象位置的最佳估计。

高峰分布的均值和方差

确切的公式是二次函数的指数,其中我们取表达式的指数。现在在下面的等式中,如果x等于,则分子变为0。事实证朱兰玺大哭明,我们必须通过常数1除以22的平方根来对其进行归一化。

什么是方差?

方差是高斯扩散的度量(即曲线下面积的扩展)。较大的方差对应于较短的高斯。 方差也是一种确定性的衡量标准; 如果你试图找到最确定的汽车位置之类的东西,你会想要一个高斯汽车,其平均值是汽车的位置,并且具有最小的不确定性/传播。

代码中的高斯函数实现

如何更新测量?

在卡尔曼滤波器中,我们迭代测量(测量更新)和运动(预测)。更新将使用贝叶斯规则,这不过是点乘或乘法。在预测中,我们使用总概率,即卷积或简单的加法。

测量更新和预测周期

执行测量周期然后预测周期如下:

1. 假设你正在本地化另一辆车,并且你有一个先验分布,如下所示; 它是一个非常宽的高斯平均值。这是我们之前的一个例子,我们对位置相贵族四叶草的恶少们当不确定,但测量告诉了我们很多关于车辆的位置。

2. 最终均值在两个旧均值,先验均值和测量均值之间移动。它在测量方面略微进一步,因为测量比先前测量有更李路琦确定的车辆位置。我们越确定,我们就越能在某个答案的方向上取平均值。

均值的本地化(绿色)

如何更新参数?

1. 假设我们乘以两个高斯,如贝叶斯规则,先验和测量概率。先验具有Mu的均值和Sigma平方的方炉石烤蛇宴差,并且测量具有Nu的平均值和r平方的协方差。

2. 然后,新均值Mu prime是旧均值的加权和。Mu由r平方加权,Mu由Sigma平方加权,由加权因子的总和标准化。新的方差项将是Sigma square prime。

3. 显然,先验高斯具有更高的不确定性,因此Sigma平方更主人请解开大,这意味着nu的加权远大于Mu。因此,平均值将比mu更接近nu。有趣的是,方差项不受实际方法的影响,它只使用以前的方差。

更新参数

它在代码中的实现如下:

如何实现高斯运动?

1. 一个新的意思,是你的旧意思加上通常称为你的动作。所以,如果你在x方向移动超过10米,这将是10米,你知道西格玛广场是你活魂岛的旧西格玛广场加上高斯运动的方差。这就是你需要知道的,这只是一个补充。

2. 在预测步骤中得到的高斯只是将这两个东西加起来,mu加上u和sigma square加r square。

运动更新/预测功能

它在代码中的实现旧手机自制热成像如下:

# the mothon update/predict function
def update(mean1, varhumping1, mean2, var2):
''' This function takes in two means and two squared variance term秋落青成s,
and retuANALTUberns updated gaussian parameters.'''
# Calculate the new parameters
new_mean = mean1 + mean2
new_var = var1 + var2
return [new_mean, new_var]

所以现在让我们把所有东西放在一起。让我们编写一个主程序,它接受这两个函数,更新和预测,并输入一系列测量和运动。在我选择的例子中:5.,6.,7.,9和10的测量值是1.,1.,2.,1.,1。

如果初始估计为5,那么这一切都会很好,但我们将其设置为0,具有非常大的不确定性10,000。 假设:测量不确定度为常数4, 运动不确定性为常数2。

for n in range(len(measurements)):
# measurement update, with un欧美撸啊撸certainty
彼得老哥腿模视频mu, sig = update(mu, sig, measurements[n], measurement_sig)cbg,王珮瑜,虎皮尖椒
print('Update: [{}, {}]'.format(mu, sig))
# motion update, with uncertainty
mu, sig = predict(mu, sig, motions[n], motion_sig)
print('Predict: [{}, {}]'.format(mu, sig))

当你运行这个时,你对位置的第一次估计应该基本上变成5-4.99,原因是你的初始不确定性是如此之大,估计是由第一次测量所主导的。您的不确定性会缩小到3.99,这比测量不确定性稍好一些。 然后你预测你加1,但不确定性增加到5.99,这是2的运动不确定性。你根据测量值6再次更新,你的估计值为5.99,差不多是6.你再次移动1。你测量7.你移动2.你测量9.你移动廖婧假身份1.你测量10,僵约之超级进化你移动一个最后的1.然后输出作为最终结果,预测10.99的位置,这是你的10位移动1,不确定性 - 剩余不确定度为4。

Update: [4.998000799680128, 3.9984006397441023]
Predict艺卡云: [5.998000799680128, 5.998400639744102]
Update: [5.999200191953932, 2.399744061425258]
Predict: [6.999200191953932, 4.399744061425258]
Update: [6.999619127420922, 2.0951800575117594]
Predict: [8.999619127420921, 4.09518005751176]
Update: [8.999811802788143, 2.0235152416216957]
Predict: [9.999811802788143, 4.023515241621696]
Update: [9.999906177177365, 2.0058615808441944]
Predict: [10.999906177177365, 4.005861580844194]
Final result: [10.999906177177365, 4.005861580844194情遗东门]

结果

通过循环一系列x值并创建高斯值的结果列表来绘制高斯,将导致:

推荐新闻