在野外做巡检、果园航测或者近地 VIO 穿林自主飞行时,很多人习惯把巡航高度压在 5 到 15 米。直觉上大家觉得飞得低摔得轻,真出问题提控回家也方便。
但飞控黑匣子日志看多了就会发现,低空(尤其是 10 米以下近地层)往往是事故率最高的区间。周围环境的湍流、多路径反射、传感器盲区以及突发障碍物,都远比百米高空复杂。今天整理几个实飞中极易踩坑的低空误区,附上日志排查与飞控配置思路。
误区一:拿到 RTK Fix 就以为高程万无一失
很多刚接触航测或自动巡检的朋友,看到地面站显示 RTK 已经进入固定解(Fixed),就放心大胆地跑 3 米高度的仿地航线。结果飞机贴坡飞行时直接啃了地皮。
问题本质:
- 多路径效应(Multipath): 低空靠近建筑物、金属光伏板或潮湿茂密的树冠时,卫星信号反射极其严重。虽然接收机算出了 Fix,但伪距观测值含有未被消除的反射偏差,高程突变 1 到 2 米非常普遍。
- 大地高(Ellipsoidal Height)与正常高(Orthometric Height)混淆: RTK 输出的是基于 WGS84 椭球体的高程,航测规划如果直接用绝对高而未引入准确的 Geoid 模型(如 EGM96/EGM2008),或者起飞点未做高程校准,飞机在绝对高度上的偏差可能达到几十米。
应对建议:
低空贴地必须依赖测距传感器(LiDAR / 毫米波雷达)作为垂直测距源。以 ArduPilot 为例,切勿只靠 EK3_SRC1_POSZ = 3(GPS),应在低空引入测距仪辅助:
# 启用下向测距仪融合
EK3_SRC1_POSZ = 1 # 默认气压计或依据高度切回
EK3_RNG_USE_HGT = 70 # 距离地面低于 70% 传感器最大量程时启用 Rangefinder 控高
TERRAIN_ENABLE = 1 # 启用地形跟随逻辑
误区二:盲目信任激光/毫米波定高,忽视下表面特征
既然 RTK 高程不可靠,那装个 50 米量程的激光测距仪是不是就高枕无忧了。
前年我们调一台六旋翼做水渠边缘巡检,悬停高度设定为 2.5 米。机体在横移越过静止水面时,激光穿透水体打到了水底鹅卵石,飞控误以为机体高度骤增,内环迅速响应下压油门,直接把机臂插进了水里。
典型失效场景:
- 镜面/水体: 905nm / 940nm 激光直接发生镜面反射或被吸收,返回值为 0 或最大量程。
- 高反光地面与吸光材质: 新铺设的沥青路面、黑色吸光防草布会导致信号强度(RSSI)极低。
- 机身大倾角机动: 测距仪固定在机架下方,当无人机快速制动或侧移时,机身倾角可达 20° 以上,激光打在斜前方,测出的斜距没有做姿态投影补偿,导致飞控高估机体离地高度。
在板载伴随电脑(Companion Computer)通过 MAVLink 向飞控转发测距数据时,一定要做信号强度与倾角校验,伪代码示例如下:
import math
import time
from pymavlink import mavutil
def process_distance_sensor(raw_distance_m, signal_quality, roll_deg, pitch_deg, max_tilt=20.0):
"""
过滤低空激光测距异常值,补偿倾角后再注入飞控
"""
# 1. 过滤信号质量过低的数据 (视传感器具体协议而定)
if signal_quality < 30:
return None
# 2. 检查机身姿态倾角,倾角过大时激光数据发散,应标记为不可信
total_tilt = math.sqrt(roll_deg**2 + pitch_deg**2)
if total_tilt > max_tilt:
return None
# 3. 几何投影补偿,还原真实垂直对地高度
tilt_rad = math.radians(total_tilt)
corrected_height = raw_distance_m * math.cos(tilt_rad)
return corrected_height
# 示例:通过 MAVLink 发送 DISTANCE_SENSOR 消息
def send_distance_to_fcu(mav_conn, height_m):
mav_conn.mav.distance_sensor_send(
time_boot_ms=int(time.time() * 1000),
min_distance=10, # 厘米
max_distance=4000, # 厘米
current_distance=int(height_m * 100),
type=mavutil.mavlink.MAV_DISTANCE_SENSOR_LASER,
id=0,
orientation=mavutil.mavlink.MAV_SENSOR_ROTATION_PITCH_270, # 向下
covariance=0
)
误区三:低空避障全交给视觉与双目
做低空穿障,不少人觉得前置一组双目相机加 RealSense 就能放手不管。
实际上,低空环境对双目和单目 VIO 是最残酷的考验:
- 细小线缆: 输电线、拉线塔的细钢丝直径往往小于 10mm,在双目深度图上基本表现为噪点或直接被视差算法平滑掉。
- 动态范围骤变: 穿越树冠下方时,从强光直射区瞬间进入暗部阴影,相机的自动曝光(AE)需要数帧才能完成收敛。在这 100-200 毫秒的“失明期”内,VIO 极易发生位姿漂移,导致飞控产生速度突变。
- 退化环境: 稻田、草地在旋翼下洗气流吹动下剧烈晃动,视觉特征点大量处于非刚体运动状态,直接击穿光流或特征匹配假设。
实飞建议: 树林或低空复杂场景作业,避障首选固态激光雷达或毫米波雷达。纯视觉方案必须严格限制航速(例如压在 1.5 m/s 以内),并在 PX4 中合理调大位置估计的协方差阈值,避免单帧位姿跳变导致过载保护触发切回 Manual 模式。
误区四:忽略地面效应(Ground Effect)对气压计与控制环的扰动
离地高度低于旋翼直径($h < 1.0 D$)时,多旋翼就进入了强地面效应区。很多人遇到过飞机降落到最后 30 厘米时像气垫船一样贴着地面“漂浮”,甚至弹跳震荡,这多半是气压计和下洗气流共同作祟。
机理与现象:
- 动态气压畸变: 旋翼下洗气流打到地面后向四周扩散,机壳下方形成局部高压区,气压计读数感知到气压上升,飞控误以为机体正在“掉高”,于是积分项(I 环)开始增加推力抵消下坠,导致飞机在近地被反弹推起。
- PID 低空振荡: 地面效应提供了额外的升力斜率,机臂受到的反作用气流紊乱,在开阔空中调好的速率环 D 增益,在贴地悬停时很容易诱发高频抖动。
解决策略:
- 机械结构上,飞控外壳必须用多孔透气泡棉封死测压孔,避免直吹气流冲击。
- 飞控参数层面,开启着陆地面效应补偿。在 PX4 中调优
MPC_LAND_ALT2(判定进入地面效应的高度)与EKF2_GND_EFF_DZ,在接地阶段适当降低气压计在 EKF 融合中的权重,转由加速度计与下视测距仪接管。
总结
低空飞行不是高空任务的“等比例缩小”。在这里,大气边界层的不稳定风切变、局部微气象、反射面多路径干扰以及传感器的物理局限都会被成倍放大。
保持防御性飞行习惯:
- 不把单一种类的传感器作为低空控高的唯一真理。
- 涉及贴地 10 米以下的自主航线,务必提前完成空域测距与激光雷达打点。
- 黑匣子日志重点查看 EKF 震荡标志位(
innovations)与垂直速度残差,确认机体在低空气流中的震荡收敛情况,再逐步下压作业高度。
License: CC BY-NC 4.0
Updated 13 hours ago
Was this article helpful? Give it a like.
0 comments


