利用卡尔曼滤波我们可以做什么?

本文探讨了卡尔曼滤波如何帮助机器人在树林导航中提高定位精度。通过结合GPS传感器(精度10m)和机器人运动信息,卡尔曼滤波能够整合不确定信息,提供更精确的位置估计。卡尔曼滤波假设状态变量(如位置和速度)是高斯分布,利用状态转移矩阵和测量矩阵处理非线性关系,以减小误差并更新状态估计。在实际应用中,需要考虑外界干扰、传感器噪声等因素,并通过初始化、预测和观测步骤不断优化状态估计。
摘要由CSDN通过智能技术生成



利用卡尔曼滤波我们可以做什么?
我们举一个玩具的栗子:你开发了一款小型机器人,它可以在树林里自主移动,并且这款机器人需要明确自己的位置以便进行导航。

我们可以通过一组状态变量

来描述机器人的状态,包括位置和速度:

注意这个状态仅仅是系统所有状态中的一部分,你可以选取任何数据变量作为观测的状态。在我们这个例子中选取的是位置和速度,它也可以是水箱中的水位,汽车引擎的温度,一个用户的手指在平板上划过的位置,或者任何你想要跟踪的数据。
我们的机器人同时拥有一个GPS传感器,精度在10m。这已经很好了,但是对我们的机器人来说它需要以远高于10m的这个精度来定位自己的位置。在机器人所处的树林里有很多溪谷和断崖,如果机器人对位置误判了哪怕只是几步远的距离,它就有可能掉到坑里。所以仅靠GPS是不够的。

同时我们可以获取到一些机器人的运动的信息:驱动轮子的电机指令对我们也有用处。如果没有外界干扰,仅仅是朝一个方向前进,那么下一个时刻的位置只是比上一个时刻的位置在该方向上移动了一个固定距离。当然我们无法获取影响运动的所有信息:机器人可能会受到风力影响,轮子可能会打滑,或者碰到了一些特殊的路况;所以轮子转过的距离并不能完全表示机器人移动的距离,这就导致通过轮子转动预测机器人位置不会非常准确。
GPS传感器也会告知我们一些关于机器人状态的信息,但是会包含一些不确定性因素。我们通过轮子转动可以预知机器人是如何运动的,同样也有一定的不准确度。
如果我们综合两者的信息呢?可以得到比只依靠单独一个信息来源更精确的结果么?答案当然是YES,这就是卡尔曼滤波要解决的问题。


卡尔曼滤波如何看待你的问题
我们再来看下需要解决的问题,同样是上边的系统,系统状态包括位置和速度。

我们不知道位置和速度的准确值;但是我们可以列出一个准确数值可能落在的区间。在这个范围里,一些数值组合的可能性要高于另一些组合的可能性。

卡尔曼滤波假设所有的变量(在我们的例子中为位置和速度)是随机的且符合高斯分布(正态分布)。每个变量有一个平均值,代表了随机分布的中心值(也表示这是可能性最大的值),和一个方差代表了不确定度。
在现实中,速度和位置是有关联的。如果已经确定位置的值,那么某些速度值存在的可能性更高。
假如我们已知上一个状态的位置值,现在要预测下一个状态的位置值。如果我们的速度值很高,我们移动的距离会远一点。相反,如果速度慢,机器人不会走的很远。
这种关系在跟踪系统状态时很重要,因为它给了我们更多的信息:一个测量值告诉我们另一个测量值可能是什么样子。这就是卡尔曼滤波的目的,我们要尽量从所有不确定信息中提取有价值的信息!
这种关系可以通过一个称作协方差的矩阵表述。简而言之,矩阵中的每个元素 表示了第i个状态变量和第j个状态变量之间的关系。(你可能猜到了协方差矩阵是对称的,即交换下标i和j并无任何影响)。协方差矩阵通常表示为Σ,它的元素则表示为

 

(这里我们只记录了位置和速度,但是我们可以把任何数据变量放进我们的系统状态里)
下一步,我们需要通过k-1时刻的状态来预测k时刻的状态。请注意,我们不知道状态的准确值,但是我们的预测函数并不在乎。它仅仅是对k-1时刻所有可能值的范围进行预测转移,然后得出一个k时刻新值的范围。

我们可以通过一个状态转移矩阵F k;

来描述这个转换, 把k-1时刻所有可能的状态值转移到一个新的范围内,这个新的范围代表了系统新的状态值可能存在的范围,如果k-1时刻估计值的范围是准确的话。
通过一个运动公式来表示这种预测下个状态的过程: 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值