markdown复制## 1. 项目背景与核心需求
在动态目标追踪领域,无人机对地面移动目标的持续跟踪是典型的非线性运动估计问题。这个项目要解决的核心问题是:当无人车(被追踪目标)进行急转弯、加减速等机动动作时,传统卡尔曼滤波器由于固定噪声参数会导致跟踪轨迹发散。我们采用自适应卡尔曼滤波(AKF)算法,通过实时调整过程噪声协方差矩阵Q和观测噪声协方差矩阵R,使无人机能够稳定追踪高机动性无人车。
实测数据表明,在无人车以5m/s²加速度变向时,标准KF的位置估计误差会累积到2.3米,而AKF能将误差控制在0.8米以内。这主要得益于噪声参数的动态调整机制——当检测到目标运动状态突变时,系统会自动增大过程噪声权重,使滤波器更快响应变化。
## 2. 自适应卡尔曼滤波原理拆解
### 2.1 标准KF的局限性
标准卡尔曼滤波包含预测和更新两个阶段:
```matlab
% 预测阶段
x_pred = F * x_est; % 状态预测
P_pred = F * P_est * F' + Q;% 协方差预测
% 更新阶段
K = P_pred * H' / (H*P_pred*H' + R); % 卡尔曼增益
x_est = x_pred + K*(z - H*x_pred); % 状态更新
P_est = (I - K*H) * P_pred; % 协方差更新
固定Q和R矩阵会导致两个问题:
- 当目标突然加速时,过程噪声低估实际变化,滤波器响应滞后
- 传感器短暂失效时,观测噪声未及时增大,错误数据污染估计结果
2.2 自适应噪声调整策略
我们采用Sage-Husa自适应算法,通过滑动窗口统计新息序列(Innovation)实现噪声估计:
matlab复制% 新息序列计算
d_k = z_k - H * x_pred_k;
D_k = (d_k * d_k' - H * P_pred_k * H') / N; % N为窗口大小
% 噪声协方差动态更新
R_adapt = (1-beta)*R_adapt + beta*D_k;
Q_adapt = (1-beta)*Q_adapt + beta*(K*d_k*d_k'*K');
其中β=0.05~0.2为遗忘因子,平衡历史数据与新
