卡尔曼滤波那些事儿
这几天 Sergio M. Savaresi 来学校授课,课程名称是「Machine Learning, System Identification, and Virtual-Sensing for Dynamical Systems」。课堂上全程 iPad 板书,让我想起另一位全程板书:MIT 6.832的Russ Tedrake。
全程板书的好处很多,可以让学生跟上老师的节奏,不容易走神,上课效率高,思路清晰……
最终,对老师的要求会很高。盗取两位老师的板书,好似艺术品。
据自己的个人体会,听大师上课,是一种享受,他会慢慢把知识点顺理成章的展现在学生面前,有一种为有源头活水来的感受,大师的风度。如果每位学生能在学校,多上几门这样的课,离世界一流大学还会远吗?
卡尔曼滤波用于状态空间模型对象,属于状态估计领域。
机器学习、大数据、数据挖掘、人工智能……一大堆新概念,说白了就是“新瓶装旧酒”,还是用的原来的方法。
课程中,老师多次采用信息论(Information)的角度用直观(Intuitive)的方式介绍概念、方法和结论。
SVD、最小二乘法、卡尔曼滤波、贝叶斯估计……它们本质上是从不同的角度阐述同一个方法。
KF的作用
- 预测输出量 $\mathbf{\hat{y}(N+k\mid N)}$
- 预测状态量 $\mathbf{\hat{x}(N+k\mid N)}$
- 状态估计”Filter” $\mathbf{\hat{x}(N\mid N)}$
- 灰盒辨识
输入 $u(t)$ 不会影响 K.F. 的 $K(t), P(t)$。
2018/9/26
考虑系统方程
\[x(t+1)=Fx(t)+v_{1}(t), v_{1} \sim WN(0,V_{1})\] \[y(t)=Hx(t)+v_{2}, v_{2}(t) \sim WN(0,V_{2})\]而且
\[V_{1} \geq 0\] \[V_{2} > 0\]$V_{2}>0$ 是为了满足 $\exists \quad (HP(t)H^{T}+V_{2})^{-1}$。实际工程中的F、G和H可以通过物理模型获取,而 $V_1,V_2$ 很难得到。
\[\hat{x}(t+1\mid t)=F\hat{x}(t\mid t-1)+K(t)e(t)\] \[\hat{y}(t\mid t-1)=H\hat{x}(t\mid t-1)\] \[e(t)=y(t)-\hat{y}(t\mid t-1)\] \[Gain\,Equ:\quad K_{n\times p}(t)=(FP(t)H^T+V_{12})(HP(t)H^T+V_2)^{-1}\] \[DRE:\quad P(t+1)=(FP(t)F^T+V_1)-(FP(t)H^T+V_{12})(HP(t)H^T+V_2)^{-1}(FP(t)H^T+V_{12})^T\]最后两个动态方程需要初始条件: \(\hat{x}(1\mid 0)=x_0\)
\[P(1)=P_0\]DRE 是一个差分的、矩阵的、非线性的、与输入 $ u(t)$ 无关的方程,且 $P \geq 0$ 。
Kalman Filter Idea is SIMPLE:
- 先复制系统
- 再比较 $y(t)$ 与 $\hat{y}(t\mid t-1)$
- 反馈调节
$P(t)$表示预测误差的方差,衡量系统的“不确定性”。因为 $u(t)$ 是确定的信息,故不会影响 KF 的 $K(t), P(t)$。
实际中会遇到的问题:
- 计算量,矩阵求逆
- K.F. 是非线性、时变的动态系统(DRE),将无法确定 K.F. 的稳定性!
How to Solve it?
退一步,寻求 KF 的渐进稳定性:
\[P(t) \to \bar{P}\] \[K(t) \to \bar{K}\]使得 KF 变为 LTI 系统,其状态矩阵为:
\[(F-\bar{K}H)\]且有结论:KF 可以强大到跟踪不稳定系统。
NEXT:EKF、灰盒ID.
Remarks:
- 对于线性系统,$\bar{K}$存在时,直接用$\bar{K}$就好;
- 否则,对于EKF、时变系统,则用 $K(t)$。
步骤:
- 解 DRE 方程,解之得 $\bar{P}$;
- 用画图的方法判断是否 $P(t) \to \bar{P}$;
- 检查稳定性 $(F-\bar{K}H)$;
- 结合定理1和定理2。
针对非白噪音的情况,可采用 扩展状态量(State Extension) 的方法解决。
TODO:能否用于解决单目尺度漂移的问题?
EKF
EKF采用同样的 K 和 DRE 方程。
但F(t)和H(t)是时变的。
存在的问题:
- 计算量大
- EKF是非线性、时变系统,它的稳定性如何保证?!故很少用于Safety-Critical和Mission-Critical场景,除非经过大量实践验证。
灰盒ID
初始参数加入噪音,让KF不要过于“相信”初始值。
TODO:考虑动态调节$\lambda$,加快速度并减少震荡?
传感器的$V_2$容易估计,$V_1$需要实际经验。
能观性分析:假设其中一个(或多个)传感器坏掉了,分析此时系统的能观性。
KF还能用于车道线跟踪(估计车道线的端点)。
Dynamic System?
- 反馈
- 自指
- 自激