Skip to content

风估计与气压补偿 ​

多旋翼不用装空速计,EKF 也能估算它正处在什么风里——风速多少、从哪个方向来。

这个估计有两个用途:

  • 给飞手提供实时参考
  • 补偿风对气压计的干扰:控制器直接暴露在气流中时,气流会扰动气压读数,导致飞行器在高速前飞后减速时出现几米的爬升或掉高

下面按三步设置:机身阻力系数 → 桨叶阻力系数 → 气压计补偿。

一、计算机身阻力系数 ​

1. 称重 ​

含电池称重,单位:kg。

2. 测量迎风面积与侧向面积 ​

从几米外给飞行器拍两张照片:一张正面、一张侧面,分别用来量迎风面积和侧向面积。再用在线工具在照片上叠网格或描轮廓读出面积:

  • 图片加网格工具(免费):把网格边长按飞行器的已知尺寸(cm)缩放,数出覆盖机身部分的格子数(不含桨叶),即面积(cm²)
  • SketchAndCalc(免费试用 1 小时):沿机身轮廓画多边形,直接读出面积(cm²)

▲ 在照片上叠网格,数出覆盖机身的格子数

▲ 用 SketchAndCalc 沿轮廓画多边形,界面直接显示面积

量出的面积(cm²)除以 10000,就是 m²。

3. 填入参数 ​

参数名计算方法
EK3_DRAG_BCOEF_X重量(kg)÷ 迎风面积(m²)
EK3_DRAG_BCOEF_Y重量(kg)÷ 侧向面积(m²)

以图中 IRIS 为例:

项目数值
重量1.45 kg
迎风面积203 cm² = 0.0203 m²
侧向面积217 cm² = 0.0217 m²
EK3_DRAG_BCOEF_X1.45 ÷ 0.0203 = 71.4
EK3_DRAG_BCOEF_Y1.45 ÷ 0.0217 = 66.8

二、计算桨叶阻力系数 ​

桨叶阻力系数 EK3_DRAG_MCOEF 只能通过飞行测试得到,计算与判读方法见 ArduPilot 官方视频。

  1. 选开阔、风力小的场地
  2. 可选:设 LOG_DISARMED = 1、LOG_REPLAY = 1,便于飞行后用 Replay 复盘调参
  3. 用 Loiter(悬停) 模式解锁起飞(保证 EKF 位置估计良好),飞到测试区中央
  4. 切到 AltHold(定高) 模式,让飞行器顺风漂移,看清风向与风速
  5. 机头迎风,满推俯仰杆逆风加速,直到加速结束
  6. 松开俯仰杆,飞行器减速后顺风漂回起始线
  7. 把飞行器调整回舒适位置
  8. 偏航 90°(例如顺时针)让机身侧面对着风,满推左横滚加速,加速结束后松杆,让它顺风漂回起始线
  9. 再调整回舒适位置
  10. 重复第 8 步,改为机尾迎风(用拉杆加速)
  11. 重复第 8 步,改为右侧迎风(满推右横滚加速)
  12. 降落后下载机载日志分析,方法见下载闪存日志

TIP

EK3_DRAG_MCOEF 的最终值一般在 0.1 ~ 1.0 之间。

三、在地面站实时查看风速与风向 ​

启用后,估计出的风速会通过 MAVLink 的 WIND 消息实时发送到地面站。

以 Mission Planner 为例:飞行数据页 → Quick 标签 → 双击任意数值 → 选 wind_dir(风向)或 wind_vel(风速)。

▲ 在 Mission Planner 的 Quick 标签中调出风向与风速

四、在日志中查看风速 ​

EKF 的风速估计记录在机载日志的 XKF2 消息里,看 VWN(北向风速)与 VWE(东向风速)两个字段。

▲ 日志浏览器中展开 XKF2,勾选 VWN / VWE

五、气压计位置误差补偿 ​

有了风估计,就能补偿风对每个气压计、四个方向(前、后、左、右)造成的压力误差,计算方法见 ArduPilot 官方视频。

1. 试飞 ​

依次让机头、机尾、右侧、左侧迎风各飞一轮,降落后下载机载日志。

2. 计算各方向的位置误差系数 ​

  • 用空气密度计算器算出空气密度(kg/m³)
  • 静压误差(Pa)= -高度 × 重力加速度 × 空气密度
  • 动压 = 0.5 × 空气密度 × 风速²
  • 位置误差系数 = 静压误差 ÷ 动压

NOTE

位置误差系数的取值应在 -1 ~ +1 之间。

3. 启用补偿并填入系数 ​

把 BARO1_WCF_ENABLE 设为 1,然后重启控制器。

第 1 个气压计对应的参数:

参数名方向
BARO1_WCF_FWD正 X 方向(前)
BARO1_WCF_BCK负 X 方向(后)
BARO1_WCF_RGT正 Y 方向(右)
BARO1_WCF_LFT负 Y 方向(左)
BARO1_WCF_UP正 Z 方向(上升)
BARO1_WCF_DN负 Z 方向(下降)

NOTE

控制器有多个气压计时,参数前缀依次换成 BARO2_WCF_*、BARO3_WCF_*,需要分别计算、分别填写。

文档反馈:hongle@cuav.net