第三章 目标运动模型:匀速模型、匀加速模型、Singer模型、当前统计模型
各位同学,今天我们来聊聊目标运动模型。说实话,这部分内容在机载武器瞄准算法里,属于「地基」一样的存在。你想想看,如果连目标下一步会出现在哪里都猜不准,那导弹打出去基本就是听天由命了。
我个人习惯把目标运动模型分成两大类:一类是简单粗暴的,比如匀速和匀加速;另一类是带点「智能」的,比如Singer模型和当前统计模型。咱们一个一个说。
3.1 匀速模型(CV模型)
匀速模型,英文叫Constant Velocity,简称CV。说白了就是假设目标一直走直线,速度大小和方向都不变。
数学上很简单:
状态向量:X = [x, y, z, vx, vy, vz]^T
状态方程:X(k+1) = F * X(k) + w(k)
其中 F 是状态转移矩阵:
F = [1, 0, 0, dt, 0, 0;
0, 1, 0, 0, dt, 0;
0, 0, 1, 0, 0, dt;
0, 0, 0, 1, 0, 0;
0, 0, 0, 0, 1, 0;
0, 0, 0, 0, 0, 1]
w(k) 是过程噪声,一般取很小的值
我在项目中遇到过一个问题:用CV模型跟踪民航客机,效果还不错。但一旦目标开始转弯,误差就蹭蹭往上涨。嗯,这里要注意——CV模型只适用于目标做近似直线运动的情况。
3.2 匀加速模型(CA模型)
匀加速模型,Constant Acceleration,简称CA。比CV多了一个加速度项。
状态向量变成9维:
X = [x, y, z, vx, vy, vz, ax, ay, az]^T
状态转移矩阵 F 变成 9x9:
F = [1, 0, 0, dt, 0, 0, 0.5*dt^2, 0, 0;
0, 1, 0, 0, dt, 0, 0, 0.5*dt^2, 0;
0, 0, 1, 0, 0, dt, 0, 0, 0.5*dt^2;
0, 0, 0, 1, 0, 0, dt, 0, 0;
0, 0, 0, 0, 1, 0, 0, dt, 0;
0, 0, 0, 0, 0, 1, 0, 0, dt;
0, 0, 0, 0, 0, 0, 1, 0, 0;
0, 0, 0, 0, 0, 0, 0, 1, 0;
0, 0, 0, 0, 0, 0, 0, 0, 1]
你可能会问:那直接用CA模型不就好了?为什么还要用CV?
原因很简单:维度越高,计算量越大,而且更容易受噪声影响。我建议在工程实现时,先判断目标的机动强度,再决定用CV还是CA。比如目标加速度小于某个阈值,就用CV;超过阈值,切换到CA。
3.3 Singer模型
Singer模型是1970年由Robert Singer提出的。它假设目标的加速度是一个一阶马尔可夫过程。说白了,就是认为目标的加速度不会突变,而是平滑变化。
核心参数有三个:
- α(机动时间常数):决定了加速度变化的快慢。α越大,变化越快。
- σ²(加速度方差):反映了目标机动的剧烈程度。
- 采样周期 dt:雷达或传感器的数据更新间隔。
Singer模型的状态方程长这样:
状态向量:X = [x, vx, ax]^T (以一维为例)
状态转移矩阵:
F = [1, dt, (α*dt - 1 + e^(-α*dt))/α^2;
0, 1, (1 - e^(-α*dt))/α;
0, 0, e^(-α*dt)]
过程噪声协方差矩阵 Q 比较复杂,这里不展开公式了。
感兴趣的同学可以查一下 Singer 1970 年的原始论文。
我个人觉得Singer模型最大的优点是:它不需要预先知道目标的机动模式。你只要调好α和σ²这两个参数,它就能自适应地跟踪各种机动目标。
但缺点也很明显——参数调起来很麻烦。我记得有一次在仿真中调α参数,从0.1试到10,折腾了两天才找到合适的值。
3.4 当前统计模型
当前统计模型(Current Statistical Model)是周宏仁教授在1984年提出的。它是对Singer模型的一个改进。
核心思想是:目标的加速度不会在零均值附近随机变化,而是围绕当前加速度值变化。你想想看,一架正在以5g过载转弯的战斗机,下一秒的加速度大概率还在5g附近,而不是突然变成0。
数学上,当前统计模型把加速度的均值设成了当前估计值:
状态方程和Singer模型类似,但过程噪声的均值不再是0,
而是当前加速度估计值。
具体来说:
a(k+1) = e^(-α*dt) * a(k) + w(k)
其中 w(k) 的均值是 (1 - e^(-α*dt)) * a_bar(k)
a_bar(k) 是当前加速度的均值,通常取 a(k) 的滤波值
这样做的好处是:跟踪机动目标时,响应速度更快,精度更高。我在做某型空空导弹的瞄准算法时,从Singer模型切换到当前统计模型,跟踪误差直接降低了30%。
3.5 四种模型的对比与选择
好了,四种模型都讲完了。咱们来做个对比:
| 模型 | 状态维度 | 适用场景 | 计算量 | 精度 |
|---|---|---|---|---|
| CV模型 | 6 | 直线运动、远距离目标 | 低 | 低(机动时发散) |
| CA模型 | 9 | 匀加速运动、缓慢机动 | 中 | 中 |
| Singer模型 | 9 | 一般机动目标 | 中高 | 较高 |
| 当前统计模型 | 9 | 高机动目标(战斗机、导弹) | 中高 | 高 |
我建议在实际工程中这样选:
- 如果目标运动规律已知(比如跟踪卫星),用CV或CA就够了。
- 如果目标机动不确定,优先考虑当前统计模型。
- 如果计算资源有限,可以用Singer模型,参数调好了效果也不错。
- 如果追求极致精度,可以考虑多模型滤波(IMM),把几种模型组合起来用。
好了,这一章就到这里。下一章我们讲滤波算法,到时候会用到今天讲的这些模型。大家先把基础打牢,后面才能跟上。