3. 坐标系定义:弹体坐标系、视线坐标系与视场锥体
做制导控制,坐标系就是我们的“语言”。
你想想看,导弹在天上飞,导引头在看目标,这两个东西怎么“对话”?靠的就是坐标系。我个人习惯,在开始设计导引头视场约束之前,先把三个核心坐标系理清楚。不然到了后面,你会发现角度算来算去全是乱的。
3.1 弹体坐标系:导弹自己的“身体”
弹体坐标系,说白了就是绑在导弹身上的坐标系。原点在导弹质心,三个轴跟着导弹一起转。
- Xb 轴:沿弹体纵轴,指向头部为正。我习惯叫它“鼻子方向”。
- Yb 轴:在弹体对称平面内,垂直于 Xb 轴,向上为正。也就是“抬头方向”。
- Zb 轴:按右手定则确定,指向右侧。嗯,这里要注意,右手定则别搞反了,否则后面所有角度符号都会错。
关键点:弹体坐标系是“动”的。导弹怎么转,它就怎么转。我们常说的“俯仰角”、“偏航角”、“滚转角”,就是弹体坐标系相对于地面坐标系的旋转角度。
我在项目中遇到过一件事:有一次仿真结果总是不对,查了两天才发现,是弹体坐标系 Y 轴方向定义反了。从那以后,我每次建坐标系都会在代码里加一行注释——「Y轴向上为正」。
3.2 视线坐标系:导引头的“眼睛”
视线坐标系,是导引头看目标时用的坐标系。原点也在导弹质心,但它的指向完全由“导弹-目标”连线决定。
- Xs 轴:沿导弹指向目标的视线方向,指向目标为正。说白了就是“看哪儿指哪儿”。
- Ys 轴:在包含 Xs 轴的铅垂平面内,垂直于 Xs 轴,向上为正。
- Zs 轴:按右手定则确定。
为什么需要视线坐标系?因为导引头测量的是“视线角速度”——也就是目标相对于导弹的转动快慢。这个量在制导律里是核心输入。你想想看,如果没有视线坐标系,你拿弹体坐标系里的角度去算,那里面混了导弹自身的姿态运动,根本没法直接用。
我的经验:视线坐标系和弹体坐标系之间的转换,是导引头视场约束建模的关键。我一般用两个角度来描述这种关系:一个是“视线高低角”,一个是“视线方位角”。这两个角,就是导引头框架的转动角度。
3.3 视场锥体:导引头的“视野范围”
导引头不是“全向眼”。它有一个有限的视场角,通常用一个圆锥体来描述。这个圆锥的顶点在导引头中心,轴线沿导引头光轴方向,半锥角就是视场角的一半。
为什么会这样?因为导引头的探测器(比如红外焦平面阵列)有物理尺寸限制,镜头也有焦距。你想想看,一个手机摄像头,拍不到你身后的东西,对吧?导引头也一样。
注意:视场锥体是“固连”在弹体上的,还是“固连”在视线上的?答案是:它固连在弹体坐标系上。因为导引头是装在导弹上的,导弹怎么转,导引头的光轴就怎么转。除非导引头有独立的伺服框架——嗯,那是另一回事了,我们后面会讲。
我曾经犯过一个低级错误:把视场锥体当成了视线坐标系里的东西。结果算出来的“目标是否在视场内”的判断,全是错的。后来才意识到,视场锥体是在弹体坐标系里定义的,而目标位置是在视线坐标系里描述的。两者之间必须做坐标变换。
3.4 三个坐标系的关系:一张图说清楚
下面这张 SVG 图,是我自己画的一个结构图。它把三个坐标系的关系、以及视场锥体的位置,一次性讲清楚了。
从图上你可以看到:弹体坐标系是“根”,视场锥体附着在它上面。视线坐标系是“桥梁”,连接导弹和目标。目标是否在视场内,就看目标相对于弹体坐标系的方向,是否落在视场锥体内部。
3.5 实用表格:三个坐标系对比
| 特性 | 弹体坐标系 | 视线坐标系 | 视场锥体 |
|---|---|---|---|
| 原点 | 导弹质心 | 导弹质心 | 导引头中心 |
| X轴指向 | 弹体纵轴(头部) | 指向目标 | 导引头光轴 |
| 是否随弹体转动 | 是 | 否(随视线转) | 是(固连弹体) |
| 主要用途 | 描述导弹姿态 | 描述目标相对运动 | 判断目标是否可见 |
| 典型角度 | 俯仰/偏航/滚转 | 视线高低角/方位角 | 视场半角 |
一个小技巧:我写代码时,习惯用四元数来表示弹体坐标系和视线坐标系之间的旋转关系。欧拉角虽然直观,但容易遇到“万向锁”问题。尤其是做全向攻击的导弹,俯仰角接近90度时,用欧拉角会出奇点。嗯,这个坑我踩过。
好了,坐标系定义就讲到这里。记住一句话:弹体坐标系是“身体”,视线坐标系是“眼睛”,视场锥体是“视野范围”。三者搞清楚了,后面讲视场约束的数学建模,你就不会迷路。