4. 刚体动力学:牛顿-欧拉方程、平动动力学、转动动力学、惯性张量

好,咱们进入正题。前面聊完了运动学,说白了就是「怎么动」的问题。现在要聊动力学,也就是「为什么动」——力和力矩是怎么让四旋翼飞起来的。

我个人习惯把四旋翼看作一个刚体。虽然它确实有振动、有柔性,但在建模初期,刚体假设是最实用的。你想想看,如果一开始就把所有弹性变形都考虑进去,那模型复杂到根本没法用。

4.1 牛顿-欧拉方程:飞行的底层逻辑

牛顿-欧拉方程,说白了就是两个核心公式的合体:

  • 牛顿第二定律:描述平动,F = ma
  • 欧拉方程:描述转动,τ = I·α + ω × (I·ω)

这两个公式,就是四旋翼动力学建模的基石。我当年刚入行时,总觉得这太简单了,不就是高中物理吗?结果第一次做仿真,飞机直接翻了个跟头——因为我忘了把惯性张量搞对。

核心要点:牛顿-欧拉方程把飞行器的运动拆成了两部分——质心的平动和绕质心的转动。这两部分通过力和力矩耦合在一起,但方程本身是独立的。

4.2 平动动力学:力怎么让飞机移动

平动动力学,关注的是飞行器质心的运动。在惯性坐标系下,牛顿第二定律可以写成:

m · dV/dt = F_gravity + F_thrust + F_aero

其中:

  • m 是飞行器总质量
  • V 是质心速度向量
  • F_gravity 是重力,方向向下
  • F_thrust 是四个旋翼产生的总推力,方向沿机体z轴
  • F_aero 是空气阻力,通常与速度平方成正比

这里有个坑,我踩过。推力方向是在机体坐标系下的,但重力是在惯性坐标系下的。所以做仿真时,必须把推力通过旋转矩阵转换到惯性系。我曾经偷懒没做这个转换,结果仿真出来的飞机是横着飞的……

我的经验:平动动力学方程里,最容易被忽略的是空气阻力项。低速飞行时确实可以忽略,但如果你要做高速机动或者抗风控制,这一项必须加进去。我做过一个项目,不加阻力项时控制器参数调得挺好,一上真机就抖得不行——就是因为仿真里没考虑阻力。

4.3 转动动力学:力矩怎么让飞机旋转

转动动力学比平动复杂一些。欧拉方程在机体坐标系下写成:

I · dω/dt + ω × (I · ω) = τ_thrust + τ_gyro

其中:

  • I 是惯性张量(3×3矩阵)
  • ω 是角速度向量 [p, q, r]ᵀ
  • τ_thrust 是旋翼产生的控制力矩
  • τ_gyro 是旋翼陀螺效应产生的力矩

为什么要加那个 ω × (I·ω) 项?因为飞行器在旋转时,角动量方向会变化,产生一个「额外」的力矩。说白了,就是旋转的物体不愿意改变旋转方向——这就是陀螺效应。

注意:陀螺效应项在低速旋转时可以忽略,但在高速旋转时(比如快速横滚),这一项会产生明显的耦合。我见过有人做仿真时把这一项去掉了,结果实际飞行时飞机在横滚时莫名其妙地偏航——这就是陀螺效应在作怪。

4.4 惯性张量:飞机的「旋转惯性」

惯性张量,说白了就是描述物体「抗拒旋转」的度量。对于四旋翼,它是一个3×3的对称矩阵:

I = | Ixx  -Ixy  -Ixz |
    | -Ixy  Iyy  -Iyz |
    | -Ixz  -Iyz  Izz |

对角线元素 Ixx、Iyy、Izz 是绕各轴的转动惯量。非对角线元素是惯性积,表示质量分布的不对称性。

对于四旋翼,如果结构对称,惯性积通常很小,可以近似为零。但注意,这只是近似。我做过一个项目,飞机上挂了一个偏载的摄像头,结果惯性积变得不可忽略,导致横滚和偏航耦合严重。后来我花了三天时间重新辨识惯性张量才搞定。

参数 物理意义 典型值(小四旋翼)
Ixx 绕x轴(横滚)的转动惯量 0.005 - 0.02 kg·m²
Iyy 绕y轴(俯仰)的转动惯量 0.005 - 0.02 kg·m²
Izz 绕z轴(偏航)的转动惯量 0.01 - 0.03 kg·m²
Ixy, Ixz, Iyz 惯性积(对称结构≈0) 0 或很小

如何获取惯性张量? 三种方法:

  1. CAD模型计算:用SolidWorks等软件,给每个零件赋材质,直接算出来。最准,但需要详细模型。
  2. 实验辨识:用扭摆法或三线摆法实测。我常用这个方法,因为实际装配后的质量分布和CAD总有偏差。
  3. 经验估算:把飞机简化为几个质量点(电机、电池、飞控板),用平行轴定理估算。精度一般,但快速。

4.5 知识体系总览

下面这张图,是我自己梳理的本章知识结构。你看一眼,就能明白各个概念之间的关系。

刚体动力学知识体系 牛顿-欧拉方程 平动动力学 转动动力学 F = m · a(牛顿第二定律) 重力 + 推力 + 空气阻力 τ = I·α + ω×(I·ω)(欧拉方程) 控制力矩 + 陀螺效应力矩 惯性张量 I 转动惯量(对角线) 惯性积(非对角线) 完整动力学模型 = 平动 + 转动 + 惯性张量

嗯,这张图把本章的核心逻辑串起来了。牛顿-欧拉方程是总纲,往下分平动和转动两条线,而惯性张量是转动部分的核心参数。你写代码做仿真时,就按这个结构来组织代码,不会乱。

最后说一句:动力学建模是飞控算法的基础。模型不准,控制器设计得再好也是空中楼阁。我见过太多人花大量时间调PID参数,却不愿意花一天时间把惯性张量测准——结果就是飞机怎么调都飞不稳。所以,别偷懒,把动力学模型搞扎实了,后面会省很多事。

专注资料整理