电子说
讲解卡尔曼滤波之前,先讲一个故事。两个酿酒师傅判断当前酒的度,一个老师傅,一个学徒。酒厂里酒的度数,老师傅的判断大多时候是更加准确,而学徒大多时候的判断误差会大一些。一坛经过10天发酵的酒,老师傅说是30度,学徒说是26度。但是这坛酒的实际度数是不知道的,那么我们怎样知道一个相对准确的结果呢?我们可以直接认为老师傅的回答正确,但是 老师傅也会马失前蹄,学徒也会有准的时候 ,只是大多数时候误差大一些。怎么得到相对可信度更高的结果呢。可以通过如下公式:
预测度数=K* 师傅预测+(1-K) * 学徒预测
来作为酒的度数, K可以理解为对老师傅判断的可信度,1-K可以认为是对学徒判断的可信度 。显然让K大一些,比如K=0.8,说明我们更相信师傅的判断。随着学徒技艺的熟练K变为了0.6,那么那么对学徒判断的权重增加了,对师傅判断的可信度权重减小了。所以这个K很重要。
同样的,从工程试验中来说明,假设有两个厂商的加速度传感器A和B,汽车在跑,不断的读取A和B,每次会得到两个值,那么该相信哪个传感器的结果呢?传感器测量出来的结果一定是有误差的,不同厂商的传感器误差范围不一样,加上传感器受到的环境的干扰等因素这样也会干扰传感器的测量结果。那么怎么得到更加可靠的结果呢?是不是和刚才的师傅判断酒的度数很像?
假设A厂商的传感器质量好精度高,B厂商的误差大,精度小,那么我们肯定更加相信A的测量结果。我们同样 ,传感器A ,传感器B ,则:
综合考虑传感器A和传感器B这就是兼听则明。K越大说明越相信传感器A测量的数据 。
如何选择最优的K,使上面得到的 可信度最高呢?这就需要卡尔曼滤波 。
下面这段是百度出来的卡尔曼滤波:
卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法 。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
用土话来解释就是测量系统的状态,由于有各种噪声,会导致测量结果存在一定的误差,那么如何降低这些误差得到更加可信的数据呢,那么就是使用卡尔曼滤波做最优估计。
卡尔曼滤波适用于线性系统,并且系统的噪声满足高斯分布 (通常的工程过程噪声都满足)。
卡尔曼滤波是 以最小均方误差为估计的最佳准则 。也就是卡尔曼滤波定义的系统的最优是让估计结果的分布的方差最小的估计。
接下来引入卡尔曼滤波,首先引入 高斯分布或者叫正态分布 。
通常工业场景中许多测量和过程中的误差都都满足正态分布,所以传感器的测量结果X=T+a,噪声a满足高斯分布,所以X也满足高斯分布。
传感器的测量结果X满足高斯分布:
其中期望值是u,方差是****sigma(这个符号打不出来,就是上面分布中的值,后面都用sigma)
数学表达为:
坐标图为:
高斯分布
然后解释卡尔曼滤波,还是以刚才的传感器来说明,日常中各种噪声,干扰都符合高斯分布。所以传感器的测量结果也是符合高斯分布
传感器A的测量 符合:
传感器B的测量 符合:
其中a和b就是测量噪声
预测加速度是:。 概率论可以证明两个高斯分布的线性组合也符合高斯分布 :
所以预测 符合:。当K取不同值的时候得到的 u‘和sigma 也不同。那么 最优估计是什么呢?刚才说了是让方差最小。也就是当取某个K的时候 sigma'最小的估计是最优估计 。
这是一个抛物线,可以证明当 的时候,
sigma'取最小值。将K带入可以得到:
的时候 预测加速度X’也符合高斯分布,并且sigma' 取最小值。这个时候是最优估计,可信度最高。
这就是卡尔曼滤波,我们画图如下:
卡尔曼滤波分布
可以看到 预测加速度X’ 更加的瘦高,所以这样得到的估计更加的可信 。
全部0条评论
快来发表一下你的评论吧 !