1、定高之困:为什么无人机需要融合定高?单一传感器的局限性分析
做无人机飞控这些年,我遇到过最头疼的问题之一,就是定高。
你想想看,一架四旋翼在天上飞,如果高度都稳不住,那什么航线飞行、一键返航全都是空谈。很多刚入行的朋友问我:“直接用GPS不就能知道高度吗?为什么还要搞那么复杂?”
嗯,这个问题问到了点子上。今天我就跟你聊聊,为什么单一传感器搞不定定高这件事。
1.1 GPS定高:看着很美,用着很坑
GPS确实能给出高度信息,而且理论上精度还不错。但我在项目中踩过的坑,说出来都是泪。
GPS定高的三大硬伤:
- 垂直精度远低于水平精度:GPS的水平精度能做到2-3米,但垂直精度通常只有4-8米。说白了,你都不知道自己到底在哪个楼层。
- 更新频率低:大部分消费级GPS模块输出频率只有5-10Hz。无人机在强风下每秒能窜升好几米,等GPS告诉你高度变了,飞机早就飞跑了。
- 容易受遮挡和多径效应影响:在楼宇间、树荫下,GPS信号会反射、衰减。我曾经在测试时遇到过GPS高度突然跳变十几米的情况,吓得我赶紧切了手动模式。
为什么会这样?因为GPS卫星的几何分布决定了,它在水平方向的定位精度天然优于垂直方向。这不是算法能解决的问题,是物理限制。
3.2 气压计定高:灵敏但漂移
气压计是飞控板上最常见的定高传感器。它的原理很简单:海拔越高,气压越低。通过测量气压变化,就能推算高度变化。
气压计的优势很明显:
- 响应快,更新频率高(通常100Hz以上)
- 短时间内的相对高度测量很准
- 不受遮挡影响,室内也能用
但它的缺点同样致命:
气压计的天生缺陷:
- 温漂严重:温度变化1°C,气压计读数可能漂移几十厘米。我曾在夏天做测试,飞机从阴凉处飞到太阳底下,高度读数直接掉了2米。
- 受气流影响:无人机旋翼下洗气流会改变局部气压,导致读数失真。
- 绝对精度差:气压计只能测相对高度变化,不能告诉你绝对海拔。而且随着时间推移,它会慢慢漂移。
我记得有一次做长航时测试,飞机悬停了20分钟,气压计显示高度纹丝不动,但实际上飞机已经慢慢飘到了10米高的树梢上——幸亏我及时发现,不然就炸机了。
3.3 超声波/激光定高:近处王者,远处无奈
超声波和激光测距传感器,在低空(通常10米以内)表现非常出色。精度能到厘米级,响应也快。
但它们的局限性也很明显:
- 测量范围有限:超声波一般只能测到5-8米,激光能到几十米,但超过范围就抓瞎了。
- 受地面材质影响:草地、水面、沙地都会影响反射信号质量。
- 只能测相对地面的高度:如果地面有坡度或者障碍物,读数会变得很奇怪。
说白了,这些传感器只适合起降阶段和低空悬停,飞高了就完全没用。
3.4 为什么必须融合?一张图看懂
下面这张图,是我自己总结的传感器特性对比。你看完就明白了。
3.5 融合定高的核心思路
既然每个传感器都有短板,那思路就很清晰了:取长补短。
我个人习惯的做法是:
- 用GPS做长期参考:消除气压计的累积漂移
- 用气压计做短期响应:弥补GPS更新慢、精度差的问题
- 用超声波/激光做近地修正:在起降和低空时提供高精度基准
说白了,就是让三个传感器互相“监督”、互相“校正”。
避坑指南:
我曾经在融合算法里直接把三个传感器的数据做加权平均,结果发现效果还不如只用气压计。为什么?因为没考虑各传感器的噪声特性和置信度。后来改用卡尔曼滤波,才真正把融合效果做出来。
3.6 一个简单的融合思路示例
这里我给出一个最基础的融合框架,帮你理解核心逻辑:
// 伪代码:简单互补滤波定高融合
float altitude_estimate = 0; // 融合后的高度估计
float baro_altitude; // 气压计高度
float gps_altitude; // GPS高度
float sonar_altitude; // 超声波高度
// 融合系数(根据高度动态调整)
float alpha_baro = 0.7; // 气压计权重
float alpha_gps = 0.2; // GPS权重
float alpha_sonar = 0.1; // 超声波权重
// 如果高度低于5米,增大超声波权重
if (altitude_estimate < 5.0) {
alpha_sonar = 0.6;
alpha_baro = 0.3;
alpha_gps = 0.1;
}
// 融合计算
altitude_estimate = alpha_baro * baro_altitude +
alpha_gps * gps_altitude +
alpha_sonar * sonar_altitude;
当然,实际工程中不会用这么简单的加权平均。但核心思想是一样的:根据场景动态调整各传感器的信任度。
3.7 小结
单一传感器定高,就像让一个人蒙着眼睛走路——要么看不清远处,要么看不清脚下,要么走着走着就偏了。
融合定高不是炫技,是刚需。理解了各传感器的脾气秉性,你才能设计出靠谱的融合算法。
嗯,这一章就聊到这里。下一章我们深入讲讲卡尔曼滤波在定高融合中的具体实现——那才是真正出活儿的地方。