3. 六自由度动力学基础:刚体运动方程(力方程、力矩方程)推导

各位,咱们今天聊点硬核的——六自由度动力学方程。说白了,就是搞清楚飞行器在空中到底是怎么动的。你想想看,一架飞机在天上,它不光能往前飞,还能抬头、低头、滚转、偏航,这六个自由度怎么用数学描述?我当年刚入行时,对着这些方程也是一头雾水,直到亲手做过几次风洞数据对标,才真正体会到这些公式的分量。

3.1 为什么需要六自由度模型?

先问个问题:我们做飞行器设计,最怕什么?怕算不准。算不准就飞不稳,飞不稳就可能摔。传统的三自由度模型只考虑质心运动,忽略了姿态变化。但实际飞行中,飞机一个滚转,升力方向就变了,这影响太大了。

六自由度模型,就是把质心的三个平动自由度和绕质心的三个转动自由度全考虑进去。我在某型号项目中就吃过亏——初期用简化模型算的配平,结果风洞一吹,力矩差了20%。后来老老实实把六自由度方程建全了,才把问题揪出来。

核心思想: 六自由度模型 = 质心运动(力方程)+ 绕质心转动(力矩方程)

3.2 坐标系与基本假设

推导之前,先把坐标系定好。我个人习惯用体轴系(Body Frame),原点在飞行器质心,x轴指向机头,y轴指向右翼,z轴指向下。当然,你也可以用地轴系、风轴系,但体轴系最直观,力方程和力矩方程写起来最顺手。

基本假设就两条:

  • 刚体假设:飞行器不变形。说实话,真实飞机肯定有弹性,但低速、小扰动下,刚体假设够用了。
  • 质量不变:短时间内燃油消耗忽略不计。你要是算长航时,得加质量变化项。

3.3 力方程推导:牛顿第二定律的体轴系展开

力方程的基础是牛顿第二定律:F = m * a。但注意,这里的加速度是相对于惯性系的。而我们的力和速度都是在体轴系里测量的,这就涉及坐标变换。

设飞行器质心速度为 V = [u, v, w]^T(体轴系分量),角速度为 ω = [p, q, r]^T。惯性系下的加速度为:

a_inertial = dV/dt + ω × V

其中 dV/dt 是体轴系下的速度变化率,ω × V 是哥氏加速度项。这个叉乘项很多人容易漏,我当年就犯过这个错——算出来的加速度总差一点,查了半天才发现是交叉项没加。

于是力方程写成:

m * (du/dt + q*w - r*v) = Fx
m * (dv/dt + r*u - p*w) = Fy
m * (dw/dt + p*v - q*u) = Fz

这里 Fx, Fy, Fz 是体轴系下的总外力,包括气动力、推力、重力分量。

实战技巧: 重力分量别忘了!体轴系下,重力不是简单的 mg,而是 [-mg*sinθ, mg*cosθ*sinφ, mg*cosθ*cosφ]。θ是俯仰角,φ是滚转角。

3.4 力矩方程推导:欧拉方程的体轴系形式

力矩方程来自角动量定理:M = dH/dt,其中 H 是角动量。对于刚体,H = I * ω,I 是惯性张量。

同样,在体轴系下展开:

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

假设惯性张量 I 为常数(刚体假设),展开后得到三个分量方程:

Ixx * dp/dt + (Izz - Iyy) * q * r - Ixz * (p*q + dr/dt) = L
Iyy * dq/dt + (Ixx - Izz) * p * r + Ixz * (p^2 - r^2) = M
Izz * dr/dt + (Iyy - Ixx) * p * q + Ixz * (q*r - dp/dt) = N

看着复杂是吧?其实拆开看就三部分:

  • 主惯性矩项:Ixx * dp/dt 等,就是角加速度
  • 陀螺力矩项:(Izz - Iyy) * q * r 等,由转动耦合产生
  • 惯性积项:Ixz 相关项,如果飞行器对称,这部分为零

我在做某无人机项目时,发现横航向模态总对不上风洞数据。后来一查,是惯性积 Ixz 没考虑——那飞机有个不对称的载荷挂架,惯性积不小。加上之后,模型就准了。

注意: 惯性张量 I 一定要用质心坐标系测量。如果坐标原点不在质心,惯性积会多出平行轴定理的修正项,方程形式就变了。

3.5 力与力矩的组成

方程里的 F 和 M 不是凭空来的。它们由三部分构成:

来源 力矩
气动力/力矩 升力、阻力、侧力 俯仰力矩、滚转力矩、偏航力矩
推力 发动机推力(沿体轴或安装角分解) 推力偏心产生的力矩
重力 体轴系下的重力分量 如果质心与压心不重合,重力也产生力矩

气动力矩通常用风洞数据或CFD计算得到,以气动导数的形式给出。比如俯仰力矩系数 Cm = Cm0 + Cmα * α + Cmq * q。这些系数怎么用?后面章节会细讲。

3.6 方程组的封闭与求解

力方程和力矩方程一共6个标量方程,未知数有 u,v,w,p,q,r 共6个。理论上封闭了。但别忘了,气动力和力矩还依赖于姿态角(φ,θ,ψ)和空速、迎角、侧滑角。所以还得加上运动学方程:

dφ/dt = p + q*sinφ*tanθ + r*cosφ*tanθ
dθ/dt = q*cosφ - r*sinφ
dψ/dt = (q*sinφ + r*cosφ) / cosθ

再加上位置方程:

dx/dt = u*cosθ*cosψ + v*(sinφ*sinθ*cosψ - cosφ*sinψ) + w*(cosφ*sinθ*cosψ + sinφ*sinψ)
dy/dt = u*cosθ*sinψ + v*(sinφ*sinθ*sinψ + cosφ*cosψ) + w*(cosφ*sinθ*sinψ - sinφ*cosψ)
dz/dt = -u*sinθ + v*sinφ*cosθ + w*cosφ*cosθ

一共12个一阶微分方程,这就是完整的六自由度模型。求解时用数值积分,比如四阶龙格-库塔法。我一般用固定步长0.01秒,对于常规飞行器够用了。

验证要点: 做风洞数据对标时,先把气动导数输进去,跑一个配平状态。如果配平迎角、舵偏角跟风洞数据对不上,八成是方程写错了或者气动系数有误。

3.7 本章知识体系

下面这张图,把六自由度动力学方程的核心逻辑串起来了。从坐标系到力方程、力矩方程,再到气动输入和数值求解,每一步都环环相扣。

六自由度动力学方程知识体系 体轴系定义 力方程 (3个) F = m*(dV/dt + ω×V) 力矩方程 (3个) M = d(Iω)/dt + ω×(Iω) 外力输入:气动力 + 推力 + 重力 外力矩输入:气动力矩 + 推力偏心 运动学方程:姿态角 + 位置积分 数值求解:四阶龙格-库塔法 耦合项

嗯,到这里,六自由度动力学方程的核心推导就讲完了。你可能会问:这些方程怎么跟风洞数据对上?别急,下一节我们会讲气动导数的提取与插值方法,到时候你就知道怎么把风洞里的系数塞进这些方程里了。

最后说一句:方程是死的,但理解是活的。我建议你亲手推导一遍,哪怕照着抄也行。只有自己推过,才知道哪些项容易漏,哪些近似可以取。这是我从一个菜鸟工程师到能独立负责气动建模项目,最大的心得。


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