2、运动学与动力学模型:固定翼与旋翼飞行器的六自由度运动学方程、动力学方程简化、控制输入与状态空间表示

做飞行器控制,说白了就是跟数学模型打交道。我刚开始接触这个领域时,总觉得公式太多、太抽象。后来亲手调过几次真机,才明白——模型不是用来背的,是用来理解飞行器「脾气」的。

这一章,我们聊聊固定翼和旋翼飞行器的运动学与动力学模型。嗯,六自由度听起来吓人,拆开看其实就两件事:它怎么动(运动学),以及它为什么这么动(动力学)。

2.1 六自由度运动学方程

什么叫六自由度?说白了就是飞行器在三维空间里能做的六种独立运动:三个平动(前后、左右、上下),三个转动(俯仰、偏航、滚转)。

我个人习惯把运动学方程分成两部分来看:

  • 位置方程:描述飞行器在惯性系下的位置变化
  • 姿态方程:描述飞行器本体坐标系相对于惯性系的姿态变化

位置方程很简单,就是速度的积分:

ṗ = v

其中 p 是位置向量,v 是速度向量。但这里有个坑——速度通常是在机体坐标系下测量的,而位置需要在惯性系下表达。所以需要旋转矩阵 R 来转换:

ṗ = R · v_b

姿态方程稍微复杂一点。我见过很多新手直接用欧拉角微分方程,结果在俯仰角接近 ±90° 时直接炸了。为什么会这样?因为欧拉角存在奇异性问题。

我曾经踩过的坑: 用欧拉角做全姿态控制,飞行器做大机动时姿态解算直接发散。后来老老实实换成了四元数,问题迎刃而解。

四元数形式的姿态运动学方程:

q̇ = 0.5 · q ⊗ ω

其中 q 是单位四元数,ω 是机体角速度,⊗ 表示四元数乘法。这个方程没有奇异性,而且计算效率高,我建议你直接用它。

2.2 固定翼动力学方程简化

固定翼飞行器的动力学方程,完整写出来有十几项。但实际工程中,我们通常做以下简化:

  • 忽略地球自转:对于低速飞行器(马赫数 < 0.3),科里奥利力可以忽略
  • 假设刚体:不考虑结构弹性变形
  • 小扰动假设:将运动分解为基准运动和小扰动运动

简化后的固定翼动力学方程可以写成:

m · v̇ = F_aero + F_gravity + F_thrust
J · ω̇ = M_aero + M_thrust

其中 F_aero 是气动力,包括升力、阻力和侧力。我记得有一次做固定翼仿真,气动系数查表数据有误差,结果仿真出来的爬升率跟实际差了 30%。后来我学乖了——气动数据一定要做风洞校验或 CFD 验证

核心要点: 固定翼的动力学简化,本质上是把复杂的非线性气动模型,在某个工作点附近线性化。你想想看,巡航状态下的小扰动,跟大迎角机动完全是两套模型。

2.3 旋翼动力学方程简化

旋翼飞行器(比如四旋翼)的动力学跟固定翼完全不同。它没有机翼产生升力,全靠旋翼转速差来控制姿态和位置。

简化后的旋翼动力学方程:

m · z̈ = T · cos(φ) · cos(θ) - m · g
J · ω̇ = τ - ω × (J · ω)

其中 T 是总推力,τ 是控制力矩,φ、θ 分别是滚转角和俯仰角。

这里有个重要的简化假设:旋翼的响应时间远小于飞行器的时间常数。说白了就是电机响应够快,我们可以忽略旋翼的动态过程,直接认为控制输入等于力和力矩。

个人经验: 实际项目中,电机响应延迟大概在 10-20ms。如果你做高速机动控制,这个延迟不能忽略。我建议在模型里加一阶惯性环节来近似电机动态。

2.4 控制输入与状态空间表示

控制输入是什么?说白了就是你能直接操控的东西。

对于固定翼:

  • 油门(控制推力)
  • 升降舵(控制俯仰)
  • 副翼(控制滚转)
  • 方向舵(控制偏航)

对于四旋翼:

  • 四个电机的转速(或 PWM 占空比)
  • 通过混控矩阵映射到总推力 T 和三个轴力矩 τ

状态空间表示,就是把运动学和动力学方程写成标准形式:

ẋ = f(x, u)
y = g(x, u)

其中 x 是状态向量,u 是控制输入向量。以四旋翼为例:

符号 含义 维度
x = [p, v, q, ω] 位置、速度、姿态四元数、角速度 13维
u = [T, τ_x, τ_y, τ_z] 总推力、滚转力矩、俯仰力矩、偏航力矩 4维

嗯,这里要注意:状态空间表示不是唯一的。我习惯把姿态用四元数表示,因为做轨迹规划时插值方便。但如果你做的是小角度控制,用欧拉角也可以,只是要注意奇异性。

避坑指南: 状态空间模型的线性化点选择很重要。我曾经在悬停点线性化了一个四旋翼模型,结果做大速度前飞时控制器直接失稳。后来我改用增益调度(Gain Scheduling),在不同速度点分别线性化,问题才解决。

2.5 知识体系总览

下面这张图是我自己总结的,把这一章的核心逻辑串起来了:

运动学与动力学模型知识体系 固定翼飞行器 旋翼飞行器 六自由度运动学方程 位置方程 + 姿态方程(四元数/欧拉角) 六自由度运动学方程 位置方程 + 姿态方程(四元数/欧拉角) 动力学方程简化 小扰动假设 · 刚体假设 · 气动线性化 动力学方程简化 旋翼动态忽略 · 混控矩阵 · 力矩分解 状态空间表示:ẋ = f(x, u)

从这张图可以看得很清楚:无论是固定翼还是旋翼,底层逻辑是一样的——先建立运动学关系,再简化动力学模型,最后统一到状态空间框架下。区别只在于气动模型和控制输入的形式不同。

我个人觉得,理解这个框架比背公式重要得多。公式忘了可以查,但框架错了,整个控制器的设计方向就偏了。

一个小建议: 刚开始学的时候,别急着搞复杂的非线性模型。先用线性化模型把控制器的基本原理跑通,再逐步加入非线性补偿。我当年就是太心急,一上来就搞全状态非线性控制,结果调试了两个月都没调通。

好了,这一章的内容就到这里。模型是控制的基础,但模型再精确,也比不上实际飞行中的一次调试。记住:仿真里跑得通,不代表真机能飞。下一章我们会聊聊轨迹规划的基本方法,到时候见。


专注资料整理