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度俯仰时奇异,仿真直接崩了。换成四元数后,稳如老狗。
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是反扭矩系数
你看,控制分配其实就是一个线性映射。但实际中,旋翼之间会有气动干扰,比如相邻旋翼的下洗流会影响彼此的拉力。我在做风洞实验时发现,悬停状态下干扰最大,前飞时反而小一些。所以建模时最好加一个干扰修正项。
4.4 知识体系总览
下面这张图,是我自己总结的刚体动力学建模框架。你把它打印出来贴在工位上,写代码时对照着看,不容易漏东西。
这张图把整个建模流程串起来了。从输入(力和力矩)到核心方程(牛顿-欧拉),再到状态方程(六自由度),最后输出运动状态。左边是建模时需要的关键要素,右边是容易踩的坑。你写代码时,对照着检查一遍,能省不少调试时间。
好了,刚体动力学建模就讲到这里。记住,模型是飞控的基础。模型不准,控制律再花哨也没用。我见过太多团队在模型上偷懒,最后试飞时炸机,得不偿失。
公众号:蓝海资料掘金营,微信deep3321