☆组合导航课程(卡尔曼滤波)

515 阅读7分钟

状态估计基础

什么是估计

观测数据-准则解算-状态估计

准则: 最小二乘准则;最小方差准则

估计问题的三个步骤:

  • 1建立模型: zn=Axn+vn。建立模型有假设--卡尔曼滤波:线性模型,高斯白噪声。若非线性就线性化它--进行一阶泰勒展开,忽略高阶项(扩展卡尔曼滤波)。若噪声不是高斯的,也用其他方法
  • 2设定准则 =设定代价函数:误差平方法最小,最小方差最小,极大似然最大。不同情况用不同准则
  • 3最大化或最小化求取估计值。 求解的方法可以创新,近似,假设
    卡尔曼滤波是递推的线性的最小方差估计
    预测:天气预报

平滑:内插

滤波:利用当前时刻的量测估计当前时刻的状态=实时估计

性能指标=怎么评价估计好不好
第三个图估计的好,无偏且方差小
方差越小越好,所以有一个准则:最小方差估计

最小二乘估计

一般最小二乘

【注】 error的均值就是噪声V的均值,当V是零均值噪声的时候,error的均值就是0,则此估计就是无偏估计(这就是为什么假设噪声是零均值噪声的原因。)
所以算术平均得出的估计值就是一个最小二乘估计!!(H=1的情况);这里没有考虑不确定性
估计得到的方差比第一个万用表还差!所以估计得不好,还没有测量的好

一般最小二乘对所有观测值不分优劣,权重均相同

加权最小二乘

卡尔曼滤波中的卡尔曼增益就是个权值
精度高的给的权重大一点

怎么看精度高?----看方差-----所以直觉知取权重为方差的逆----可证明此时得到的估计的解的均方误差是所有解中最小的
重新用在之前的例题,得到的新的估计值的方差比测量值小,好!

递推最小二乘

上面加横表示的是之前k次的累计的

这是递推线性估计的一般表达式,卡尔曼滤波等别的线性递推估计也是这种形式

两种理解方式:

  • 如上式,当前估计=上一时刻估计+修正,修正=权重×新息
  • 第二种理解方式:把式子拆成\hat{X_{k+1}}=(I-...)\hat{X_{k}}+(...)Z_{k+1},当前时刻的估计等于在上一时刻估计和当前测量之间的加权求和
  • 估计和测量的权重由各自的方差(各自的精度)(不确定度)决定

最小二乘优缺点总结

这里没有用到最小方差准则(状态的误差),所以引出线性最小方差估计

线性最小方差估计

准则另一种表示:误差协方差矩阵的迹最小

【注】两个假设解出的X结果一样!

☆☆☆

  • 如果X、Z不服从正态分布,则线性最小方差估计只是所有线性估计中的最优者
  • 如果X、Z服从正态分布,则线性最小方差估计和最小方差估计等同,是在所有估计中的最优者
  • 不管如何,最小方差估计就是所有估计中的最优者

线性最小方差估计需要知道一阶矩和二阶矩,如果它们不变,则此随机过程是平稳随机过程

问题一:若是非平稳随机过程,(一阶矩和二阶矩等统计特性会随着时间的变化而变化),上一时刻的统计特性知道了,有方法去求下一时刻的统计特性?---通过卡尔曼滤波的多出来的一个状态方程来迭代求解

问题二: 解决方法:引入递推式

卡尔曼滤波

离散系统的数学描述

与之前的区别:

  • 离散化
  • 出现了状态方程--解决非平稳随机过程的估计问题

如果是非线性模型,大概两个思路

  • 模型线性化,最简单=扩展卡尔曼滤波 (最原始)---一阶泰勒展开后再用卡尔曼滤波
  • 无迹卡尔曼滤波粒子滤波,用一些离散的点去近似原本不满足的统计特性

☆☆重要的前提假设:

高斯白噪声 中的高斯是指概率分布是正态函数,而白噪声是指它的二阶矩不相关(自协方差只有当k=j,才不为零),一阶矩为常数(零均值),是指先后信号在时间上的相关性。

如果是非高斯的噪声的,就不能用卡尔曼滤波了。如有色噪声 就需要用一些方法转化为白噪声

Q和R要已知,如果它们是变化的,就得用自适应滤波

  • 初始值要已知 ,是因为卡尔曼滤波是递推式的,要从初始值开始递推,而且初始值不准不要紧,后面会逐渐收敛
  • 不相关 是因为后期推导有很多Xk和Wk、Vk的二阶矩(协方差),不相关就可以让这些二阶矩为0,简化推导;注意,因为Z=HX+V,所以Zk也与Wk、Vk不相关

卡尔曼滤波推导

思路:用状态方程 来用上一时刻的值来对当前时刻的值进行预测,传感器测出量测值,这两个值有一个权重,怎么衡量谁准?---误差的方差

总结

误差协方差矩阵更新方程这两个是等价的!,P更新用第二个则K更新也要用第二个!

注意到增益计算回路和实时测量值Zn无关,所以可以离线计算!

应用的问题:

定常系统:

定常系统: 状态转移矩阵、量测矩阵等不随着时间变化,它刚开始估计不太准,比较依赖量测,之后通过量测的修正使得估计的精度越来越好,最后达到平衡

实际应用的问题:(假设不满足):

☆☆卡尔曼滤波意义的总结

为什么噪声要零均值呢?

  • ---为了保证估计error的均值为0,即保证估计的无偏性

为什么要有状态方程?

  • 问题一:若是非平稳随机过程,(一阶矩和二阶矩等统计特性会随着 时间的变化而变化),上一时刻的统计特性知道了,有方法去求下一时刻的统计特性?---通过卡尔曼滤波的多出来的一个状态方程来迭代求解

为什么X、Z要服从正态分布?

  • ---因为如果X、Z服从正态分布,则线性最小方差估计和最小方差估计等同,是在所有估计中的最优者;如果X、Z不服从正态分布,则线性最小方差估计只是所有线性估计中的最优者;不管如何,最小方差估计就是所有估计中的最优者

为什么用递推式

  • 因为量测值越多,估计精度高,但矩阵阶数变大,计算量变大

卡尔曼滤波应用举例(代码讲解)

离散化: 泰勒展开

delta_t是采样周期

卡尔曼滤波五个方程是不变的,编程序要改变的只是输入。

matlab程序:

卡尔曼滤波在组合导航中的运用

因为是非线性的方程,所以不能用直接法
误差建模是线性的方程,用间接法
##有色噪声下的卡尔曼滤波 假设w有色噪声,v白色噪声