第二章 坐标系与运动学:常用坐标系定义、坐标变换方法、导弹运动学方程
各位同学,今天我们来聊聊导弹制导里最基础、也最绕不开的一块——坐标系与运动学。
说实话,我刚入行那会儿,觉得坐标系这东西太简单了,不就是几个箭头嘛。结果第一次做六自由度仿真,导弹飞了3秒就翻跟头了。查了半天,原来是坐标变换矩阵写反了。嗯,从那以后,我再也不敢小看坐标系了。
2.1 为什么需要多个坐标系?
你想想看,导弹在空中飞,涉及的东西太多了:
- 导弹自身怎么转、怎么动——用弹体坐标系最方便
- 导弹飞到了哪里、目标在哪里——用地面坐标系最直观
- 导弹速度方向怎么变——用速度坐标系最自然
说白了,没有哪个坐标系能同时搞定所有事。所以我们得学会在不同坐标系之间来回切换。这就是坐标变换的由来。
核心思想:每个物理量(位置、速度、力、力矩)都在最适合它的坐标系里描述,然后通过变换矩阵统一起来。
2.2 常用坐标系定义
我习惯把坐标系分成三类,大家记一下:
2.2.1 地面坐标系(惯性系)
原点通常取在发射点。OgXg轴指向正北,OgYg轴指向天顶,OgZg轴指向正东。这是一个右手系。
为什么用它?因为牛顿定律只适用于惯性系。导弹的质心运动方程,最终都要回到这个坐标系来写。
2.2.2 弹体坐标系
原点在导弹质心。ObXb轴沿弹体纵轴指向头部,ObYb轴在对称平面内垂直于Xb轴向上,ObZb轴按右手定则确定。
这个坐标系最大的好处——描述导弹姿态变化特别方便。俯仰、偏航、滚转,都是相对于弹体坐标系的。
2.2.3 速度坐标系
原点也在质心。OsXs轴沿速度矢量方向,OsYs轴在对称平面内垂直于速度矢量向上,OsZs轴按右手定则。
我在做气动系数插值时,经常要用到这个坐标系。因为升力、阻力本来就是相对于速度方向定义的。
2.3 坐标变换方法
坐标变换说白了就是旋转。一个坐标系绕某个轴转一个角度,就变成了另一个坐标系。
基本的旋转矩阵有三种:
| 旋转轴 | 旋转矩阵(绕θ角) |
|---|---|
| 绕X轴 |
|
| 绕Y轴 |
|
| 绕Z轴 |
|
举个例子,从地面系到弹体系的变换,通常按3-2-1顺序旋转:先绕Zg轴转偏航角ψ,再绕新的Y轴转俯仰角θ,最后绕新的X轴转滚转角φ。
我的小技巧:写变换矩阵时,我习惯先画个草图,把每次旋转后的坐标轴画出来。这样不容易搞错旋转顺序和正负号。曾经有一次,我就是因为ψ和θ的旋转顺序搞反了,导致仿真结果差了十万八千里。
2.4 导弹运动学方程
运动学方程描述的是导弹的位置和姿态随时间的变化关系。它不涉及力,只涉及几何关系。
2.4.1 质心运动学方程
在地面坐标系下,导弹质心的位置变化率就是速度:
dx/dt = V * cos(θ) * cos(ψ_v)
dy/dt = V * sin(θ)
dz/dt = -V * cos(θ) * sin(ψ_v)
其中V是速度大小,θ是弹道倾角,ψ_v是弹道偏角。
2.4.2 姿态运动学方程
导弹的角速度(p, q, r)与姿态角变化率的关系:
dφ/dt = p + q*sin(φ)*tan(θ) + r*cos(φ)*tan(θ)
dθ/dt = q*cos(φ) - r*sin(φ)
dψ/dt = (q*sin(φ) + r*cos(φ)) / cos(θ)
注意:当俯仰角θ接近±90°时,tan(θ)和1/cos(θ)会趋于无穷大。这就是所谓的“万向锁”问题。我在做高机动导弹仿真时遇到过这个问题,后来改用四元数法才解决。
2.5 知识体系总览
下面这张图是我自己画的,把本章的核心逻辑串起来了:
2.6 避坑指南
最后,分享几个我踩过的坑:
- 旋转顺序不能乱:不同的旋转顺序得到的结果完全不同。我建议在项目一开始就定好标准顺序,写在设计文档里。
- 角度定义要统一:同一个角度,有人用正北为0°,顺时针为正;有人用正东为0°,逆时针为正。不统一的话,对接时必出问题。
- 注意奇异点:俯仰角±90°附近,欧拉角法会失效。如果导弹要做大机动,建议用四元数。
我的习惯:每次写完坐标变换代码,我都会做一个简单的验证——把变换矩阵乘上它的转置,看是不是单位阵。如果是,说明矩阵是正交的,大概率没错。这个小测试帮我抓出过好几次笔误。
好了,坐标系和运动学就讲到这里。这些东西看着简单,但真用起来处处是细节。大家课后可以试着推导一下从地面系到速度系的变换矩阵,看看和弹体系有什么不同。