3、飞行动力学基础:刚体运动方程、气动力与力矩模型、重力与推力模型

飞行动力学,说白了就是研究飞机怎么飞、怎么转、怎么受力的学问。我刚开始接触这块时,觉得公式又多又杂,后来发现只要抓住「力」和「力矩」这两条主线,一切就清晰了。这一章,咱们就把刚体运动方程、气动力模型、重力与推力模型掰开揉碎讲清楚。

3.1 刚体运动方程:六自由度运动

飞机在空中运动,可以分解为三个方向的平动和三个方向的转动。这就是常说的六自由度运动。我个人习惯把平动和转动分开建模,这样调试起来更清晰。

平动方程(牛顿第二定律):

m * (dV/dt + ω × V) = F_ext

转动方程(欧拉方程):

I * dω/dt + ω × (I * ω) = M_ext

其中:

  • m:飞机质量
  • V:速度向量(机体坐标系下)
  • ω:角速度向量(p, q, r)
  • I:惯性张量矩阵
  • F_ext:合外力(气动力 + 重力 + 推力)
  • M_ext:合外力矩(气动力矩 + 推力力矩)

核心要点:平动方程中的科里奥利项 ω × V 很容易被忽略。我在项目中遇到过,忽略这项后仿真结果与实际飞行偏差很大,尤其是做高速机动时。

为什么会这样?因为飞机在旋转时,速度向量也在跟着转。你想想看,如果机头快速上仰,即使油门不变,空速也会因为姿态变化而改变。这就是科里奥利效应的物理意义。

3.2 气动力与力矩模型

气动力是飞机飞行的核心。说白了,就是空气流过机翼、机身、尾翼时产生的力和力矩。我建议把气动力拆成三部分:升力、阻力、侧力。

3.2.1 升力模型

升力公式:

L = 0.5 * ρ * V² * S * CL

其中:

  • ρ:空气密度(随高度变化)
  • V:空速
  • S:机翼参考面积
  • CL:升力系数(攻角α的函数)

升力系数CL通常可以线性化:

CL = CL0 + CLα * α

CL0是零攻角升力系数,CLα是升力线斜率。嗯,这里要注意:当攻角超过失速角时,这个线性关系就不成立了。我曾经在调参时没注意失速边界,仿真里飞机直接掉下来了,后来加了失速保护才搞定。

3.2.2 阻力模型

阻力公式:

D = 0.5 * ρ * V² * S * CD

阻力系数CD通常分解为:

CD = CD0 + K * CL²
  • CD0:零升阻力(摩擦阻力、压差阻力)
  • K:诱导阻力因子
  • K * CL²:诱导阻力(升力产生的代价)

个人经验:调参时,CD0和K的取值很关键。我习惯先通过风洞数据或CFD仿真标定这两个参数,再在飞行测试中微调。直接拍脑袋给值,仿真和实飞差距会很大。

3.2.3 侧力模型

侧力主要来自侧滑角β和方向舵偏角δr:

Y = 0.5 * ρ * V² * S * CY
CY = CYβ * β + CYδr * δr

侧力系数CYβ通常是负值,意味着飞机有恢复侧滑的趋势——这就是静稳定性。

3.2.4 气动力矩模型

气动力矩包括滚转力矩L、俯仰力矩M、偏航力矩N。每个力矩都可以写成类似的形式:

M = 0.5 * ρ * V² * S * c * Cm

其中c是平均气动弦长(俯仰力矩)或翼展(滚转/偏航力矩)。

俯仰力矩系数Cm的典型表达式:

Cm = Cm0 + Cmα * α + Cmδe * δe + Cmq * q
  • Cm0:零攻角俯仰力矩(配平相关)
  • Cmα:纵向静稳定性导数(负值表示稳定)
  • Cmδe:升降舵效率
  • Cmq:俯仰阻尼导数

避坑指南:我曾经在建模时漏掉了Cmq项,结果仿真里飞机俯仰振荡越来越剧烈,完全不符合实际。阻尼项虽然数值小,但对动态响应影响巨大,千万别省。

3.3 重力与推力模型

3.3.1 重力模型

重力在机体坐标系下的分量:

Fg = m * g * [-sinθ, sinφ * cosθ, cosφ * cosθ]^T

其中φ是滚转角,θ是俯仰角。你看,重力在水平飞行时主要影响垂直方向,但一旦飞机倾斜或俯仰,重力就会分解到其他轴向上。

我个人习惯把重力单独处理,不合并到气动力里。这样调试时,可以单独关闭重力看气动响应,非常方便。

3.3.2 推力模型

推力模型相对简单,但细节不少。对于螺旋桨飞机:

T = CT * ρ * n² * D⁴

其中:

  • CT:推力系数(与前进比J有关)
  • n:螺旋桨转速
  • D:螺旋桨直径

对于喷气发动机:

T = T_max * δ_throttle

推力通常沿机体X轴方向,但要注意:如果发动机安装有倾角,推力也会产生力矩。

重要提醒:推力模型中的时间常数不能忽略。发动机从油门指令到实际推力输出有延迟,这个延迟会影响控制器的带宽设计。我见过有人用理想推力模型设计控制器,结果实飞时振荡不止,就是因为没考虑推力延迟。

3.4 知识体系总览

下面这张图总结了本章的核心逻辑:从力和力矩出发,推导出飞机的运动状态。

飞行动力学知识体系 输入 舵面偏角、油门、大气数据 力和力矩计算 气动力 + 重力 + 推力 运动方程 六自由度刚体方程 输出 位置、速度、姿态、角速度 状态反馈(闭环仿真) 气动力模型 气动力矩模型 重力模型 推力模型

3.5 模型集成与调试建议

把上面这些模型组合起来,就得到了完整的飞行动力学仿真模型。我建议按以下步骤调试:

  1. 先跑开环:给定固定舵面和油门,看飞机能否稳定飞行
  2. 检查配平点:水平飞行时,升力=重力,推力=阻力,力矩平衡
  3. 注入小扰动:给一个小的攻角或侧滑角扰动,看响应是否收敛
  4. 对比实飞数据:用实际飞行日志验证模型精度

调试技巧:我习惯在仿真中加一个「模型开关」,可以单独关闭重力、气动力或推力。这样能快速定位问题出在哪个模块。比如飞机往下掉,关闭重力后还掉,那肯定是升力模型有问题。

好了,这一章的内容就到这里。飞行动力学是飞控算法的基础,把力和力矩模型搞扎实了,后面的控制器设计才能有的放矢。记住:模型精度决定了仿真可信度,仿真可信度决定了实飞安全性。


公众号:蓝海资料掘金营,微信deep3321