4. 风场模型与影响:风速/风向定义、风对地速与空速的影响、侧滑角与偏流角
各位同学,咱们今天聊聊风。做固定翼飞控,说白了就是在跟风打交道。你想想看,飞机在天上飞,风就是那个看不见摸不着、却时时刻刻在使绊子的对手。我刚开始做飞控那会儿,总觉得算法算得挺准,一上天就偏航,后来才明白——没把风场模型搞清楚,一切都是白搭。
4.1 风速与风向:基础定义
先统一一下概念。风,我们用两个参数描述:风速和风向。
- 风速:空气相对于地面的运动速度,单位 m/s 或 knot。我个人习惯用 m/s,因为跟空速单位统一,算起来方便。
- 风向:风来的方向。注意,气象学里风向是指风吹来的方向,比如北风就是从北边吹来的风。但在飞控里,我们更关心风吹向的方向,也就是风矢量。这个细节我踩过坑,后面会讲。
在 ArduPilot 中,风向量通常用 ENU(东-北-天)坐标系表示。举个例子:
// 风向量定义(ENU坐标系)
Vector3f wind_enu;
wind_enu.x = 5.0f; // 东风分量,单位 m/s
wind_enu.y = -3.0f; // 北风分量(负值表示风从北来)
wind_enu.z = 0.0f; // 垂直风,通常忽略
嗯,这里要注意:垂直风对固定翼影响很大,但建模复杂,咱们先不考虑。实际项目中,我一般只处理水平风。
4.2 风对地速与空速的影响
这是核心中的核心。很多新手搞混地速和空速,其实一句话就能说清:
空速 = 飞机相对于空气的速度
地速 = 飞机相对于地面的速度
地速 = 空速 + 风速(矢量加法)
说白了,你站在地面看飞机飞得多快,那是地速;你坐在飞机里感受风吹过机翼的速度,那是空速。两者差多少?全看风。
我举个例子。假设飞机空速 20 m/s,正北飞。此时刮东风,风速 5 m/s。那么:
- 地速的北向分量 = 20 m/s(空速北向) + 0 m/s(风北向分量) = 20 m/s
- 地速的东向分量 = 0 m/s(空速东向) + 5 m/s(风东向分量) = 5 m/s
- 合成地速 = sqrt(20² + 5²) ≈ 20.62 m/s
- 地速方向 = atan2(5, 20) ≈ 14° 偏东
你看,飞机明明朝北飞,地面看却是朝东北方向移动。这就是风的影响。
我的经验:在 ArduPilot 里,空速传感器(皮托管)测的是空速,GPS 测的是地速。两者一比较,就能估算出风速。我曾经用这个方法在无风传感器的情况下做风场估计,精度还不错。
4.3 侧滑角与偏流角
这两个角是理解航向控制的关键。很多文档写得绕,我直接说人话。
| 术语 | 定义 | 通俗理解 |
|---|---|---|
| 侧滑角 (β) | 飞机纵轴与空速矢量的夹角 | 飞机鼻子指向 vs 实际气流方向 |
| 偏流角 (Drift Angle) | 飞机航向与地速矢量的夹角 | 飞机鼻子指向 vs 实际地面运动方向 |
侧滑角,说白了就是飞机有没有「斜着飞」。正常情况下,飞机应该正对着气流飞,侧滑角为 0。如果有侧风,飞行员或飞控会压坡度、蹬舵来消除侧滑。我见过不少飞控新手,侧滑角控制不好,飞机在天上像螃蟹一样横着走,阻力大、效率低。
偏流角,则是风造成的「漂移」。你想想看,飞机航向朝北,但风从西边吹来,飞机实际往东北方向飘。这个飘的角度就是偏流角。在 ArduPilot 里,偏流角是导航控制的重要输入。
避坑指南:我曾经犯过一个错误——把侧滑角和偏流角混为一谈。实际上,侧滑角是空气动力学概念,偏流角是导航概念。侧滑角影响升力和阻力,偏流角影响航线跟踪精度。两者不能互相替代。
4.4 知识体系结构图
下面这张图,是我自己总结的风场模型核心逻辑。你看一遍,基本就清楚了。
4.5 实际项目中的风场处理
讲完理论,说说实战。在 ArduPilot 里,风场处理主要分三步:
- 风场估计:通过空速和地速的差值,反算出风速和风向。代码在
AP_WindVane库中。 - 偏流补偿:导航控制时,根据偏流角修正目标航向。说白了就是「你想往北飞,但风把你往东吹,那你就往西偏一点飞」。
- 侧滑抑制:通过方向舵和副翼协调控制,保持侧滑角接近 0。这个在转弯时尤其重要。
我记得有一次做长航时任务,飞机在 200 米高度巡航,突然遇到侧风。如果不做偏流补偿,飞机会偏离航线几百米。ArduPilot 的 L1 导航控制器 会自动计算偏流角并修正航向,效果很好。但前提是——风场估计要准。
关键公式(ArduPilot 中实际使用):
// 偏流角计算
drift_angle = atan2(ground_speed.y, ground_speed.x) - heading;
// 其中 ground_speed 来自 GPS,heading 来自磁罗盘
嗯,这里要注意:磁罗盘受干扰时,heading 不准,偏流角计算也会出错。所以我一般会加一个 GPS 航向作为备份。
4.6 小结
风场模型,说白了就是三个东西:风怎么定义、风怎么影响速度、风怎么影响角度。搞懂了这些,你再看 ArduPilot 的导航控制代码,就会觉得豁然开朗。
我个人觉得,风场补偿是固定翼飞控里最体现「经验」的地方。算法书上写的都是理想情况,实际飞起来,风速风向随时在变,地形也会造成乱流。没有捷径,就是多飞、多调、多总结。
一个小技巧:调试时,把风速估计值打印到地面站日志里。如果风速突然跳变,多半是空速管堵了或者 GPS 信号差。我曾经靠这个发现过一次皮托管结冰的问题,避免了一次炸机。
公众号:蓝海资料掘金营,微信deep3321