进一步理解自适应卡尔曼滤波(AKF)
1. 概述
自适应卡尔曼滤波AKF(Adaptive Kalman Filter)是一种高级的卡尔曼滤波技术,旨在解决标准KF及其变种(EKF, UKF)的一个核心痛点:滤波器参数的不确定性。
标准卡尔曼滤波器的性能严重依赖于两个先验参数,在实际应用中,这些参数往往是未知的或时变的:
- 过程噪声协方差矩阵 (Q):描述了系统模型的不准确程度,比如一个无人机的运动模型噪声可能因其速度、机动性(如加速、转弯)而变化
- 观测噪声协方差矩阵 ®:描述了传感器测量的不精确程度,比如一个GPS接收机的精度可能因卫星几何构型、电离层干扰或多路径效应而变化
如果预设的 Q 和 R 值与真实情况不符,滤波器就会表现不佳:Q/R 设置过大滤波器会过分信任预测/观测,导致估计结果过于平滑,响应迟钝;相反Q/R 设置过小滤波器会过分信任观测/预测,导致估计结果噪声大,甚至发散。
自适应卡尔曼滤波(AKF)就是在滤波器运行的过程中,实时地估计或调整这些噪声统计特性(主要是 Q 和 R),使滤波器能够自适应于系统当前的真实工况,从而获得最优或次优的估计性能。
2. 核心原理
AKF具备多种实现方法,但主要原理可分为以下几类:
-
多重模型自适应估计: 并行运行多个卡尔曼滤波器,每个滤波器使用一组不同的预设 Q/R 参数,通过比较各个滤波器的创新序列(观测残差)的概率,用一个贝叶斯概率加权器来选择最可能正确的模型(即最匹配当前工况的那组参数)的输出,或将所有滤波器的输出进行加权融合。相当于请多个专家(每个专家对情况有不同的看法)同时分析,然后根据他们当前的分析表现,决定最听谁的。
-
创新序列自适应估计: 卡尔曼滤波的创新序列νk=zk−Hx^k∣k−1{\nu}_k = {z}_k - {H}\hat{{x}}_{k|k-1}νk=zk−Hx^k∣k−1 包含了丰富的滤波器性能信息,理论上,一个最优的卡尔曼滤波器,其创新序列应该是一个零均值的白噪声序列。如果创新序列的统计特性(如实际协方差 Cν,k{C}_{\nu,k}Cν,k)与理论值 Sk=HPk∣k−1HT+R{S}_k = {H}{P}_{k|k-1}{H}^T + {R}Sk=HPk∣k−1HT+R 不符,就说明预设的 Q 或 R 不准,通过在线估计创新序列的实际协方差,可以反推并调整 Q 和 R 的值,使其满足 Cν,k≈Sk{C}_{\nu,k} \approx {S}_kCν,k≈Sk 。
-
Sage-Husa 自适应滤波:这是一种经典的极大后验概率估计方法,通常用于在线估计噪声的统计量(一阶矩:均值;二阶矩:协方差),通过一种递推的衰减记忆方法,更加重视新近的数据,从而可以估计时变的噪声参数。最常用的是Sage-Husa噪声统计估计器来在线估计 Q 和 R。
3. 主要步骤(以创新序列法为例)
这里以一种常见的基于创新序列协方差匹配的AKF步骤为例。
初始化:
- 初始化状态估计 x^0∣0\hat{{x}}_{0|0}x^0∣0 和误差协方差 P0∣0{P}_{0|0}P0∣0
- 初始化预设的 Q0{Q}_0Q0 和 R0{R}_0R0
- 设置一个窗口大小 NNN(用于计算创新序列的统计量)。
循环执行以下步骤:
-
3.1 预测步骤(与标准KF相同):
x^k∣k−1=Fkx^k−1∣k−1Pk∣k−1=FkPk−1∣k−1FkT+Qk\hat x_{k|k-1}=F_k\hat x_{k-1|k-1}\\ P_{k|k-1}=F_kP_{k-1|k-1}F^T_k+Q_kx^k∣k−1=Fkx^k−1∣k−1Pk∣k−1=FkPk−1∣k−1FkT+Qk
-
3.2 计算创新序列:
νk=zk−Hkx^k∣k−1\nu_k=z_k-H_k\hat x_{k|k-1}νk=zk−Hkx^k∣k−1 -
3.3 估计创新序列的实际协方差:
在一个滑动窗口 [k−N+1,k][k-N+1, k][k−N+1,k] 内计算:
C^ν,k=1N∑i=k−N+1kνiνiT\hat C_{\nu,k}=\frac1N\sum_{i=k-N+1}^k\nu_i\nu_i^TC^ν,k=N1∑i=k−N+1kνiνiT
-
3.4 自适应调整 R (和 Q):
理论创新的协方差为:Sk=HkPk∣k−1HkT+Rk{S}_k = {H}k {P}_{k|k-1} {H}_k^T + {R}_kSk=HkPk∣k−1HkT+Rk
目标是让理论值 Sk{S}_kSk 匹配实际值 C^ν,k\hat{{C}}_{\nu,k}C^ν,k。
因此,可以反解出当前时刻的 Rk{R}_kRk:
Rk=C^ν,k−HkPk∣k−1HkTR_k=\hat C_{\nu,k}-H_kP_{k|k-1}H^T_kRk=C^ν,k−HkPk∣k−1HkT
为了保证 Rk{R}_kRk 是正定矩阵,对上式进行一些正则化处理。
类似地,也可以通过关系式来调整 Qk{Q}_kQk。 -
3.5 更新步骤(使用调整后的 RkR_kRk):
Kk=Pk∣k−1HkT(HkPkk−1HkT+Rk)−1x^k∣k=x^k∣k−1+kkνkPk∣k=(I−KkHk)Pk∣k−1K_k=P_{k|k-1}H^T_k(H_kP_{k_k-1}H^T_k+R_k)^{-1}\\ \hat x_{k|k}=\hat x_{k|k-1}+k_k\nu_k\\ P_{k|k}=(I-K_kH_k)P_{k|k-1}Kk=Pk∣k−1HkT(HkPkk−1HkT+Rk)−1x^k∣k=x^k∣k−1+kkνkPk∣k=(I−KkHk)Pk∣k−1
4. 总结
AKF主要用于那些系统模型或观测模型噪声特性不确定或随时间变化的场景:
- 目标跟踪:目标的运动模式可能发生改变(从匀速突然变为机动),过程噪声 Q 需要自适应调整。
- 组合导航:GPS等外部辅助传感器的精度(R)会随着环境变化(如从开阔天空进入城市峡谷)。IMU的偏差(可建模为过程噪声 Q 的一部分)也会随时间漂移。
- 故障检测与容错:传感器突然出现故障或性能下降会表现为观测噪声 R 的急剧增大,AKF可以检测并适应这种变化,提高系统的鲁棒性。
- 通信系统:信道噪声的变化。
优势
- 增强的鲁棒性:对模型参数的不确定性不再那么敏感。
- 更高的精度:当噪声统计特性变化时,AKF能持续提供接近最优的估计结果。
- 更好的收敛性:减少了因错误参数设置而导致滤波器发散的风险。
劣势
计算复杂度更高:在线估计 Q 和 R 增加了额外的计算负担。
实现更复杂:需要精心设计自适应律,如窗口大小 N 的选择、调整策略的稳定性等,不当的自适应策略本身可能导致滤波器不稳定。
可观测性问题:有时从创新序列中无法唯一地确定是 Q 还是 R 发生了变化(Q和R之间存在耦合关系)。
5. AKF 与 EKF, UKF 的对比
维度 | EKF / UKF / ESKF | AKF |
---|---|---|
解决的核心问题 | 非线性问题。如何对状态的非线性动力学和观测模型进行最佳线性近似(EKF求导,UKF采样,ESKF误差分离)。 | 模型不确定问题。如何确定或在线调整噪声参数(Q, R),使滤波器在各种工况下保持最优或稳定。 |
关注对象 | 状态估计本身 (x{x}x) | 滤波器参数 (Q{Q}Q, R{R}R) |
关系 | 基础。EKF/UKF/ESKF是AKF的基础框架。一个AKF通常是在一个EKF、UKF或ESKF的基础上增加了自适应模块。 | 增强模块。AKF是增强EKF/UKF/ESKF性能的附加策略。 |
滤波器 | 核心贡献 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|
EKF | 雅可比矩阵线性化 | 概念直接,计算效率较高 | 线性化误差大,雅可比难求 | 中等非线性系统 |
UKF | 无迹变换采样 | 精度高于EKF,无需求导 | 计算成本高,有维数灾难 | 强非线性、低维系统 |
ESKF | 误差状态分离 | 线性化精度高,数值稳定,适合IMU | 概念复杂,实现难度高 | 以IMU为核心的导航系统 |
AKF | 噪声参数在线估计 | 鲁棒性强,适应时变系统 | 计算更复杂,实现难度高 | 任何需要应对Q/R不确定或时变场景的KF变种之上 |
AKF不是独立算法,而是增强模块,与EKF/UKF/ESKF解决的是不同维度的问题,它们不是互斥的,而是可以结合使用的。EKF/UKF/ESKF 像是汽车的悬挂系统,决定了你过弯(非线性)时的平稳性和操控性;AKF 像是汽车的自适应巡航系统,根据路况(噪声变化)自动调整车速(Q/R参数)以保持最佳行驶状态:
- 可以有一个自适应扩展卡尔曼滤波 (AEKF),使用EKF的框架处理非线性,同时使用AKF的方法调整Q和R。
- 也可以有自适应无迹卡尔曼滤波 (AUKF) 和自适应误差状态卡尔曼滤波 (AESKF),后者在导航领域更强大。