3、横侧向状态空间模型:小扰动线性化方法、状态矩阵A与输入矩阵B的建立
好,咱们进入正题。横侧向稳定性调优,说白了就是让飞机在滚转和偏航方向上能乖乖听话。但飞机本身是个非线性系统,直接分析太复杂了。怎么办?
我个人的习惯是——先把它线性化。用一个小扰动模型,把复杂的非线性方程简化成我们熟悉的状态空间形式。这样,矩阵A和矩阵B就出来了,后续的控制器设计才有落脚点。
3.1 为什么需要小扰动线性化?
你想想看,真实的飞行动力学方程里全是三角函数、速度平方项、耦合项……看着就头大。直接拿来做控制设计?不现实。
小扰动线性化的核心思想很简单:假设飞机在某个平衡点(比如平飞)附近,所有状态量的变化都很小。这样一来,高阶项可以忽略,三角函数可以近似成线性项。
核心假设:
- 侧滑角 β 很小(sinβ ≈ β, cosβ ≈ 1)
- 滚转角速度 p、偏航角速度 r 很小
- 空速 V 变化忽略(假设速度恒定)
嗯,这里要注意:这个假设在大多数常规飞行条件下是成立的。但如果你在做大迎角机动或者特技飞行,那这套方法就不太灵了。我在项目中遇到过,有人直接把小扰动模型用在大侧滑角工况下,结果控制器发散得一塌糊涂……
3.2 横侧向状态变量的选择
横侧向运动,我们关心四个核心状态量:
| 符号 | 物理量 | 单位 | 说明 |
|---|---|---|---|
| β | 侧滑角 | rad | 飞机纵轴与来流方向的夹角 |
| p | 滚转角速度 | rad/s | 绕机体X轴的角速度 |
| r | 偏航角速度 | rad/s | 绕机体Z轴的角速度 |
| φ | 滚转角 | rad | 机翼与水平面的夹角 |
为什么选这四个?因为它们直接决定了飞机的横侧向动态。你想想看,副翼打下去,首先改变的是滚转力矩,然后p变化,接着φ变化,同时还会耦合出侧滑β和偏航r。这四个量刚好能完整描述这个链条。
3.3 状态矩阵A的建立
状态矩阵A,描述的是系统自身的动态特性。说白了,就是没有外部输入时,飞机自己怎么动。
从飞行动力学方程出发,经过小扰动线性化后,横侧向状态空间模型的标准形式是:
| β̇ | | Yβ/V g*cosθ₀/V -1 α₀ | | β |
| ṗ | = | Lβ Lp Lr 0 | * | p |
| ṙ | | Nβ Np Nr 0 | | r |
| φ̇ | | 0 1 tanθ₀ 0 | | φ |
这里每个元素都有明确的物理意义。我挑几个重点说说:
- Yβ:侧力导数。β变化时产生的侧力,决定了飞机的航向静稳定性。正值表示不稳定。
- Lβ:滚转静稳定性导数。也叫“上反效应”,是飞机滚转恢复能力的关键。我调参时最常看的就是它。
- Nβ:航向静稳定性导数。也叫“风标效应”,决定了飞机是否会自动指向来流方向。
- Lp:滚转阻尼导数。p越大,阻尼力矩越大,防止滚转发散。
- Nr:偏航阻尼导数。同样,防止荷兰滚模态发散。
个人经验: 我曾经调试一架飞翼布局的无人机,发现Lβ太小,导致滚转响应迟钝。后来通过增加翼尖上反角,硬是把Lβ提上去了。所以你看,矩阵A里的参数,其实直接对应着飞机的气动设计。
3.4 输入矩阵B的建立
输入矩阵B,描述的是控制输入如何影响状态变化。横侧向的控制输入通常有两个:
- δa:副翼偏转角(正偏左副翼上偏,产生右滚转力矩)
- δr:方向舵偏转角(正偏左舵,产生右偏航力矩)
对应的输入矩阵B为:
| β̇ | | 0 Yδr/V | | δa |
| ṗ | = | Lδa Lδr | * | δr |
| ṙ | | Nδa Nr |
| φ̇ | | 0 0 |
这里:
- Lδa:副翼效率。副翼偏转产生的滚转力矩系数。这个值越大,滚转响应越快。
- Nδr:方向舵效率。方向舵偏转产生的偏航力矩系数。
- Yδr:方向舵产生的侧力,通常较小,但不可忽略。
避坑指南: 我曾经在建模时忽略了Lδr(副翼对偏航的交叉耦合),结果仿真里看着挺好,一飞上天发现转弯时飞机总带侧滑。后来补上这个耦合项,模型才准了。所以,交叉导数千万别省!
3.5 完整的状态空间模型
把A和B拼起来,我们就得到了完整的横侧向状态空间模型:
ẋ = A·x + B·u
其中:
x = [β, p, r, φ]ᵀ
u = [δa, δr]ᵀ
A = [ Yβ/V g*cosθ₀/V -1 α₀
Lβ Lp Lr 0
Nβ Np Nr 0
0 1 tanθ₀ 0 ]
B = [ 0 Yδr/V
Lδa Lδr
Nδa Nδr
0 0 ]
有了这个模型,我们就可以用线性系统理论来分析稳定性、设计控制器了。比如计算特征值判断模态,或者用LQR设计最优控制律。
3.6 知识体系结构图
下面这张图,是我自己总结的横侧向建模核心逻辑,你一看就明白:
3.7 实际调参中的注意事项
模型建好了,但实际用的时候有几个坑,我帮你列出来:
- 气动导数要准:矩阵A和B里的所有参数,都来自气动数据。如果风洞数据或者CFD数据不准,模型就是空中楼阁。我建议至少用飞行数据做一次参数辨识来验证。
- 注意单位一致性:角度用弧度,角速度用rad/s,速度用m/s。混用单位会导致矩阵元素量级差好几个数量级,数值计算容易出问题。
- 不要忽略重力项:A矩阵里的g*cosθ₀/V这一项,很多人觉得小就忽略了。但它在低速飞行时影响很大,尤其是着陆阶段。
- 交叉耦合是常态:副翼打下去不光产生滚转,还会因为左右翼阻力差产生偏航力矩。方向舵也一样。这些交叉项在B矩阵里一定要体现。
一个小技巧: 拿到气动数据后,我习惯先把A矩阵的特征值算出来。看看有没有右半平面的极点,如果有,说明开环就不稳定。这时候再去看是哪个导数导致的,针对性调整气动布局或者加增稳系统。
好了,横侧向状态空间模型的建立就讲到这里。有了这个基础,下一节我们就可以用它来分析荷兰滚、滚转收敛和螺旋这三个经典模态了。