第3章:飞行动力学建模——坐标系定义、刚体六自由度方程、力和力矩建模

各位同学,欢迎来到第三章。说实话,飞行动力学建模是整个倾转旋翼机控制里最“地基”的部分。你想想看,如果连飞机怎么动、受什么力都描述不清楚,后面那些花哨的控制算法全是空中楼阁。我个人习惯,每次接手一个新机型,第一件事就是把坐标系和动力学方程重新捋一遍。这活儿看着枯燥,但能帮你避开后面80%的坑。

3.1 坐标系定义——别小看这步,我吃过亏

搞倾转旋翼机,我们至少需要三个坐标系:地面坐标系机体坐标系旋翼坐标系。嗯,这里要注意,旋翼坐标系不是固定的,它会随着倾转角度变化。

核心原则:所有坐标系都遵循右手定则。我见过有人把Z轴方向搞反,结果仿真直接炸了。

3.1.1 地面坐标系(E系)

原点固定在地面某点。X轴指向北,Y轴指向东,Z轴指向地心。说白了,就是给你一个绝对参考。我在做GPS融合时,发现地面系和导航系之间的转换矩阵写错一个符号,导致位置估计漂了十几米。后来我养成了习惯:每次写完坐标变换,先用单位向量验证一下。

3.1.2 机体坐标系(B系)

原点在飞机质心。X轴指向机头,Y轴指向右翼,Z轴指向机腹。这个坐标系跟着飞机一起动。倾转旋翼机有个特殊点:它的质心会随着旋翼倾转而变化。我曾经在项目中忽略了这一点,结果悬停时姿态控制一直有静差。

3.1.3 旋翼坐标系(R系)

原点在旋翼中心。X轴沿旋翼旋转轴方向。当倾转角为0°时,旋翼轴与机体Z轴平行;当倾转角为90°时,旋翼轴与机体X轴平行。这个坐标系是倾转旋翼机独有的,也是建模的难点。

我的小技巧:在代码里用结构体把三个坐标系打包,每个坐标系都带一个时间戳。这样调试时能追溯每个时刻的坐标变换是否正确。

3.2 刚体六自由度方程——飞机怎么动,全看它

六自由度方程,说白了就是描述飞机在三维空间里怎么平移、怎么旋转。一共6个方程:3个力方程(平动),3个力矩方程(转动)。

3.2.1 平动方程

在机体坐标系下,平动方程可以写成:

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

其中:

  • m:飞机质量
  • V:速度向量(在机体系下)
  • ω:角速度向量
  • F_ext:合外力(重力、气动力、推力)

这里有个容易忽略的点:科里奥利项 ω × V。我刚开始做仿真时,觉得这项很小就忽略了。结果在高速前飞时,仿真结果和实际飞行数据对不上。后来加上这一项,立马就准了。

3.2.2 转动方程

转动方程稍微复杂一点:

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

其中:

  • I:惯性张量矩阵
  • M_ext:合外力矩

注意:倾转旋翼机的惯性张量不是常数!当旋翼倾转时,质量分布会变化,I矩阵也会变。我见过有人直接用固定I矩阵做控制,结果在倾转过渡阶段出现了振荡。

3.3 力和力矩建模——把物理变成数学

力和力矩建模,就是把飞机受到的力用数学公式表达出来。倾转旋翼机主要受三类力:重力气动力旋翼力

3.3.1 重力建模

重力很简单,就是 mg,方向竖直向下。但在机体坐标系下表达时,需要做坐标变换:

F_gravity_B = R_EB * [0, 0, mg]^T

其中 R_EB 是从地面系到机体系的旋转矩阵。这个矩阵由欧拉角决定。我建议用四元数代替欧拉角,可以避免万向锁问题。嗯,这个后面讲姿态解算时会细说。

3.3.2 气动力建模

气动力包括升力、阻力、侧力。对于倾转旋翼机,机身和机翼的气动特性会随着旋翼倾转而变化。我一般用查表法:

L = 0.5 * ρ * V^2 * S * CL(α, δ)
D = 0.5 * ρ * V^2 * S * CD(α, δ)

其中:

  • ρ:空气密度
  • V:空速
  • S:参考面积
  • CL、CD:升力系数、阻力系数,是攻角α和倾转角δ的函数

避坑指南:我曾经直接用固定翼的CL-CD数据来建模,结果在悬停模式下完全不对。后来才意识到,旋翼下洗流会显著改变机翼的当地攻角。这个耦合效应必须考虑。

3.3.3 旋翼力建模

旋翼力是倾转旋翼机的核心。单个旋翼产生的力和力矩可以表示为:

T = CT * ρ * A * (ΩR)^2
Q = CQ * ρ * A * (ΩR)^2 * R

其中:

  • CT:拉力系数
  • CQ:扭矩系数
  • A:旋翼盘面积
  • Ω:旋翼转速
  • R:旋翼半径

当旋翼倾转时,拉力方向会变化。假设倾转角为δ,那么拉力在机体坐标系下的分量为:

F_rotor_B = T * [sin(δ), 0, -cos(δ)]^T

注意这里的符号:当δ=0°时,拉力沿Z轴负方向(向上);当δ=90°时,拉力沿X轴正方向(向前)。

3.4 知识体系总览

下面这张图是我自己画的,把本章的知识结构串起来了。你仔细看一遍,应该能对飞行动力学建模有个整体认识。

飞行动力学建模知识体系 坐标系定义 六自由度方程 力和力矩建模 地面坐标系 机体坐标系 旋翼坐标系 平动方程 转动方程 惯性张量 重力建模 气动力建模 旋翼力建模 坐标变换矩阵 (四元数 vs 欧拉角) 科里奥利项 (高速时不可忽略) 旋翼-机翼耦合 (下洗流影响) 模型精度决定控制性能上限

3.5 实战建议

最后,给各位几个实战建议:

  1. 先做仿真验证:把动力学模型写好后,先做开环仿真。给一个阶跃输入,看看响应是否合理。我一般会对比悬停和巡航两个极端状态。
  2. 注意数值稳定性:倾转旋翼机的动力学方程是刚性的,用普通的欧拉积分可能会发散。建议用四阶龙格-库塔法。
  3. 保留调试接口:在代码里把每个力和力矩都单独输出。这样出问题时,能快速定位是哪个力算错了。

我的经验:刚开始做倾转旋翼机建模时,我花了整整两周时间调参数。后来发现,问题出在旋翼扭矩系数CQ上——我用的数据是悬停状态下的,但前飞时CQ会变化。所以,建模时一定要考虑状态依赖关系。

好了,这一章的内容就到这里。飞行动力学建模是个慢工出细活的阶段,别着急。把坐标系搞清楚了,方程写对了,力和力矩算准了,后面的控制设计才能站得住脚。


专注资料整理