【War Thunder】空空导弹基本原理(3)制导控制
这一些文章是战争雷霆的游戏机制解析。会结合现实情况来说明。阅读需要高中水平的物理学知识。如果有ksp乃至其他飞行游戏的背景就更好理解了。
这方面最早的工作要归功于官方论坛和油管的Zetaris,长期的拆包数据分享要感谢论坛和红迪的gszabi99,而一些机制要感谢官方开发者k_stepanovich等的说明。
推荐阅读:航空工业出版社的《空空导弹方案设计原理》。
ps:禁止无断转载。
1、比例导引
比例导引(proportional navigation)是战争雷霆中空空导弹通用的制导方法。
比例导引的思路是,让导弹速度矢量的转动角速度(通俗的说,导弹转弯角速度)和导弹-目标视线(line of sight,LOS)的旋转角速度成正比。这种导引方式能实现导弹前置截击。
下图是一种理想情况(导弹和敌机速度和航向都不变)下比例导引的工作情况:弹目视线和导弹航向的夹角保持不变,导弹稳定飞行,截到敌机。

下图是比例导引打击机动目标的示意:红色是目标,蓝色是导弹。一开始目标飞行保持稳定,LOS和导弹航向的夹角(绿色)也保持不变。之后,目标向右侧转弯,弹目角度发生了变化(绿色箭头),导弹受其影响也进行转弯(红色箭头),让夹角(绿色)继续保持不变,形成了修正提前量的效果,最后正确命中目标。

2、导航比
以上两图的比例导引都是让导弹航向追随弹目视线旋转进行同步转弯,让导弹航向和弹目视线的夹角保持不变。我们将导弹转弯角速度和弹目视线的旋转角速度之间的比例称为导航比N(navigation constant,也称导航增益或导航常数),以上两图对应的就是N=1。
实际操作中,比例常数设置的越大,导弹对弹目视线角度变化的反馈就越敏感,制导中越会倾向于早拉提前量机动,下图两边描述的都是对准横移的目标发射导弹的情况,目标从右向左飞行,左图导航比为1,右图导航比为4。
右边的导弹因为导航比设置的较大,在距离较远时就开始转弯拉出了提前量,在弹道后段反而不需要进行大幅度机动,整个弹道较为平稳,需要的过载较低。
因为左边的导弹导航比为1,导弹初始航向和视线夹角又为0°,于是后续制导会一直试图保持导弹初始航向和视线夹角同步,导弹实际全程持续对准目标飞行(变成了三点法),导弹飞行路程较长,末端需要的过载也较大。


可以看出,适当拉高导弹导航有利导弹尽早拉出足够提前量。不过反过来说,太高的导航比也会导致导弹太敏感,对复杂机动的目标可能会拉出奇怪的大提前量。战争雷霆游戏内大部分空空导弹的导航比设置在4.0,即"propNavMult": 4.0
3、可变导航比
虽然游戏内导弹导航比大部分设置在4,不过这样的导航比在一些时候仍然太高。
设想一个情况:迎头发射一枚中距弹,对面在远距离就开始反复转弯(F-POLE)来规避。导弹飞行中会被敌机调动,瞄准对面的飞机进行转弯。在这种情况下,导航比设置的越高,导弹会倾向拉越多的提前量,能量损失越严重,有效射程会大幅度缩水。(在战争雷霆2.25之前的版本,导弹拉机动不会有额外掉速 BV1bG4y1b72Z,F-POLE机动意义很小。但是现时期诱导阻力被添加进了游戏,飞机带着导弹拉过载是有效的)

反过来说,如果在导弹飞行中段适当调低导航比,就能降低导弹对敌机机动的响应,打击机动目标中段消耗的能量会更小。最后在弹道末端再将导航比调高,这样也不会影响导弹末端的追踪能力。(调低导航比≠限制可用过载)
游戏内部分导弹搭载了可变导航比功能,
以AIM-7F为例,自动驾驶仪代码中先是以导弹预计撞击时间来控制导航比:
撞击前5秒,增益1.0(导航比4.0)(增益Gain乘在预设导航比上);
撞击前8到5秒,增益从0.9增大到1.0(导航比3.6到4.0)(变化过程和时间成正比例,以下都是);
撞击前12到8秒,增益从0.8增大到0.9(导航比3.2到3.6);
撞击前25秒到12秒,增益从0.5增大到0.8(导航比2.0到3.2);
撞击前50秒到20秒,增益从0.3增大到0.5(导航比1.2到2.0)。
这一串代码让导弹飞行过程中越靠近目标越敏感。

然后,7F代码中还有另外一部分,以发射后的时间来控制导航比:
发射后0秒到1秒,增益从0.0增大到1.0(导航比0到4.0)
这一串代码让导弹飞离挂架后越来越敏感。

可以发现,AIM-7F游戏内有“发射后时间”和“撞击前时间”两条线来控制导航比,实战可能会存在冲突,在冲突情况下导弹会执行两个导航比中较小的那个。AIM-7F的导航比控制较好兼顾了近距离格斗射击和远距离BVR。
但是较差的可变导航比会极大限制导弹的性能。比如下图的AIM-7E导弹,它的导航比只和发射后时间有关:
发射后0秒到1.8秒,增益0.0(导航比0);
发射后1.8秒到2.5秒,增益从0.0增加到0.4(导航比0到1.6);
发射后2.5秒到4.5秒,增益从0.4增加到1.0(导航比1.6到4.0)。
导航比设置在0时,导弹是不会机动的,4.5秒后才有正常的追踪能力,严重影响导弹近距离射击。虽然限制导弹机动倾向有利BVR,但是以7E孱弱的动力,也还是打不了多远......

在比例导引的框架下,玩家可以抬高机头发射导弹,形成高抛弹道,如下图。搭载可变导航比功能的导弹在手动抛射的情况下更有利,导弹能够抛的更高:

4、机动控制
比例导引解决了“车应该往个方向开”的问题,下一个问题则是“方向盘应该打多少”。游戏内调节导弹实际过载输出使用的是PID控制。

自上而下,
accelControlProp,PID的Kp(比例)项,过载输出的基础,数值越大,导弹对误差响应越大;
accelControlIntg,PID的Ki(积分)项,能够在有系统误差和外力作用时消除偏差,数值越大响应越快;
accelControlDiff,PID的Kd(微分)项,能够抑制过冲和振荡,数值过大会造成导弹响应迟钝;
baseIndSpeed,有利于提升导弹飞行稳定性,具体意义不明,不过目前大部分空空导弹都设置在1800.0;
accelControlIntgLim,为积分项的输出设置上限,抑制超调。
合适的PID参数对导弹的正常工作非常重要。PID调试失误会导致包括但不限于导弹乱飞、响应迟钝、拉大提前量、打不准、边飞边抖之类的问题。调PID是很大的工作量,而且需要根据导弹气动修改和安东星物理环境变化来更新。
5、惯性制导(IOG)和数据链(DL)
游戏内空空导弹在能够连续获取弹目角度时,会工作在比例导引模式(半主动弹雷达STT锁定、主动弹导引头锁定、红外弹锁定)。部分搭载惯性制导的导弹在无法连续获取角度后会进入惯导(红外弹和半主动弹脱锁,主动弹导引头未开机或脱锁),会根据目标最后的位置和航向进行制导截击。惯性制导打高速机动的目标用处不大,但是一些直升机上的反坦克导弹可以发射后中止激光照射脱离,利用惯导来打地上不动的车(不过也不是很准)。

搭载数据链(datalink)的导弹进入惯导状态后,可以接受载机传感器(一般是雷达TWS)的数据来更新目标位置速度和航向,以此再调整导弹航向。有数据链刷新的情况下,惯导对机动目标也会有用很多。
6、高抛(LOFT)
超视距射击时,让导弹先爬升再俯冲有利于降低导弹中段飞行受到的空气阻力,并将部分动能转化为重力势能储存起来,有利于提升导弹的有效射程、提高导弹的末端速度。 BV1u24y127ye
上文提及过手动拉高机头抛射导弹,不过游戏里还有少部分导弹有自动抛射功能,以类似下图的代码来控制,类似代码还被用在了道尔之类的防空导弹上。
但是因为预设的高抛角度太低,游戏里的自动高抛和平射接近,基本上没有什么用——这也是游戏内动力魔法(1.7t 30s)的AIM-54A并不能打出DCS早年的54A mk60效果的原因,因为DCS抛射角度高达35°,战雷抛射角度太小都在打平射。
