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 是总推力,τ 是控制力矩,φ、θ 分别是滚转角和俯仰角。
这里有个重要的简化假设:旋翼的响应时间远小于飞行器的时间常数。说白了就是电机响应够快,我们可以忽略旋翼的动态过程,直接认为控制输入等于力和力矩。
2.4 控制输入与状态空间表示
控制输入是什么?说白了就是你能直接操控的东西。
对于固定翼:
- 油门(控制推力)
- 升降舵(控制俯仰)
- 副翼(控制滚转)
- 方向舵(控制偏航)
对于四旋翼:
- 四个电机的转速(或 PWM 占空比)
- 通过混控矩阵映射到总推力 T 和三个轴力矩 τ
状态空间表示,就是把运动学和动力学方程写成标准形式:
ẋ = f(x, u)
y = g(x, u)
其中 x 是状态向量,u 是控制输入向量。以四旋翼为例:
| 符号 | 含义 | 维度 |
|---|---|---|
| x = [p, v, q, ω] | 位置、速度、姿态四元数、角速度 | 13维 |
| u = [T, τ_x, τ_y, τ_z] | 总推力、滚转力矩、俯仰力矩、偏航力矩 | 4维 |
嗯,这里要注意:状态空间表示不是唯一的。我习惯把姿态用四元数表示,因为做轨迹规划时插值方便。但如果你做的是小角度控制,用欧拉角也可以,只是要注意奇异性。
2.5 知识体系总览
下面这张图是我自己总结的,把这一章的核心逻辑串起来了:
从这张图可以看得很清楚:无论是固定翼还是旋翼,底层逻辑是一样的——先建立运动学关系,再简化动力学模型,最后统一到状态空间框架下。区别只在于气动模型和控制输入的形式不同。
我个人觉得,理解这个框架比背公式重要得多。公式忘了可以查,但框架错了,整个控制器的设计方向就偏了。
好了,这一章的内容就到这里。模型是控制的基础,但模型再精确,也比不上实际飞行中的一次调试。记住:仿真里跑得通,不代表真机能飞。下一章我们会聊聊轨迹规划的基本方法,到时候见。