4. 刚体动力学建模:牛顿-欧拉方程、六自由度运动方程、力和力矩分析

各位同学,今天我们进入一个硬核话题——刚体动力学建模。说白了,就是搞清楚eVTOL在空中到底是怎么飞的。你想想看,一架飞行器在天上,六个自由度:三个平动(前后、左右、上下),三个转动(俯仰、滚转、偏航)。怎么用数学描述它?这就是牛顿-欧拉方程的用武之地。

我个人习惯,建模之前先画个图,把坐标系、力、力矩都标清楚。不然算到一半,符号正负搞反了,那可就尴尬了。我在项目中就吃过这个亏,后面会细说。

4.1 牛顿-欧拉方程:飞行的“宪法”

牛顿第二定律告诉我们:力等于质量乘以加速度。欧拉方程呢?它说力矩等于转动惯量乘以角加速度。两者合起来,就是刚体动力学的核心。

对于eVTOL,我们通常把飞行器看作一个刚体。嗯,这里要注意,实际上机翼、旋翼会有弹性变形,但刚体假设在初步设计阶段完全够用。你想想看,如果一开始就考虑柔性,那方程复杂到没法手算。

牛顿方程(平动部分):

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

欧拉方程(转动部分):

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

其中:

  • m:飞行器总质量
  • V:速度向量(在机体坐标系下)
  • ω:角速度向量
  • I:转动惯量矩阵(3×3)
  • F_ext:合外力
  • M_ext:合外力矩

这里有个坑:方程中的叉乘项(ω × V 和 ω × (I·ω))是科里奥利力和陀螺力矩。我曾经在仿真中忘了加这一项,结果飞行器模型在天上乱转,怎么调PID都稳不住。后来查了半天才发现是这里漏了。

避坑指南: 千万不要忽略叉乘项!尤其在高速旋转或大机动时,陀螺力矩的影响非常显著。我建议你在代码里单独写一个函数计算这些耦合项,方便调试。

4.2 六自由度运动方程:12个状态变量

六自由度运动方程,说白了就是12个一阶微分方程。哪12个?位置3个、速度3个、姿态3个(欧拉角或四元数)、角速度3个。我习惯把它们写成状态空间形式:

状态向量 x = [x, y, z, u, v, w, φ, θ, ψ, p, q, r]^T

其中:

  • x, y, z:位置(惯性坐标系)
  • u, v, w:速度(机体坐标系)
  • φ, θ, ψ:滚转角、俯仰角、偏航角
  • p, q, r:滚转角速度、俯仰角速度、偏航角速度

运动方程可以写成:

位置导数: d[x,y,z]/dt = R(φ,θ,ψ) * [u,v,w]^T
姿态导数: d[φ,θ,ψ]/dt = T(φ,θ) * [p,q,r]^T
速度导数: d[u,v,w]/dt = F_ext/m - ω × [u,v,w]^T
角速度导数: d[p,q,r]/dt = I^(-1) * (M_ext - ω × (I·ω))

这里R是旋转矩阵,T是欧拉角速率转换矩阵。我个人建议用四元数代替欧拉角,可以避免万向锁问题。我在做倾转旋翼机项目时,就因为欧拉角在90度俯仰时奇异,仿真直接崩了。换成四元数后,稳如老狗。

小技巧: 如果你用MATLAB/Simulink,可以直接用"Aerospace Blockset"里的刚体动力学模块。但我不建议直接黑盒使用——你得理解里面的原理,不然出了问题都不知道怎么调。

4.3 力和力矩分析:eVTOL的“肌肉”

力和力矩是驱动飞行器运动的根本。对于eVTOL,主要来源有:

力/力矩来源 产生机制 建模要点
旋翼拉力 旋翼旋转产生升力 与转速平方成正比,考虑诱导速度
气动阻力 机身、机翼与空气摩擦 与速度平方成正比,考虑迎角
重力 地球引力 恒定,方向垂直向下
陀螺力矩 旋翼进动效应 与旋翼转速和机体角速度相关
控制力矩 差动推力、舵面偏转 取决于控制分配策略

我举个例子。假设一个四旋翼eVTOL,四个旋翼产生拉力T1~T4。那么:

总升力 F_z = T1 + T2 + T3 + T4
滚转力矩 M_x = L * (T2 - T4)   // L是力臂
俯仰力矩 M_y = L * (T3 - T1)
偏航力矩 M_z = k * (T1 + T3 - T2 - T4)  // k是反扭矩系数

你看,控制分配其实就是一个线性映射。但实际中,旋翼之间会有气动干扰,比如相邻旋翼的下洗流会影响彼此的拉力。我在做风洞实验时发现,悬停状态下干扰最大,前飞时反而小一些。所以建模时最好加一个干扰修正项。

核心要点: 力和力矩建模的精度,直接决定了飞控系统的性能。我建议你至少做三件事:1)查文献获取气动系数;2)做CFD仿真验证;3)有条件的话做风洞实验。三步走下来,模型基本靠谱。

4.4 知识体系总览

下面这张图,是我自己总结的刚体动力学建模框架。你把它打印出来贴在工位上,写代码时对照着看,不容易漏东西。

刚体动力学建模知识体系 输入:力与力矩 牛顿-欧拉方程 m·a = F, I·α = M 六自由度运动方程(12状态) 位置·速度·姿态·角速度 输出:运动状态 关键要素 • 坐标系定义 • 转动惯量 • 气动系数 • 控制分配 • 干扰建模 • 数值积分 常见陷阱 ⚠ 叉乘项遗漏 ⚠ 欧拉角奇异 ⚠ 坐标系混淆 ⚠ 惯量矩阵错误 ⚠ 忽略气动干扰 ⚠ 积分步长过大

这张图把整个建模流程串起来了。从输入(力和力矩)到核心方程(牛顿-欧拉),再到状态方程(六自由度),最后输出运动状态。左边是建模时需要的关键要素,右边是容易踩的坑。你写代码时,对照着检查一遍,能省不少调试时间。

好了,刚体动力学建模就讲到这里。记住,模型是飞控的基础。模型不准,控制律再花哨也没用。我见过太多团队在模型上偷懒,最后试飞时炸机,得不偿失。


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