087、避障控制:基于传感器的避障策略
从一次炸机说起
去年夏天在郊外试飞一架四轴,飞控是自己调的PX4二次开发版本。当时写了一个简单的超声波避障逻辑——检测到前方1米内有障碍就后退。结果呢?飞机在树丛里像个没头苍蝇,先是后退撞上了后面的树枝,然后侧向逃窜时螺旋桨打到了灌木丛,最后歪歪扭扭掉进了水沟。
拆开日志一看,问题出在“传感器数据抖动”和“避障策略过于简单”这两个老生常谈的坑上。超声波模块在树丛里回波乱跳,距离值从0.8米瞬间跳到2.5米又跳回0.5米,避障逻辑被这些毛刺数据牵着鼻子走,根本来不及做出有效反应。
从那以后我明白了一个道理:避障控制不是“检测到障碍就躲”这么简单,它是一整套从传感器融合到运动规划的系统工程。
传感器选型:没有完美的传感器
先说说常见的避障传感器,每个都有脾气。
超声波便宜、功耗低,但波束角宽(通常30-60度),在室内对着白墙还行,到了室外有风、有树叶、有斜面的地方,回波信号乱七八糟。我踩过最大的坑是超声波对倾斜表面的检测——飞机斜着飞过一块玻璃幕墙,超声波直接穿透了,距离值显示无穷大,飞控以为前方一片坦途。
红外测距(比如Sharp GP2Y0A系列)响应快、波束窄,但受环境光影响极大。正午太阳直射时,测距值能漂移30%以上。有一次在沙漠测试,红外传感器直接罢工,输出全是最大值。
激光雷达(单线或TOF)精度高、抗干扰强,但贵、重、功耗大。小四轴带一个单线激光雷达,续航直接砍半。而