4、风速估计方法:三角法风速估计、卡尔曼滤波风速估计、惯性导航辅助
风速估计,说白了就是搞清楚「空气相对于地面的运动」。你想想看,飞机在空中飞,地速是GPS测出来的,空速是皮托管测出来的,那风速不就是它俩的矢量差吗?道理很简单,但实际做起来坑不少。
我个人习惯把风速估计方法分成三类:三角法、卡尔曼滤波、惯性导航辅助。每种方法都有自己的脾气,咱们一个一个聊。
4.1 三角法风速估计
三角法是最直观的方法。它的核心思想就一句话:风速 = 地速 - 空速。注意,这是矢量运算,不是标量减法。
具体做法是这样的:
- 从GPS拿到地速矢量 Vg(大小+方向)
- 从空速管拿到空速大小 Va,从姿态航向系统拿到航向角 ψ,合成空速矢量 Va_vec
- 风速矢量 Vw = Vg - Va_vec
听起来简单吧?但我曾经在项目里吃过亏。有一次试飞,三角法算出来的风速忽大忽小,甚至出现逆风变顺风的荒唐结果。排查了半天,发现是GPS更新频率只有5Hz,而空速更新频率是50Hz,两个数据不同步导致的。
三角法的优点是简单、计算量小,适合在低端飞控上跑。缺点也很明显:GPS信号差的时候(比如城市峡谷、树荫下),地速不准,风速估计直接崩掉。
4.2 卡尔曼滤波风速估计
卡尔曼滤波是解决「传感器都有噪声」这个问题的标准方案。它把风速当成一个状态量,用动力学模型预测,再用测量值修正。
我常用的状态向量是:
X = [Vn, Ve, Vd, Wn, We, Wd]^T
其中 Vn, Ve, Vd 是北东地坐标系下的空速分量,Wn, We, Wd 是风速分量。测量量是GPS地速和空速大小。
状态方程长这样:
V(k+1) = V(k) + (T/m) * (F_thrust + F_aero) + w1
W(k+1) = W(k) + w2
这里 w1 和 w2 是过程噪声。注意,我把风速建模为随机游走——说白了就是假设风速变化很慢,用白噪声驱动。
测量方程:
Vg_gps = V + W + v1
Va_pitot = ||V|| + v2
v1 和 v2 是测量噪声。嗯,这里要注意:空速测量是标量,地速测量是矢量,所以测量方程是非线性的,得用扩展卡尔曼滤波(EKF)。
卡尔曼滤波的好处是能融合多传感器信息,抗干扰能力强。坏处是计算量大,而且对模型误差敏感。模型建得不好,滤波会发散。
4.3 惯性导航辅助
惯性导航辅助,说白了就是用IMU的数据来「填补」GPS失效时的空白。这个方法我在做城市低空物流无人机时用过,效果还不错。
核心思路是这样的:
- 正常工作时,用卡尔曼滤波估计风速
- GPS失效时,用IMU积分推算地速变化
- 用推算的地速和空速,继续估计风速
具体实现上,我用了松耦合的INS/GPS组合导航架构。IMU提供加速度和角速度,积分得到位置和速度,GPS定期修正积分漂移。
风速估计的公式变成:
Vw_est = V_ins - Va_vec
其中 V_ins 是惯导推算的地速矢量。注意,惯导的漂移会直接影响风速估计精度,所以需要定期用GPS校准。
三种方法的对比,我整理了一张表:
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 三角法 | 简单、计算量小 | 对数据同步敏感、依赖GPS | 低成本飞控、GPS信号好 |
| 卡尔曼滤波 | 融合多传感器、抗干扰 | 调参复杂、计算量大 | 中高端飞控、需要高精度 |
| 惯导辅助 | GPS失效时仍可用 | 惯导漂移、需要定期校准 | 城市峡谷、树荫等GPS差的环境 |
下面这张图展示了三种方法的核心逻辑关系:
最后说一句:实际项目中,我一般把三种方法都实现,然后根据GPS信号质量自动切换。GPS信号好时用三角法或卡尔曼滤波,信号差时切到惯导辅助。这样既保证了精度,又兼顾了鲁棒性。
公众号:蓝海资料掘金营,微信deep3321