本文是《optimal state estimation》by Dan Simon的学习笔记
问题背静:假设需要测量一个电阻的电阻值,我们可以利用万用表测量一组测量值,但是由于测量噪声的存在,测量值和真值之间存在差别,就需要一种方法充分利用测量值得到最近接真值的估计值。 1. 不失一般性,设测量值y=[y1,y2...yk]T, x=[x1,x2...xn]T 是 n 维常值向量,向量y是 x 的线性组合,x^是常量 x 的估计值。 测量值y和状态 x 之间存在关系: y1=H11 ... H1nxn v1...yk=H1k ... Hknxn vk 写成矩阵形式为: y=Hx+v 其中常值矩阵 H 称为观测矩阵,其参数由系统结构决定,它描述了状态量x和测量值 y 的关系。矩阵H称为观测矩阵,其参数由系统结构决定,对于线性系统它为常值。它描述了状态量 x 和测量值y的关系,或者说对应于一定状态 x ,根据系统结构应该得到什么样的测量值y。 比如对于激光测距,位置和速度组成的状态量 x=(xx˙) 和测量值 y 的关系可以描述为:y=(1000)(xx˙) v 2. y 为测量值,根据上式Hx^可以理解为根据估计值 x^预测的测量值。 定义残差 ϵ 为: ϵ=y−Hx^ 它描述了测量值和预测值之间的差。差值越小则 x^ 越接近真值 x 。定义代价函数J J=ϵ2y1+...+ϵ2yk=ϵTyϵy=(y−Hx^)T(y−Hx^) 3. 可以证明 J 是半正定矩阵,则J对 x^ 求偏导并置零得到极值点即 x 的最小二乘估计值: x^=(HTH)−1HTy 其中 (HTH)−1 可逆的条件是 H满秩且k≥n 。即测量值个数多于要估计的状态量维数。且每个测量值之间线性无关。
考虑到每次测量值的可信度不同,比如每次测量用的测量仪器存在优劣之分。我们希望对使用更可靠仪器得到的测量值在估计中给予更高的可信度,设测量值 y=Hx+v 的噪声是零均值和相互独立的。噪声的协方差矩阵
R=E(vvT)=⟮σ21⋮0⋯⋯0⋮σ2k⟯ 考虑测量值可信度的代价函数: J=ϵ2y1/σ21⋯+ϵ2yk/σ2k=ϵTyR−1ϵy=(y−Hx^)TR−1(y−Hx^) 求 J 对x^偏导并置零,得到 x 的加权最小二乘估计: x^=(HTR−1H)−1HTR−1y随着时间增加,我们可以得到更多的测量值 y ,求得更加精确的估计值,但测量值的增加使得向量y的维数 k 增加,观测矩阵Hk×n的维度也增加。使得计算量随着时间增加。为了保持计算代价的恒定,可以采用迭代的方法进行计算。即需要解决的问题是假设利用 (k−1) 次测量得到了估计值 x^ ,在得到新的测量值 yk ,如何借助已知估计进行估计值的更新? 1. 线性迭代估计器可以写成以下形式:
yk=HKx+vkx^k=x^k−1+Kk(yk−Hkx^k−1) (yk−Hkx^k−1) 被称为校准项。公式实现了利用已知估计 x^k−1 和新的测量值 yk 得到新的估计 x^k 。 2.估计器是和 Kk 无关的无偏估计,证明: E(ϵx,k)=E(x−x2k)=(I−KkHk)E(ϵx,k−1)−KkE(vk)=∏i=1kE(ϵx,i−1)−KkE(vk) 在初始估计值设置为 x^0=E(x) ,且 E(ϵx,0)=0 .得到 E(ϵx,k)=E(x−x^)=0 。即估计器(10)为无偏估计。且和 Kk 无关。这一条性质是我们想要的估计结论,以为我们希望估计值应该可以无限接近真值。 3.迭代参数的求解 目标函数: Jk=E[(x1−(^x)1)2+(x1−(^x)1)2+⋯+(xk−(^x)k)2]=E(tr(ϵx,k,ϵ2x,k))=tr(Pk) 其中 Pk 称为估计误差的协方差矩阵。结合公式(11)(12)得到 Pk=E(ϵx,k,ϵ2x,k)=E([(I−KkHk)ϵxk−1−Kkvk][⋯]T) t−1 时刻的估计误差 ϵx,k−1 和 t 时刻的测量噪声vk相互独立,因此 E(vkϵTx,k−1=E(vk)E(ϵx,k−1)=0 得到: Pk=E(ϵx,k,ϵ2x,k)=E([(I−KkHk)ϵx,k−1−Kkvk][⋯]T)=(I−KkHk)Pk−1(I−KkHk)T+KkRkKTk 目标函数 Jk 对 Kk 求偏导(用到了背景知识中的公式和复合函数求偏导): ∂Jk∂Kk=(I−KkHk)Pk−1(−HTk)+2KkRk 令其为0得到最小化 Jk 的 Kk 值为: Kk=Pk−1HTk(HkPk−1HTk+Rk)−1 4. 参数的其他形式 通过以上求解的 Kk 和 Pk ,利用回带可以得到两个参数的其他表示形式,这里不再详细写出,具体参考下文卡尔曼方程的公式。 5. 迭代过程可以描述为已知 k−1 估计值 x^k−1 ,和当前时刻测量值 yk ,更新 xk,Pk,Kk 的过程。一个线性系统可以由下列方式描述:
xk=Fk−1xk−1+Gk−1uk−1+wk−1yk=Hkxk+vk 其中不同时刻的噪声项相互独立。 wk 为系统噪声, vk 为测量噪声 wk ~ (0,Qk) vk ~ (0,Rk) 1. 先验估计和后验估计 已知之前所有时刻和当前时刻的测量值的估计为后验估计,记做: x^+k=E[xk|y1,y2,⋯,yk] 已知之前k-1时刻测量值,但不知当前时刻测量值的估计为先验估计,记做: x^−k=E[xk|y1,y2,⋯,yk−1] 2. 状态和方差的传播 (propagation) 对于()给出的线性系统,其状态 x 的均值 x¯=E(xk)=Fk−1x¯k−1 Gk−1uk−1 根据 (xk−1−x¯k−1) 和 wk−1 无关和方差定义,得到状态的方差 Pk=E[(xk−x¯k)(⋯)T]=Fk−1Pk−1FTk−1+Qk−1 由此得带均值和方差的迭代求解。且 xk ~ (x¯k,Pk) 3.初始化: x^+0=E(x0)P+0=E[(x0−x^+0)(x0−x^+0)T] 4. 离散卡尔曼滤波迭代公式 预测(当前测量值未知的先验估计): (1)P−k=Fk−1P+k−1FTk−1+Qk−1(2)x^−k=Fk−1x^+k−1+Gk−1uk−1 校准(已知当前测量值的后验估计): (3)Kk=P−k−1HTk(HkP−kHTk+Rk)−1=P+kHTkR−1k(4)x^=x^−+Kk(yk−Hkx^−k)(5)P+k=(I−KkHk)P−k(I−KkHk)T+KkRkKTk=[(P−k)−1+HTkR−1kHk]−1=(I−KkHk)P−k 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,包含了状态新的信息。