基于卡尔曼滤波的SOC估算方法(一)——初识卡尔曼

在正式开讲之前,我建议大家先了解一下卡尔曼滤波提出的背景。大家可能都知道卡尔曼滤波因为伟大的数学家鲁道夫·卡尔曼而得名,那么卡尔曼何许人也呢?为什么卡尔曼滤波这么牛掰呢?卡尔曼滤波真的是老爷子率先提出来的吗?

我第一次听说卡尔曼滤波是在2016年夏天,有天早上听到办公室的师兄们在谈论卡尔曼老爷子去世了,于是去图书馆找了本讲卡尔曼滤波的书来读。说实话,当时就跟在啃一块石头一样,磨的自己牙生疼,却没有任何进展,虽然直到硕士毕业整整三年我还是对卡尔曼滤波一知半解,只能算“知其然而不知其所以然”,但不管怎么说也算是基本的入门了吧。

我的个人理解是,卡尔曼滤波最重要的用途是在充满各种不确定的环境中,提炼出我们想要的各类信息。在进行技术上的讲解之前,我先举一个简单的例子,可能跟卡尔曼滤波没什么关系,但是大家可以先尝试着去理解其中的思想。

比如某地方发生了刑事案件,警察抓住了两位嫌疑犯,想从他们口中审出案件信息,但是两名嫌疑犯都非常狡猾,警察不敢完全相信他们的说辞。那么负责审问的警察可以怎么做呢?

首先,突击审讯其中一位犯人甲,让他说案件的经过,这时候警察是无法判断他是否在说谎的,为了避免他说的太天花乱坠影响警察的判断,所以需要在合适的时间打断他。这个时候,警察可以假设犯人甲说的是真的,基于其说辞继续审讯犯人乙,将两个人的说辞在逻辑上进行结合对比,警察就能对两个人的供词准确性有个基本的判断。

带着这一判断,对甲继续审讯,在他明显错误的地方对他进行纠正,避免他过分远离实情,让他继续往下说之后,再审讯乙。

以此类推,虽然最终得出的结论和真相还有差距,但是可以防止这一差距过大,直到满足破获案件的需求即可。

当然,这一例子可能不太恰当,也有很多漏洞,我们这里不牵涉专业的法律知识,仅作为对理解卡尔曼滤波的辅助。

我们再来逐步的向卡尔曼滤波来切入。首先分析一下卡尔曼滤波的几个关键因素:

1,状态:我们需要有一个明确的目标(这里的案件真相),也就是我们到底想要得到什么信息,这一信息在卡尔曼滤波中被称为状态(state),状态可以是一个参数,也可以上多个参数组成的向量;

2,变量:即不断变化的信息(这里犯人甲乙的供词),只有这些信息不断变化,才能推动我们不断向事件的真相逼近,如果犯人只会说“我不知道”,那么无论手段多高明都无法破案的。这些变化的信息在卡尔曼滤波中被称为变量,而且要注意卡尔曼滤波的实现至少要存在两个变量,否则即使甲愿意供述,而乙什么都不说,也是无法判断甲是否可信。

3,不确定性:之所以要用卡尔曼滤波,就是因为生活中处处存在不确定性(uncertainty/inaccuracy),如果还没等警察开始盘问,其中一个犯人已经吓得瑟瑟发抖,把所有真相和盘托出,那就没必要折腾了。不确定性在卡尔曼滤波中被称为噪声(noise)。

大家可能觉得上面的例子比较抽象,更像是人为杜撰的一个故事而不具有现实意义。但是你要知道,人类第一次飞向月球时其实也是利用了相似的原理。

“时间回到上世纪60年代,时任NASA动力分析处主任的斯坦尼·施密特(Stanley F. Schmidt),那个主导人类历史上第一个登月计划中导航项目的男人,正在为一个问题而发愁:飞船从陀螺仪、加速度计和雷达等传感器上获取的测量数据充满了不确定性误差和随机噪声。当飞船飞向月球表面时,如果不能很好地处理这些误差和噪声,产生的危害将是致命的,因为只要偏差超过一定阈值, 飞船的超高速就会将这偏差迅速放大,进而飞船就会偏离预定轨道,最终,极有可能飞向太空就再也回不来了。施密特尝试了时下各种滤波算法后,效果均不理想,直到遇到了卡尔曼。
施密特随即邀请卡尔曼访问NASA,双方一见钟情,眉来眼去之后便确认通过卡尔曼滤波算法可以对飞船所处的位置和速度做出精确估计,同时还可以确定这些估计在统计意义上的好坏程度。随后,两人爱情的结晶成功助力阿波罗飞船登月。卡尔曼滤波算法自此一战成名,直到今天,还一直引领控制理论和系统科学的主流。卡尔曼自此也开始成为各种荣誉和奖项的收割机。”

以上内容摘自卡尔曼滤波,达官显贵的“护城河”

那么具体是怎么实现的呢?

宇宙飞船的航行过程中可以通过陀螺仪、加速度仪等设备来确定自身的航向角、速度、位移等信息,通过这些信息建立自身的运动学方程,理论上就能计算出自身所处的位置。但是,问题就在于这些仪器设备都是存在误差的,即使阿波罗登月计划中所使用是当时最为先进的传感器,依然不能完全消除误差。虽然这些误差可能不大,但是中国有句老话“差之毫厘,谬以千里。“再小的误差随着时间的积累也会出现极度危险的效果,这就好比上面的例子中的犯人甲。

还有另外一种定位方法就是通过雷达等传感器来实现定位,但是这种定位方法同样存在误差,单凭这一信息还是不能对宇宙飞船进行定位,这就好比犯人乙。

而卡尔曼滤波要做的事,就是先通过陀螺仪、加速度仪等传感器来对自身的位置进行更新,当误差积累到一定程度时,再通过雷达等传感器实现定位,并将两种定位结果进行融合,从而进一步缩小定位误差,避免定位误差的野蛮生长。以此类推,就实现了宇宙飞船的定位。

好吧,好像说了这么多,还是没有真正开始推导卡尔曼滤波的实现过程。各位看官您别急,单纯的数学推导其实没那么复杂,真正想要理解卡尔曼滤波,还是要从原理上入手。

看到这里,不妨休息一下,也回过头来想一想,卡尔曼滤波真正在做的事情,就是从多个充满误差的信息中,提炼中我们想要的状态,并让状态的精度尽可能提高。下一部分,我们就来聊一聊是如何做到的。

想要学习卡尔曼滤波算法、神经网络等算法的原理、推导过程、程序代码及应用等,可以关注下方公众号^_^^_^

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可亦key

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值