1. 课程导入
当无人机飞入城市峡谷、室内厂房、隧道、密林或强电磁干扰区域时,卫星导航信号会因遮挡、多径、欺骗或压制而失效,这就是GNSS拒止(GNSS-denied)环境。此时,仅依赖卫星定位的飞控会迅速失去位置、速度与航向基准,轻则悬停漂移,重则失控坠机。本课程的目标,是建立一套从感知、估计、规划到控制的完整工程方法,使无人机在卫星不可用时仍能安全、连续、可解释地完成自主导航任务。
学习目标与能力地图
完成本课程后,学习者应能独立完成以下工程任务:
- 识别GNSS拒止的典型成因与失效模式,判断系统是否进入拒止状态;
- 搭建多传感器融合架构,将IMU、视觉、激光雷达、气压计、磁力计与轮式里程计统一到同一状态估计框架;
- 实现视觉惯性里程计(VIO)、激光惯性里程计(LIO)与SLAM后端优化;
- 在无全局定位条件下完成局部地图构建、路径规划与轨迹跟踪;
- 设计降级策略、失效检测与安全返航逻辑,并完成仿真与实机验证。
核心概念:从“定位”到“状态估计”
GNSS拒止导航的本质,不是简单“换一个传感器”,而是把问题从绝对定位转为相对状态估计。GNSS提供的是全局绝对位置,而拒止环境下系统只能依靠自身运动约束与环境观测,递推估计位姿、速度和零偏。核心概念包括:
- 惯性递推:IMU以高频输出角速度与加速度,短时精度高,但积分会漂移;
- 视觉/激光观测:通过特征点、点云配准提供相对约束,抑制漂移;
- 因子图优化:将IMU预积分、视觉重投影、回环检测统一为最小二乘问题;
- 坐标系与时间同步:机体、相机、雷达、世界坐标系之间的外参与时间戳对齐,是工程成败的关键;
- 可观测性:在匀速直线、纯旋转等退化运动下,尺度与航向可能不可观,需要外部约束或运动激励。
工程判断准则:当GNSS卫星数低于阈值、水平精度因子(HDOP)超限或接收机报出欺骗告警时,飞控应在一个控制周期内切换至拒止导航模式,并保持状态估计器连续输出,避免位置跳变。
整体框架:感知—估计—规划—控制闭环
本课程采用分层架构组织知识。感知层负责采集IMU、图像、点云与气压数据;估计层完成时间同步、外参标定与多源融合;规划层在局部地图上生成安全轨迹;控制层将轨迹转化为姿态与推力指令;安全层持续监测健康度并触发降级或返航。下图给出该闭环的整体关系。
典型应用场景
拒止导航并非实验室概念,而是大量真实任务的刚需。下表列出典型场景及其主导传感器组合。
| 场景 | 拒止原因 | 主导传感器 | 关键挑战 |
|---|---|---|---|
| 城市峡谷物流 | 高楼遮挡、多径 | 视觉惯性 + 气压 | 纹理重复、动态遮挡 |
| 室内巡检 | 无卫星信号 | 激光雷达 + IMU | 几何退化、长走廊 |
| 隧道/管廊 | 完全遮蔽 | LIO + 轮式里程计 | 尺度漂移、无回环 |
| 强电磁对抗 | 压制或欺骗 | 视觉 + 抗干扰IMU | 欺骗检测、快速切换 |
| 密林搜救 | 树冠遮挡 | 视觉 + 激光 + 气压 | 弱纹理、光照变化 |
方法流程与最小可运行链路
工程落地建议遵循“先仿真、后实机,先单源、后融合”的路径。一个最小可运行链路如下:
# 1. 启动仿真环境与飞控
ros2 launch px4_gazebo gnss_denied_world.launch.py
# 2. 启动VIO估计节点
ros2 run vins_estimator vins_node config/px4_stereo_imu.yaml
# 3. 启动局部规划与控制
ros2 launch ego_planner single_uav.launch.py
# 4. 记录日志用于复盘
ros2 bag record /camera/image_raw /imu/data /lidar/points /mavros/local_position/pose
提示:首次调试时,先关闭GNSS输入,仅用VIO悬停,观察10分钟内位置漂移量。若漂移超过0.5米,优先检查相机与IMU的时间同步和外参标定,而不是急于更换算法。
常见误区与复盘要点
- 误区一:把VIO当作绝对定位。VIO输出的是相对位姿,长时间运行必然漂移,必须配合回环或先验地图;
- 误区二:忽视时间同步。相机与IMU时间戳偏差超过5毫秒,就会在快速旋转时产生显著估计误差;
- 误区三:在退化场景强行依赖单一传感器。长走廊、纯旋转、匀速直线都会导致可观测性下降,需要引入轮速、气压或外部约束;
- 误区四:只关注算法精度,忽略安全降级。工程系统必须定义健康度指标、切换阈值与返航策略,否则一次估计发散就可能导致坠机。
复盘要点:每次飞行后,至少对比三组数据——估计轨迹与真值、IMU零偏收敛曲线、GNSS拒止切换时刻的状态跳变。只有把“何时失效、为何失效、如何恢复”讲清楚,才算真正掌握拒止导航。