本文是《optimal state estimation》by Dan Simon的学习笔记
相关数学背景知识
- ∂XTAX∂X=XTAT+XTA
- ∂tr(ABAT)∂A=2AB (B是对称阵)
最小二乘估计
对常值的估计
问题背静:假设需要测量一个电阻的电阻值,我们可以利用万用表测量一组测量值,但是由于测量噪声的存在,测量值和真值之间存在差别,就需要一种方法充分利用测量值得到最近接真值的估计值。
1. 不失一般性,设测量值
测量值
写成矩阵形式为:
其中常值矩阵H称为观测矩阵,其参数由系统结构决定,它描述了状态量
比如对于激光测距,位置和速度组成的状态量x=(xx˙)和测量值y的关系可以描述为:
2. y为测量值,根据上式
它描述了测量值和预测值之间的差。差值越小则x^越接近真值x。定义代价函数
3. 可以证明J是半正定矩阵,则
其中(HTH)−1可逆的条件是H满秩且k≥n。即测量值个数多于要估计的状态量维数。且每个测量值之间线性无关。
加权最小二乘估计
考虑到每次测量值的可信度不同,比如每次测量用的测量仪器存在优劣之分。我们希望对使用更可靠仪器得到的测量值在估计中给予更高的可信度,设测量值y=Hx+v的噪声是零均值和相互独立的。噪声的协方差矩阵
考虑测量值可信度的代价函数:
求J对
迭代最小二乘估计
随着时间增加,我们可以得到更多的测量值y,求得更加精确的估计值,但测量值的增加使得向量
1. 线性迭代估计器可以写成以下形式:
(yk−Hkx^k−1)被称为校准项。公式实现了利用已知估计x^k−1和新的测量值yk得到新的估计x^k。
2.估计器是和Kk无关的无偏估计,证明:
在初始估计值设置为x^0=E(x),且E(ϵx,0)=0.得到E(ϵx,k)=E(x−x^)=0。即估计器(10)为无偏估计。且和Kk无关。这一条性质是我们想要的估计结论,以为我们希望估计值应该可以无限接近真值。
3.迭代参数的求解
目标函数:
其中Pk称为估计误差的协方差矩阵。结合公式(11)(12)得到
t−1时刻的估计误差ϵx,k−1和t时刻的测量噪声
得到:
目标函数Jk对Kk求偏导(用到了背景知识中的公式和复合函数求偏导):
令其为0得到最小化Jk的Kk值为:
4. 参数的其他形式
通过以上求解的Kk和Pk,利用回带可以得到两个参数的其他表示形式,这里不再详细写出,具体参考下文卡尔曼方程的公式。
5. 迭代过程可以描述为已知k−1估计值x^k−1,和当前时刻测量值yk,更新xk,Pk,Kk的过程。
迭代最小二乘估计算法流程
- 初始化估计器
x^0=E(X)p0=E[(x−x^0)([(x−x^0)T]
对初始值的先验知识越多P0越小。比如根据实际情况对初始值进行猜测赋值。
2.k=1,2,⋯,进行更新迭代
(a)获取测量值yk,且测量值和状态变量的关系由测量模型给出
yk=HKx+vk
vk ~N(0,Rk),每次测量噪声相互独立
(b)进行估计值和参数更新
Kk=Pk−1HTk(HkPk−1HTk+Rk)−1x^k=x^k−1+Kk(yk−Hkx^k−1)Pk=(I−KkHk)Pk−1(I−KkHk)T+KkRkKTk
离散卡尔曼滤波方程
一个线性系统可以由下列方式描述:
其中不同时刻的噪声项相互独立。wk为系统噪声,vk为测量噪声
wk~(0,Qk)
vk~(0,Rk)
1. 先验估计和后验估计
已知之前所有时刻和当前时刻的测量值的估计为后验估计,记做:
已知之前k-1时刻测量值,但不知当前时刻测量值的估计为先验估计,记做:
2. 状态和方差的传播(propagation)
对于()给出的线性系统,其状态x的均值
根据(xk−1−x¯k−1)和wk−1无关和方差定义,得到状态的方差
由此得带均值和方差的迭代求解。且xk~(x¯k,Pk)
3.初始化:
4. 离散卡尔曼滤波迭代公式
预测(当前测量值未知的先验估计):
校准(已知当前测量值的后验估计):
5.性质
(a)公式(5)P+k的第一个表述比第三个表述计算更稳定,第一个表述可以保证P+k始终是对称正定的,只要P−k是对称正定的,第三个不能但计算简单,第二个表述不常用,只做推导中用。
(b)如果Kk使用第二个表述,则P+k需要使用第二个表述,因为两者不能同时依赖。
(c)如果wk和vk服从高斯分布,则卡尔曼滤波器是针对该问题的最优滤波器。如果两者是均值为0,无关的白噪声,但不服从高斯分布,则卡尔曼滤波器是其估计的最优线性滤波器(一个非线性滤波器可能可以找到更优的解)。
(d)更新方程:x^=x^−+Kk(yk−Hkx^−k)中的yk−Hkx^−k被称为innovation term,包含了状态新的信息。