1. 课程导入
当无人机飞入没有GPS信号的室内仓库、地下管廊或峡谷密林时,它靠什么知道自己在哪里、周围有什么、该往哪里飞?答案正是视觉SLAM(Visual Simultaneous Localization and Mapping,视觉同时定位与建图)。本课程围绕"看得见、定得准、建得全、飞得稳"这条主线,带你从零构建一套完整的无人机视觉SLAM建图与导航知识体系。
本课程的核心目标:让无人机仅依靠机载相机(单目、双目或RGB-D)与惯性测量单元,在未知环境中实时估计自身位姿,增量式构建环境地图,并基于该地图完成自主路径规划与飞行控制。
一、核心概念:四个必须分清的对象
学习视觉SLAM,首先要厘清四个容易混淆的概念,它们构成了整门课程的概念地基。
- 定位(Localization):在已知地图中估计无人机当前位姿,回答"我在哪"。
- 建图(Mapping):根据已知位姿构建环境表示,回答"周围是什么"。
- SLAM:定位与建图互为前提、交替求解,回答"我在哪且周围是什么"。
- 导航(Navigation):在地图之上做路径规划与轨迹跟踪,回答"我该怎么飞过去"。
四者的关系可以用下面的信号链来理解:相机采集图像 → 前端视觉里程计估计帧间运动 → 后端优化与回环检测消除漂移 → 输出位姿与地图 → 导航模块基于地图规划路径 → 飞控执行轨迹。这条链路中任何一环失效,都会导致定位漂移、地图重影甚至炸机。
二、方法流程:从一帧图像到一条航迹
把上面的框架落到工程实现,一次完整的SLAM导航循环通常包含以下步骤:
- 传感器标定:完成相机内参、畸变系数与相机-IMU外参标定,这是所有几何计算的前提。
- 前端跟踪:提取ORB、SIFT或SuperPoint特征,做帧间匹配,用对极几何或PnP求解相对位姿。
- 后端优化:将位姿与路标点构建为因子图,用g2o、Ceres或GTSAM做滑动窗口或全局BA。
- 回环检测:用词袋模型(DBoW)或深度学习描述子识别重访场景,加入回环约束消除累积漂移。
- 地图构建:将优化后的位姿与深度信息融合,生成点云、八叉树或占据栅格地图。
- 导航规划:在栅格或ESDF地图上运行A*、RRT*或EGO-Planner,输出平滑可飞轨迹。
- 控制执行:将轨迹转换为位置、速度或姿态指令,通过MAVROS发送给PX4飞控。
下面是一段典型的ROS启动配置,用于同时拉起视觉SLAM与导航节点:
<launch>
<node pkg="orb_slam3" type="orb_slam3_ros" name="slam">
<param name="voc_file" value="$(find orb_slam3)/Vocabulary/ORBvoc.txt"/>
<param name="camera_topic" value="/camera/image_raw"/>
<param name="imu_topic" value="/mavros/imu/data"/>
</node>
<node pkg="move_base" type="move_base" name="planner">
<param name="global_planner" value="global_planner/GlobalPlanner"/>
<param name="local_planner" value="dwa_local_planner/DWAPlannerROS"/>
</node>
</launch>
三、典型应用场景
视觉SLAM在无人机上的价值,集中体现在GPS拒止或GPS不可靠的场景中。下表梳理了主要应用方向及其关键技术诉求。
| 应用场景 | 环境特点 | 关键技术诉求 | 典型地图形式 |
|---|---|---|---|
| 室内仓库盘点 | 纹理弱、货架重复 | 抗重复纹理、回环可靠 | 稀疏点云 + 栅格 |
| 地下管廊巡检 | 光照暗、狭长 | 低光增强、长走廊漂移抑制 | 八叉树 / ESDF |
| 灾后搜救 | 粉尘、结构破损 | 鲁棒特征、快速重定位 | 稠密点云 |
| 农业植保 | 重复作物纹理 | 语义分割、行间导航 | 语义栅格 |
| 峡谷/桥隧检测 | GPS拒止、尺度大 | 视觉-惯性紧耦合、尺度一致 | 全局一致点云 |
四、常见误区与学习复盘
误区一:把SLAM当成"定位模块"。SLAM输出的是相对轨迹与地图,长期使用必然漂移,必须靠回环或外部约束修正,不能直接当作绝对定位源。
误区二:忽视标定与时间同步。相机-IMU外参错误或时间戳不同步,会让紧耦合VIO直接发散,这是初学者最高频的"玄学问题"。
学习建议:先跑通ORB-SLAM3或VINS-Fusion的公开数据集,再迁移到自己的无人机平台;每换一个场景,先验证特征跟踪质量与回环成功率,再谈导航效果。
本课程后续将沿着"感知—前端—后端—地图—导航—实机部署"这条主线逐层展开,每一章都会给出可运行的代码、可复现的参数与可对照的排障思路。学完本课程,你应当能够独立完成一台无人机在未知环境中的建图与自主飞行任务,并具备定位漂移、地图重影、规划失败等典型问题的分析与解决能力。