1. 课程导入

无人机移动平台视觉降落,是指无人机在无卫星导航或卫星导航受限的条件下,利用机载视觉传感器(单目相机、双目相机、RGB-D相机等)对地面或水面移动平台上的合作标志、特征图案或平台本体进行检测、识别与相对位姿估计,并据此生成制导指令,最终实现无人机在移动平台上的自主、安全、精准着陆。它融合了计算机视觉、视觉伺服控制、飞行器制导控制、状态估计与嵌入式实时计算等多个技术方向,是无人机自主化能力中难度最高、工程价值最突出的环节之一。

核心定义:视觉降落 = 视觉感知(检测/识别/位姿估计) + 相对导航(状态估计/滤波) + 制导控制(轨迹规划/视觉伺服) + 平台协同(运动预测/同步)。

一、为什么需要移动平台视觉降落

传统无人机降落依赖GPS与气压高度计,定位精度通常在米级,且无法应对平台运动。当降落目标变为行驶中的车辆、舰船、移动机器人或应急车辆时,平台位置持续变化,GPS相对定位精度不足、通信延迟与遮挡问题突出,必须依靠视觉提供厘米级相对位姿。视觉降落的核心价值在于:不依赖外部基础设施、相对定位精度高、可实时闭环、适应动态目标。

二、典型应用场景

  • 舰载无人机回收:舰船在海上持续运动,存在横摇、纵摇、升沉,甲板空间狭小,视觉降落需在六自由度扰动下完成。
  • 车载无人机起降:应急指挥车、通信中继车在行驶中释放与回收无人机,要求对车辆运动进行预测与同步。
  • 移动机器人协同:无人机与无人车编队作业,无人机需降落在移动的无人车平台上进行换电或数据回传。
  • 野外应急与物流:在无GPS覆盖区域,向移动的救援车辆或临时平台精准投送物资。
  • 农业与巡检:无人机降落在移动的农机或巡检车上,实现连续作业与自动补给。

三、技术挑战全景

移动平台视觉降落之所以困难,是因为它同时面对感知不确定性、平台动态性、控制实时性与安全性四重压力。下图给出从视觉感知到安全着陆的完整信号链与主要挑战分布。

移动平台视觉降落信号链与挑战分布 视觉感知 相机成像/标志检测 位姿估计 PnP/对极/深度 状态估计 EKF/UKF/滤波 制导控制 视觉伺服/轨迹 安全着陆 触地判定/保护 相对位姿反馈闭环 四类核心技术挑战 感知不确定性 光照突变/运动模糊 尺度变化/遮挡 纹理缺失/反光 标志误检与丢失 平台动态性 六自由度运动 速度/加速度突变 运动预测误差 相对速度匹配 控制实时性 端到端延迟 控制频率匹配 算力与功耗约束 视觉伺服稳定性 安全性 触地速度控制 复飞与避障 故障检测与容错 平台人员安全

四、课程整体框架

本课程共30章,按照“基础—感知—估计—控制—系统—实战”的递进逻辑组织,帮助学习者从零构建完整的移动平台视觉降落系统。

模块 章节范围 核心内容
基础篇 第1–5章 定义与场景、坐标系与位姿表示、相机模型与标定、平台运动学、系统总体架构
感知篇 第6–12章 合作标志设计、目标检测、特征提取与匹配、位姿解算、深度估计、鲁棒性增强
估计篇 第13–17章 卡尔曼滤波、状态观测器、平台运动预测、多传感器融合、延迟补偿
控制篇 第18–23章 视觉伺服、轨迹规划、制导律设计、速度匹配、触地判定、复飞策略
系统与实战篇 第24–30章 机载计算平台、实时软件架构、仿真与半实物测试、外场试验、故障复盘与工程优化

五、常见误区与学习建议

误区一:认为视觉降落只是“识别一个标志然后飞过去”。实际上,识别只是起点,真正的难点在于动态平台下的相对位姿估计精度、延迟补偿与控制闭环稳定性。
误区二:忽视坐标系与时间同步。大量工程失败案例源于相机、IMU、飞控之间的坐标变换错误或时间戳不同步。
误区三:只关注算法精度,忽视机载算力与实时性约束。实验室跑通的算法,在嵌入式平台上可能无法满足控制频率要求。
学习建议:每学完一个模块,建议在仿真环境中复现一次完整链路。例如,先完成相机标定与标志检测,再接入位姿估计与滤波,最后接入控制律,逐步增加平台运动与扰动,观察系统性能变化。只有把“感知—估计—控制”串起来,才能真正理解视觉降落的工程本质。

六、一个最小可运行示例

下面给出一个视觉降落主循环的伪代码框架,帮助建立系统级认知。后续章节将逐步填充每个模块的具体实现。

while (mission_active) {
    frame = camera.capture();                    // 1. 采集图像
    detection = detector.detect(frame);          // 2. 检测平台/标志
    pose = pose_estimator.solve(detection);      // 3. 解算相对位姿
    state = ekf.update(pose, imu, dt);           // 4. 滤波与预测
    cmd = guidance.compute(state, platform_pred); // 5. 生成制导指令
    flight_controller.send(cmd);                 // 6. 执行控制
    if (state.height < TOUCHDOWN_H) {            // 7. 触地判定
        land_or_goaround(state);
    }
}

从这段伪代码可以看出,视觉降落是一个典型的实时闭环系统:感知提供观测,估计提供状态,控制产生动作,动作又改变下一帧的观测。任何一个环节的延迟、误差或失效,都会沿着闭环传播并放大。因此,本课程不仅讲算法,更强调系统集成、时序设计与工程验证。