刚体六自由度运动方程:牛顿-欧拉方程实战推导

各位同学,欢迎来到《飞行器非线性动力学模型搭建实战》的第一章。

今天我们要啃的,是整个飞行器建模的根基——刚体六自由度运动方程。说白了,就是搞清楚飞机在三维空间里怎么飞、怎么转,以及力和力矩到底是怎么影响它的。

我个人习惯,讲任何模型之前,先画一张图把逻辑理清楚。你看下面这张图,就是本章的核心知识框架:

刚体六自由度运动方程 平动动力学 转动动力学 牛顿第二定律:F = m·a 质量 m 与外力 F 欧拉方程:M = I·α + ω×I·ω 惯量张量 I 与外力矩 M 核心:在机体坐标系下建立力和力矩的平衡关系

嗯,这张图把本章要讲的东西串起来了。左边是平动,右边是转动,中间是它们共同作用的刚体。你想想看,飞机在空中,既要往前飞(平动),又要滚转俯仰(转动),这两件事其实是耦合在一起的。

1. 为什么要用机体坐标系?

这个问题,我刚开始学的时候也困惑过。明明地球坐标系更直观,为什么非要用机体坐标系?

原因其实很简单:飞行器上的传感器(比如IMU)测到的数据,天然就是机体坐标系下的。你装在飞机上的加速度计,它测的是沿着飞机纵轴、横轴、立轴方向的加速度,而不是沿着地球北东地方向的。

另外,飞机的气动力和推力,也都是沿着机体轴定义的。所以,在机体坐标系下建立方程,可以省去大量的坐标变换,计算效率更高。

核心结论:机体坐标系是飞行器动力学建模的「母语」。用母语写方程,最顺手。

2. 平动动力学方程推导

平动部分,说白了就是牛顿第二定律的矢量形式:

F = m · a

但这里有个坑——加速度 a 是在惯性系下定义的。而我们想在机体坐标系下写方程,怎么办?

我记得有一次做项目,一个同事直接把机体坐标系下的加速度代入牛顿第二定律,结果仿真出来的轨迹完全不对。问题就出在这里:机体坐标系本身在旋转,所以对时间的导数要考虑旋转效应

正确的做法是使用哥里奥利定理:

在惯性系下的导数 = 在机体系下的导数 + 角速度 × 矢量

应用到速度矢量 V 上:

m · (dV/dt + ω × V) = F

其中:

  • V = [u, v, w]^T —— 机体坐标系下的速度分量
  • ω = [p, q, r]^T —— 机体角速度
  • F = [Fx, Fy, Fz]^T —— 合外力(包括推力、气动力、重力)

展开成标量形式,就是大家熟悉的六自由度方程中的前三个:

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

我的小技巧:记这个公式的时候,可以想象一个旋转的陀螺。你用手去拨它,会发现它不按你预期的方向动——这就是交叉耦合项 q·w、r·u 这些在起作用。

3. 转动动力学方程推导

转动部分,对应的是欧拉方程。它的形式比平动复杂一些,因为涉及到了惯量张量

先给出基本形式:

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

这里 I 是惯量张量,它是一个 3×3 的矩阵:

I = [Ixx, -Ixy, -Ixz;
     -Ixy, Iyy, -Iyz;
     -Ixz, -Iyz, Izz]

如果飞行器是对称的(大多数固定翼飞机都满足),那么惯性积 Ixy、Ixz、Iyz 可以忽略,惯量张量退化为对角阵:

I = diag([Ixx, Iyy, Izz])

这时候欧拉方程就简化成:

Ixx·dp/dt + (Izz - Iyy)·q·r = Mx
Iyy·dq/dt + (Ixx - Izz)·p·r = My
Izz·dr/dt + (Iyy - Ixx)·p·q = Mz

曾经踩过的坑:有一次我帮一个团队调试无人机模型,发现滚转和偏航总是耦合在一起。查了半天,发现他们把 Ixz 设成了零,但实际飞机因为载荷分布不对称,Ixz 并不为零。所以,除非你非常确定飞机是对称的,否则不要轻易忽略惯性积

4. 质量、惯量、外力、外力矩的关系

现在我们把平动和转动方程放在一起,看看它们之间的关系:

物理量 平动方程 转动方程
惯性参数 质量 m(标量) 惯量张量 I(3×3 矩阵)
运动变量 速度 V = [u, v, w] 角速度 ω = [p, q, r]
输入 外力 F(推力、气动力、重力) 外力矩 M(气动力矩、推力偏心矩)
耦合项 ω × V(哥里奥利项) ω × (I·ω)(陀螺力矩项)

从这张表可以看得很清楚:质量和惯量决定了飞行器对力和力矩的响应。质量越大,加速越慢;惯量越大,转动越迟钝。而耦合项则揭示了平动和转动之间的相互影响——比如飞机滚转(p)时,如果同时有偏航角速度(r),就会产生俯仰方向的力矩。

5. 实战中的注意事项

最后,分享几个我在实际建模中总结的经验:

  • 单位制要统一:我见过最离谱的错误,是把力的单位用了牛顿,质量用了克,结果加速度差了三个数量级。建议全部使用国际单位制(SI)。
  • 注意重力处理:重力是在惯性系下定义的,需要转换到机体坐标系。这个转换矩阵依赖于飞机的姿态角(欧拉角或四元数)。
  • 惯量参数要实测:不要用CAD软件算出来的惯量直接上仿真。我做过对比,CAD算的和实际测量的,误差能有 10%~20%。
  • 先验证开环响应:在加控制器之前,先给一个阶跃输入,看看飞机的响应是否物理合理。比如给升降舵一个正向偏转,飞机应该低头(俯仰角速度负向)。

本章小结:刚体六自由度运动方程,本质上就是牛顿第二定律和欧拉方程在机体坐标系下的具体形式。平动方程描述「力怎么改变速度」,转动方程描述「力矩怎么改变角速度」。质量、惯量、外力、外力矩这四个量,就是整个动力学模型的「四梁八柱」。

好了,第一章的内容就到这里。记住,模型是控制的基础——方程建不对,后面所有的控制器设计都是空中楼阁。

专注资料整理