第3章:线性系统模型——状态空间模型、状态转移矩阵、观测矩阵、过程噪声与观测噪声

做目标跟踪这些年,我越来越觉得一个道理:你建的模型有多贴近真实物理世界,你的跟踪效果就有多稳。说白了,状态估计不是凭空猜,而是用数学模型去描述目标怎么动、传感器怎么看。

这一章,咱们就聊聊线性系统模型。这是整个状态估计的基石。你想想看,卡尔曼滤波为什么能工作?就是因为它假设系统是线性的。虽然现实世界没那么多完美线性,但搞懂这个基础,后面学非线性滤波才不慌。

3.1 状态空间模型——把问题装进数学框里

先问个问题:什么叫“状态”?

我个人习惯这么理解——状态就是能完整描述系统当前情况的最小变量集合。比如跟踪一辆车,它的位置、速度就是状态。有了这两个量,你就能预测它下一秒在哪。

状态空间模型长这样:

x(k) = A·x(k-1) + B·u(k-1) + w(k-1)   // 状态方程
z(k) = H·x(k) + v(k)                     // 观测方程

这里:

  • x(k):k时刻的状态向量
  • A:状态转移矩阵
  • B:控制输入矩阵(很多时候没有控制量,B=0)
  • u(k-1):控制输入
  • w(k-1):过程噪声
  • z(k):观测向量
  • H:观测矩阵
  • v(k):观测噪声

我在项目中遇到过不少新手,上来就写代码,结果状态向量里该放什么、不该放什么完全没想清楚。嗯,这里要提醒你:状态变量的选择直接影响滤波器的收敛速度和精度。

小技巧:选状态变量时,遵循“最小完备”原则。能描述运动就行,别塞太多冗余量。比如跟踪匀速运动目标,位置+速度就够了,加速度加进去反而会让协方差矩阵病态。

3.2 状态转移矩阵——时间推移的引擎

状态转移矩阵A,说白了就是描述状态如何随时间演化的数学工具。它把上一时刻的状态映射到当前时刻。

举个最简单的例子——匀速运动模型:

位置:p(k) = p(k-1) + v(k-1)·Δt
速度:v(k) = v(k-1)

写成矩阵形式:

[p(k)]   = [1  Δt] [p(k-1)]   + 噪声
[v(k)]     [0  1 ] [v(k-1)]

所以状态转移矩阵就是:

A = [[1, Δt],
     [0,  1]]

你看,就这么简单。但实际项目中,A的推导往往没那么直接。我记得有一次做雷达目标跟踪,目标做匀加速运动,我一开始用了匀速模型,结果跟踪误差越来越大。后来改成匀加速模型,A变成3x3矩阵,效果立马好了。

核心要点:状态转移矩阵必须反映目标的真实运动规律。模型选错了,卡尔曼滤波再调参也没用。

3.3 观测矩阵——传感器怎么“看”世界

观测矩阵H,描述的是状态空间到观测空间的映射关系。说白了,就是告诉你:目标在真实世界里的状态,到了传感器眼里变成了什么样子。

举个例子:

  • 如果传感器直接测量位置,那H = [1, 0](假设状态是位置+速度)
  • 如果传感器测量距离和角度(比如雷达),那H就是非线性函数了(这属于后面章节的内容)

我建议你记住一点:H矩阵的维度由观测量的个数决定。比如你只有位置观测,H就是1×n的行向量;如果你同时观测位置和速度,H就是2×n的矩阵。

曾经有个项目,同事把观测矩阵写错了,导致滤波器发散。排查了两天才发现——H矩阵里把速度观测写成了位置观测。这种低级错误,其实很常见。

注意:观测矩阵必须与传感器的物理特性一致。雷达测的是距离-多普勒,摄像头测的是像素坐标,别搞混了。

3.4 过程噪声与观测噪声——不确定性从哪来?

这两个噪声,是状态估计里最容易被忽视、却又最关键的部分。

过程噪声 w(k):描述模型的不确定性。你用的模型再完美,也不可能100%描述真实运动。比如风阻、路面摩擦、驾驶员随机操作……这些都会引入不确定性。

观测噪声 v(k):描述传感器测量误差。任何传感器都有噪声,雷达有热噪声,摄像头有量化误差,IMU有漂移。

在卡尔曼滤波里,这两个噪声用协方差矩阵表示:

  • Q:过程噪声协方差矩阵
  • R:观测噪声协方差矩阵

Q和R的取值,直接影响滤波器的性能。Q设太大,滤波器会过于相信观测,导致估计值抖动;Q设太小,滤波器反应迟钝,跟不上目标机动。

我曾经踩过一个坑:做无人机跟踪时,把Q设得太小,结果无人机突然转弯,滤波器完全跟不上,目标直接丢了。后来我把Q调大了一些,虽然稳态误差大了点,但至少不会跟丢。

经验之谈:Q和R的调参,没有万能公式。我的做法是:先用理论值初始化,然后跑仿真数据,观察残差序列。如果残差有偏,说明Q偏小;如果残差方差太大,说明R偏小。

3.5 知识体系总览

下面这张图,帮你把本章的核心逻辑串起来:

线性系统模型知识体系 状态空间模型 状态转移矩阵 A 观测矩阵 H 过程噪声 w(k) 观测噪声 v(k) 核心公式:x(k)=A·x(k-1)+w(k-1) | z(k)=H·x(k)+v(k) A决定运动模型 | H决定观测方式 | Q和R决定不确定性

3.6 本章小结

这一章的内容,说白了就是三件事:

  1. 状态空间模型:把跟踪问题装进数学框架
  2. 状态转移矩阵A:描述目标怎么动
  3. 观测矩阵H:描述传感器怎么看
  4. 过程噪声Q和观测噪声R:描述不确定性有多大

搞懂这些,你就掌握了线性卡尔曼滤波的骨架。后面学扩展卡尔曼、无迹卡尔曼,都是在这个骨架上做文章。

嗯,这一章就到这。记住:模型是基础,噪声是关键。模型选对了,噪声调好了,滤波器就成功了一大半。

一句话总结:状态空间模型是骨架,转移矩阵是引擎,观测矩阵是眼睛,噪声是灵魂。四者缺一不可。

可可精品资料库