根据贝叶斯滤波快速理解卡尔曼滤波Kalman Filter(KF)
文章目录
转载:https://blog.****.net/varyshare/article/details/97891376
该博主里面有一个开源项目,有兴趣的可以了解一下。
推荐开源项目:简单的SLAM与机器人教程与编程实践-github
牛逼的算法往往都是来源于一个很简单的思想所演化而来,如果你不了解这个思想和演化过程那就谈不上了解那个牛逼的算法
直观理解
首先卡尔曼滤波要解决的问题是什么?我以机器人估计自己离障碍物距离为例
答:首先机器人已知“上个时刻机器人离障碍物距离”,“传感器测量的机器人离障碍物的距离(我们称它为观测值,比如雷达直接测量机器人离障碍物距离7m)”和“自己当前时刻的速度”这三个数据。而根据“上个时刻机器人离障碍物距离”和“自己当前时刻的速度”可以估算出当前机器人离障碍物的距离(我们称它为估计值)。比如:上一秒离障碍物10m,速度是4m/s,那么现在这秒估计就离障碍物距离是6m。那么问题来了,机器人离障碍物的距离现在既有个观测值7m,又有个估计值6m。到底相信哪个?单纯相信观测值万一那传感器坏了呢?单纯相信估计值那么万一上个时刻的距离估计值或者速度不准呢?所以,我们要根据观测值和估计值的准确度来得到最终机器人离障碍物的距离估计值。准确度高的就最终结果比重高,准确度低就占比低。如果雷达测量的那个7m准确度是90%,根据速度估计出的那个6m准确度是80%,那么最终的距离估计结果就是
直观理解讲完了,以上
但是上面的90%与80%这两个准确度是怎么计算的?卡尔曼这个人到底是怎么发明卡尔曼滤波算法的?卡尔曼发明算法的思路历程是什么?卡尔曼滤波算法到底与贝叶斯滤波算法有什么联系?我想这些肯定是你脑海中挥之不去的阴影,仅仅从直观理解无法解答这些问题。
卡尔曼滤波(Kalman filter)算法与贝叶斯滤波(bayes filter)算法之间的联系是什么?
答:贝叶斯滤波是一种思想,它告诉了我们怎么在知道观测值与控制命令这两种值的可信度时如何计算最终估计出的值的可信度。但是贝叶斯滤波并没有告诉我们怎么计算观测值的可信度,怎么对控制模型(发出控制命令后机器人是按照怎样的模型执行)进行建模。而卡尔曼滤波算法就是对贝叶斯滤波算法的一个具体实现。卡尔曼滤波认为观测值可信度模型是一个正态分布,控制模型是一个正态分布。
所以卡尔曼滤波算法是源自于对贝叶斯滤波算法的进一步演化,我希望在学本文前你能对贝叶斯滤波有了解。如果你还不清楚贝叶斯滤波怎么做的?可以看看这篇文章[理解与推导贝叶斯滤波(Bayes Filter)算法](https://blog.****.net/weixin_44088559/article/details/105389194)。
回顾一下贝叶斯滤波算法:
为何贝叶斯滤波算法要求一个概率值?
卡尔曼滤波对贝叶斯滤波做了什么?
卡尔曼滤波是如何实现贝叶斯滤波的?
我以机器人状态估计为例。