第三章:飞行动力学基础
3.1 刚体运动方程——飞行器的“身体语言”
做飞控这些年,我最大的体会是:不懂动力学,写出来的控制律就像在蒙眼开车。刚体运动方程,说白了就是描述飞行器怎么动、怎么转的一套数学工具。
飞行器在空中,有六个自由度:三个平动(前后、左右、上下),三个转动(俯仰、滚转、偏航)。这六个自由度,就是我们控制的基础。
核心公式:牛顿第二定律 + 欧拉方程
平动:F = m · a(力等于质量乘加速度)
转动:M = I · α + ω × (I · ω)(力矩等于惯量乘角加速度,加上陀螺效应项)
你想想看,飞行器在空中飞,受到重力、推力、气动力。这些力加起来,决定了它怎么加速。力矩加起来,决定了它怎么旋转。就这么简单。
我在项目中遇到过一个问题:有个四旋翼,悬停时总是慢慢往一个方向漂。查了半天,发现是重心没校准。重心偏了,力矩就不平衡,飞行器就会倾斜。嗯,这里要注意:重心校准是飞控调试的第一步。
3.2 牛顿-欧拉方程——从理论到实践的桥梁
牛顿-欧拉方程,其实就是把牛顿定律和欧拉方程合在一起用。我个人习惯把这两个方程写成矩阵形式,方便在代码里实现。
// 伪代码:牛顿-欧拉方程求解
// 输入:力 F[3],力矩 M[3],质量 m,惯量矩阵 I[3x3]
// 输出:加速度 a[3],角加速度 alpha[3]
// 平动部分
a = F / m; // 简单吧?但别忘了重力补偿
// 转动部分
omega = getAngularVelocity(); // 当前角速度
alpha = I_inv * (M - cross(omega, I * omega)); // 欧拉方程
这段代码看起来简单,但实际用起来坑不少。我曾经在仿真里跑得好好的,一上真机就炸。为什么?因为惯量矩阵 I 没测准。飞行器的惯量,尤其是多旋翼的,很难精确测量。我建议用 CAD 模型估算,然后通过飞行数据反推修正。
避坑指南:我曾经在惯量估算上吃过亏。当时用了一个粗略的惯量值,结果飞行器在高速转弯时失控。后来用系统辨识的方法,从飞行日志里反推出惯量,才解决问题。记住:惯量不准,控制律再漂亮也没用。
3.3 空气动力学简化模型——够用就好
空气动力学,说白了就是研究空气怎么推飞行器。完整的空气动力学模型非常复杂,有几十个参数。但在飞控里,我们不需要那么精确。够用就好。
对于固定翼飞行器,我常用的简化模型是这样的:
| 气动力/力矩 | 简化公式 | 说明 |
|---|---|---|
| 升力 L | L = 0.5 · ρ · V² · S · CL | CL 是升力系数,跟攻角有关 |
| 阻力 D | D = 0.5 · ρ · V² · S · CD | CD 是阻力系数,跟攻角和速度有关 |
| 俯仰力矩 M | M = 0.5 · ρ · V² · S · c · Cm | Cm 是俯仰力矩系数,跟攻角和舵面偏转有关 |
对于多旋翼,更简单:升力正比于螺旋桨转速的平方,阻力忽略不计。你想想看,多旋翼的每个螺旋桨产生一个力和一个力矩,四个螺旋桨合起来,就能控制六个自由度。这就是为什么多旋翼这么好控制。
注意:简化模型只在特定范围内有效。比如攻角太大,升力系数会突然下降(失速)。我在做固定翼飞控时,就遇到过失速的情况。当时飞机突然掉高度,差点炸机。后来加了攻角限制,才安全。
3.4 坐标系与变换——别搞混了
做飞控,坐标系是基础中的基础。搞混了坐标系,控制律就全错了。我见过太多新手在这上面栽跟头。
常用的坐标系有三个:
- 地坐标系(NED):北东地,固定在地面上
- 机体坐标系(Body):前右下,固定在飞行器上
- 速度坐标系(Wind):顺着气流方向
它们之间的变换,用欧拉角或者四元数。我个人习惯用四元数,因为避免了万向锁问题。代码实现如下:
// 四元数旋转向量
// q: 四元数,v: 待旋转向量
// 返回旋转后的向量
Vector3f rotateByQuaternion(Quaternionf q, Vector3f v) {
Quaternionf p(0, v.x, v.y, v.z); // 纯四元数
Quaternionf result = q * p * q.conjugate();
return Vector3f(result.x, result.y, result.z);
}
这段代码看起来简单,但效率很高。我在PX4飞控里就用这个函数做坐标系变换。嗯,这里要注意:四元数的乘法顺序不能搞反,否则结果完全不对。
3.5 从方程到代码——实战经验
理论讲完了,咱们看看怎么落地。我建议按以下步骤来:
- 建立模型:先写一个简单的刚体运动模型,不考虑空气动力学
- 加入气动力:用简化模型,先调通基本功能
- 参数辨识:通过飞行数据反推模型参数
- 迭代优化:不断修正模型,提高精度
我在做第一个飞控项目时,就是按这个步骤来的。一开始模型很简单,但能飞。后来慢慢加细节,模型越来越准。记住:不要一开始就想做完美的模型,先飞起来再说。
核心要点总结:
- 刚体运动方程是飞控的基础,必须理解透彻
- 牛顿-欧拉方程是理论到实践的桥梁,注意惯量估算
- 空气动力学模型够用就好,不要过度复杂
- 坐标系变换用四元数,避免万向锁
- 从简单模型开始,逐步迭代优化
好了,这一章的内容就到这里。下一章我们会讲控制律设计,到时候会用到这些动力学知识。你想想看,没有动力学基础,控制律就是空中楼阁。所以这一章的内容,一定要吃透。
公众号:蓝海资料掘金营,微信deep3321