第二章 坐标系与运动学:导弹飞行的“语言”与“规则”
各位同学,欢迎来到第二章。上一章我们聊了导弹制导系统的整体架构,今天要讲的这部分,我个人认为是整个制导控制的基础——坐标系与运动学。
你想想看,导弹在天上飞,它怎么知道自己在哪里?怎么知道目标在哪里?怎么控制自己飞过去?这一切,都离不开坐标系。说白了,坐标系就是导弹的“语言”,运动方程就是它的“运动规则”。
我在做飞控算法的时候,遇到过不少因为坐标系搞混导致的bug。嗯,这里要特别提醒大家:坐标系问题,看似简单,但一旦出错,导弹可能就飞到天边去了。
2.1 常用坐标系定义
在导弹制导系统中,我们常用的坐标系有四个。每个坐标系都有它的“主场优势”,我们得根据不同的场景选择合适的坐标系。
| 坐标系名称 | 原点 | 基本平面/轴 | 主要用途 |
|---|---|---|---|
| 地心惯性坐标系 (ECI) | 地心 | 赤道面、春分点方向 | 卫星轨道、远程弹道计算 |
| 地面坐标系 (NED) | 发射点/地面站 | 北-东-地 | 导航、飞行轨迹描述 |
| 弹体坐标系 | 导弹质心 | 纵轴、立轴、横轴 | 姿态控制、气动力计算 |
| 速度坐标系 | 导弹质心 | 速度方向 | 气动分析、攻角侧滑角定义 |
地心惯性坐标系,这个坐标系是“绝对”的。它不随地球自转,是描述导弹在太空中运动的基准。我记得在搞远程弹道导弹项目时,弹道计算必须用ECI,否则地球自转带来的科里奥利力会把你算晕。
地面坐标系,也叫北东地坐标系。这个最直观,原点就在发射点,北向、东向、地向。我们平时说的“导弹飞了100公里,高度20公里”,用的就是地面坐标系。我个人习惯在导航解算时用这个坐标系,因为和GPS输出的经纬高数据转换起来很方便。
弹体坐标系,这个坐标系是“长在导弹身上的”。原点在质心,纵轴沿弹体轴线向前,立轴在对称面内向上,横轴按右手定则确定。为什么要用这个坐标系?因为导弹上的传感器(比如陀螺、加速度计)测量的都是相对于弹体的物理量。你想想看,舵面偏转产生的力矩,也是相对于弹体坐标系的。
速度坐标系,这个坐标系和弹体坐标系很像,但它的x轴指向速度方向。为什么需要它?因为气动力(升力、阻力)是相对于气流方向定义的。攻角就是速度轴和弹体纵轴的夹角,侧滑角是速度轴和对称面的夹角。
核心要点: 搞清这四个坐标系,是理解后面所有内容的前提。我建议你画个图,把每个坐标系的三轴方向标清楚,贴在工位上。
2.2 坐标变换矩阵
坐标系定义好了,接下来就是怎么从一个坐标系转换到另一个坐标系。这就是坐标变换矩阵的活儿。
坐标变换的本质,就是旋转。一个三维向量从一个坐标系变换到另一个坐标系,可以通过三次基本旋转来实现。每次旋转对应一个旋转矩阵。
绕x轴旋转角度α的矩阵:
R_x(α) = [1 0 0 ]
[0 cosα -sinα ]
[0 sinα cosα ]
绕y轴旋转角度β的矩阵:
R_y(β) = [ cosβ 0 sinβ ]
[ 0 1 0 ]
[-sinβ 0 cosβ ]
绕z轴旋转角度γ的矩阵:
R_z(γ) = [ cosγ -sinγ 0 ]
[ sinγ cosγ 0 ]
[ 0 0 1 ]
从地面坐标系到弹体坐标系的变换,通常采用“3-2-1”旋转顺序:先绕z轴转偏航角ψ,再绕y轴转俯仰角θ,最后绕x轴转滚转角φ。变换矩阵为:
C_b^n = R_x(φ) * R_y(θ) * R_z(ψ)
这里要注意,旋转顺序不能搞错。我曾经在项目中因为把旋转顺序写反了,导致仿真结果完全不对,查了两天才找到问题。嗯,这个坑你们一定要记住。
个人经验: 在FPGA实现坐标变换时,我建议用查表法。把sin和cos值预先算好存到ROM里,用角度值做地址直接查。这样比实时计算快得多,而且精度可控。
2.3 导弹运动方程
有了坐标系和变换矩阵,我们就可以描述导弹的运动了。导弹的运动方程,说白了就是牛顿第二定律在旋转坐标系下的应用。
导弹的运动分为两部分:质心运动和绕质心运动。
质心运动方程(力方程):
m * dV/dt = F_推力 + F_气动 + F_重力
在速度坐标系下展开,得到三个标量方程:
m * dV/dt = P * cosα * cosβ - X - m * g * sinθ
m * V * dθ/dt = P * (sinα * cosγ_v + cosα * sinβ * sinγ_v) + Y * cosγ_v - Z * sinγ_v - m * g * cosθ
-m * V * cosθ * dψ_v/dt = P * (sinα * sinγ_v - cosα * sinβ * cosγ_v) + Y * sinγ_v + Z * cosγ_v
其中,V是速度,θ是弹道倾角,ψ_v是弹道偏角,P是推力,X、Y、Z分别是阻力、升力和侧向力。
绕质心运动方程(力矩方程):
J * dω/dt + ω × (J * ω) = M
在弹体坐标系下展开:
J_x * dω_x/dt + (J_z - J_y) * ω_y * ω_z = M_x
J_y * dω_y/dt + (J_x - J_z) * ω_x * ω_z = M_y
J_z * dω_z/dt + (J_y - J_x) * ω_x * ω_y = M_z
这里J是转动惯量矩阵,ω是角速度,M是外力矩。
注意: 力矩方程中的叉乘项ω × (J * ω)很容易被忽略。我在做快速原型验证时,就因为这个项没加,导致仿真结果和实际飞行数据对不上。这个项代表了陀螺力矩,在高速旋转的导弹上影响很大。
2.4 气动模型简介
运动方程里的气动力和力矩,需要气动模型来提供。气动模型,说白了就是描述导弹和空气之间相互作用的数学模型。
气动力和力矩通常表示为:
X = C_x * q * S
Y = C_y * q * S
Z = C_z * q * S
M_x = m_x * q * S * L
M_y = m_y * q * S * L
M_z = m_z * q * S * L
其中,q = 0.5 * ρ * V² 是动压,S是参考面积,L是参考长度。C_x、C_y、C_z是气动力系数,m_x、m_y、m_z是气动力矩系数。
这些系数不是常数,它们随攻角α、侧滑角β、马赫数Ma、舵偏角δ等变化。通常用风洞实验或CFD计算得到数据表,然后在仿真中插值使用。
气动系数可以分解为基本项和增量项:
C_y = C_y0(α, β, Ma) + C_y_δe * δe + C_y_ωz * ωz * L/V
m_z = m_z0(α, β, Ma) + m_z_δe * δe + m_z_ωz * ωz * L/V
这里,C_y0和m_z0是基本气动系数,C_y_δe和m_z_δe是舵效导数,C_y_ωz和m_z_ωz是阻尼导数。
关键点: 气动模型是导弹制导控制系统设计的“基石”。模型不准,再好的控制算法也是白搭。我在项目中见过太多因为气动数据不准导致控制发散的情况。所以,拿到气动数据后,一定要先做模型校验。
好了,这一章的内容就到这里。坐标系是导弹的“语言”,运动方程是它的“运动规则”,气动模型是它和环境的“交互方式”。这三者构成了导弹运动描述的完整体系。
下一章,我们会进入制导律的设计。到时候你会发现,今天学的这些坐标系和运动学知识,是理解制导律的基础。嗯,先把基础打牢,后面才能飞得稳。