3、视觉定位基础:视觉定位的基本原理(特征点、光流、视觉里程计),以及在下视摄像头中的应用
视觉定位是PX4精准降落系统中感知层的核心环节。它的任务不是“看清”地面,而是回答一个更基本的问题:无人机相对于地面标志物,当前处于什么位置和姿态? 在GPS信号良好时,这个问题可以由卫星导航回答;但在树荫、楼宇峡谷、桥下或室内环境中,GPS精度急剧下降甚至完全失效,此时视觉定位便成为唯一可靠的相对位姿信息来源。本章将系统讲解视觉定位的三大基础技术——特征点法、光流法和视觉里程计,并重点分析它们在下视摄像头场景中的工程应用与约束条件。
上图展示了PX4下视视觉定位的完整技术链路。摄像头采集图像后,三大算法模块并行或级联工作:特征点法提供稀疏但精确的匹配关系,光流法提供稠密的像素运动场,视觉里程计则基于前两者估计无人机的6自由度位姿变化。最终所有估计结果与IMU、气压计等传感器在扩展卡尔曼滤波(EKF)中融合,输出稳定、高频的位姿估计,供精准降落控制回路使用。下面我们逐一深入每个模块的原理与工程实现。
3.1 特征点法:从像素到几何约束
3.1.1 核心原理
特征点法的基本思想是:在图像中寻找具有显著纹理特征的像素点(角点、斑点等),然后通过描述子(Descriptor)在不同帧之间进行匹配,从而建立像素对应关系。以ORB特征为例,它结合了FAST角点检测和BRIEF描述子,具有旋转不变性和尺度不变性(通过图像金字塔实现)。在PX4下视场景中,常用的特征点包括:
- FAST角点:计算极快,适合实时系统,但缺乏尺度不变性。
- ORB特征:FAST + rBRIEF描述子,兼顾速度与鲁棒性,是PX4视觉里程计中的默认选择。
- AKAZE:非线性尺度空间特征,对光照变化更鲁棒,但计算量较大。
特征点匹配后,通过对极几何约束(Essential矩阵或Fundamental矩阵)可以恢复两帧之间的相对旋转和平移。当已知地面标志物的实际尺寸时,还可以通过PnP(Perspective-n-Point)算法直接求解相机在世界坐标系中的位姿。
3.1.2 下视场景中的工程挑战
下视摄像头与水平前视摄像头有本质区别:地面纹理往往呈现重复性、周期性(如草地、瓷砖、柏油路),这会导致特征匹配出现大量误匹配。此外,无人机降落过程中高度不断降低,图像尺度变化剧烈,特征点的尺度金字塔层数需要动态调整。下表总结了特征点法在下视场景中的关键参数与推荐值:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 特征点数量 | 150-300 | 过多增加计算量,过少导致位姿估计退化 |
| 金字塔层数 | 4-8层 | 适应高度变化,每层尺度因子1.2-1.5 |
| 匹配阈值 | 汉明距离 < 50 | ORB描述子为二进制,使用汉明距离 |
| RANSAC迭代次数 | 200-500 | 剔除误匹配,保证本质矩阵求解稳定 |
| ROI区域 | 图像中心70% | 避免图像边缘畸变和运动模糊影响 |
3.2 光流法:像素运动场与速度估计
3.2.1 核心原理
光流法不依赖特征描述子,而是直接估计图像中每个像素(或稀疏网格点)的运动矢量。其理论基础是亮度恒定假设:同一空间点在相邻两帧图像中的灰度值不变。对于下视摄像头,当无人机水平移动时,地面像素在图像平面上产生平移光流;当无人机垂直升降时,产生膨胀/收缩光流(即FOE,Focus of Expansion)。
在PX4中,光流传感器(如PX4FLOW或下视摄像头+光流算法)输出的不是像素流场,而是经过标定后的角速度补偿值。具体公式为:
v_x = (flow_x - ω_y * f) * h / f
v_y = (flow_y + ω_x * f) * h / f
其中,flow_x和flow_y是光流算法输出的像素位移,ω_x和ω_y是IMU测量的角速度,f是焦距(像素单位),h是当前高度(由激光测距或气压计提供)。这个公式的核心思想是:先去除旋转分量,再通过高度换算得到真实水平速度。
3.2.2 光流法的适用边界
光流法在下视场景中最大的优势是计算量低,适合在嵌入式平台上高频运行(100Hz以上)。但它有两个致命弱点:
- 对纹理极度敏感:在纯色地面(如水泥地、雪地)上,光流方程病态,无法求解。
- 尺度不确定性:光流只能给出像素运动,必须依赖外部高度信息才能换算成米制速度。高度误差会直接线性传递到速度估计中。
3.3 视觉里程计:帧间位姿估计与累积漂移
3.3.1 核心原理
视觉里程计(Visual Odometry, VO)的任务是连续估计相机(即无人机)的运动轨迹。它通常采用以下流程:
- 特征提取与匹配:在连续帧之间建立特征对应关系。
- 运动估计:通过2D-2D对极几何(本质矩阵分解)或3D-2D PnP求解帧间相对位姿。
- 局部优化:使用滑动窗口或关键帧机制,对最近N帧的位姿和地图点进行捆绑调整(Bundle Adjustment)。
- 尺度恢复:单目VO存在尺度模糊,必须融合IMU(视觉惯性里程计,VIO)或已知地面标志物尺寸来恢复真实尺度。
在PX4精准降落场景中,视觉里程计通常与IMU进行紧耦合或松耦合融合。PX4默认使用LPE(Local Position Estimator)或EKF2中的视觉位姿融合模块,接收VO输出的位姿增量或位姿。
3.3.2 下视VO的退化场景与应对
下视VO与水平VO最大的不同在于:旋转自由度退化。当无人机悬停或缓慢下降时,下视摄像头几乎只能看到纯平移运动,此时对极几何中的旋转估计变得病态。工程上通常采用以下策略:
- IMU预积分:用IMU的角速度积分来补偿帧间旋转,视觉只负责估计平移。
- 平面约束:假设降落区域为近似平面,将VO问题简化为单应矩阵(Homography)估计,减少未知量。
- 关键帧策略:只在位移超过阈值(如5cm)时插入关键帧,避免微小抖动导致的数值不稳定。
背景与约束:某物流无人机需要在室内停车场(无GPS)降落到一个1m×1m的充电平台上。平台表面为哑光金属,带有高对比度的H形标志。无人机搭载下视全局快门摄像头(640×480@60fps,焦距约300像素),激光测距仪(量程0.1-4m),以及PX4自动驾驶仪(EKF2启用视觉融合)。
初始现象:使用纯光流法时,无人机在距离平台2m高度开始水平漂移,无法稳定悬停在标志上方。日志显示光流输出速度噪声达到±0.3m/s,远超控制死区。
分析过程:检查光流图像发现,金属平台表面存在镜面反射,导致亮度恒定假设失效;同时,H形标志在低分辨率下边缘模糊,光流网格点落在标志边缘时产生错误运动矢量。
解决方案:① 将光流算法切换为特征点法(ORB,200个特征点),并设置ROI为图像中心50%区域,避开平台边缘反光区;② 在EKF2中启用视觉位姿融合,将VO输出的位姿增量与IMU预积分融合,权重设为视觉:IMU=3:1;③ 增加激光测距仪的高度权重,确保尺度估计准确。
结果对比:切换后,悬停水平漂移降低至±0.05m以内,降落成功率从68%提升至97%。
复盘经验:下视视觉定位不能依赖单一算法。在纹理复杂但反光的场景中,特征点法优于光流法;但特征点法在纯色地面会失效,因此PX4中应配置算法自动切换逻辑(如通过图像熵判断纹理丰富度)。
3.4 常见误区与工程总结
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 认为光流法可以替代激光测距 | 高度误差导致速度估计发散 | 光流必须与测距传感器(激光/气压计)融合 |
| 忽略卷帘快门效应 | 高速下降时图像畸变,特征匹配失败 | 选用全局快门摄像头或限制下降速度 |
| 固定特征点数量不变 | 低空时特征点溢出,高空时特征点不足 | 根据图像金字塔层数动态调整特征点数量 |
| VO输出直接用于控制 | 累积漂移导致位置发散 | 必须经过EKF与IMU融合,并定期用标志物修正 |
| 忽略曝光时间调整 | 快速下降时运动模糊严重 | 设置自动曝光,并限制最大曝光时间(如2ms) |