1. 视觉SLAM概述:什么是SLAM、发展历程与核心价值

大家好,我是这门课的主讲。今天咱们聊聊视觉SLAM——这个在机器人圈子里越来越火的技术。说实话,我最早接触SLAM是在2015年,那时候做AGV小车,轮子上装个编码器,跑着跑着就偏了。后来换成视觉方案,才真正体会到什么叫「定位定姿,一步到位」。

1.1 什么是SLAM?

SLAM,全称是Simultaneous Localization and Mapping,中文叫「同步定位与地图构建」。说白了,就是让一个机器人进入陌生环境后,一边往前走,一边回答两个问题:

  • 我在哪?——定位问题
  • 周围长啥样?——建图问题

你想想看,这两个问题是互相依赖的。要知道自己位置,得先有地图;要建地图,又得先知道位置。这不就是「先有鸡还是先有蛋」吗?SLAM就是专门解决这个死循环的。

核心定义:SLAM是指移动机器人在未知环境中,利用自身携带的传感器(如相机、激光雷达),实时估计自身位姿并同时构建环境地图的过程。

我在项目中遇到过不少同学,一上来就问「SLAM和GPS有什么区别?」其实很简单:GPS是告诉你「你在哪」,但前提是得有卫星信号。SLAM是告诉你「你在哪,而且周围长什么样」,不需要任何外部基础设施。这就是为什么室内机器人、地下矿井、甚至火星车都用SLAM。

1.2 视觉SLAM的发展历程

视觉SLAM的发展,我把它分成三个阶段。嗯,这样讲比较清晰。

阶段 时间 代表方法 特点
萌芽期 1986-2004 基于扩展卡尔曼滤波(EKF) 计算量小,但只能处理小场景
发展期 2004-2015 PTAM、ORB-SLAM 引入关键帧和BA优化,精度大幅提升
成熟期 2015-至今 ORB-SLAM2/3、VINS、DROID-SLAM 多传感器融合、深度学习加持、鲁棒性更强

萌芽期(1986-2004):最早SLAM是用激光雷达做的,后来有人尝试用相机。那时候主要靠扩展卡尔曼滤波,说白了就是「猜一下当前位置,然后用观测值修正」。我刚开始学SLAM时,照着EKF公式推导了三页纸,结果跑起来发现——嗯,场景稍微大一点就崩了。

发展期(2004-2015):2007年,PTAM(Parallel Tracking and Mapping)横空出世。它把跟踪和建图分开在两个线程跑,这个思路影响深远。2015年ORB-SLAM发布,用ORB特征点做匹配,稳定性和精度都上了一个台阶。我记得当时在实验室跑ORB-SLAM,看着它把整个走廊建出来,那种感觉——真的很爽。

成熟期(2015-至今):现在视觉SLAM已经相当成熟了。ORB-SLAM2支持单目、双目、RGB-D三种模式;VINS-Mono把IMU和视觉融合,解决了纯视觉在快速运动时容易跟丢的问题。最近几年,深度学习也开始渗透进来,比如用神经网络做特征提取、深度估计,甚至端到端的位姿回归。

个人建议:如果你是初学者,我建议从ORB-SLAM2入手。代码规范、文档齐全,而且社区活跃。我曾经带过一个实习生,两周就能跑通并理解核心流程。

1.3 视觉SLAM在机器人导航中的核心价值

视觉SLAM在机器人导航中到底有什么用?我总结了三点:

  1. 提供实时位姿估计——机器人要知道自己「在哪、朝哪走」
  2. 构建可导航地图——不是简单点云,而是能用于路径规划的语义地图
  3. 支持重定位与回环检测——走丢了能找回自己,避免「漂移」

你想想看,一个扫地机器人如果没有SLAM,它只能随机乱撞。有了SLAM,它就能记住「客厅在左边,厨房在右边」,规划出一条高效的清扫路线。

下面这张图是我自己画的,展示了视觉SLAM在机器人导航中的核心逻辑:

视觉SLAM在机器人导航中的核心逻辑 传感器输入 相机 / IMU / 轮式编码器 前端:视觉里程计 特征提取 + 帧间匹配 → 粗略位姿估计 后端:优化 BA优化 / 图优化 → 全局一致性 回环检测 消除累积漂移 地图构建 稀疏/稠密/语义地图 导航应用:路径规划 + 避障 + 运动控制 传感器数据流 → 前端 → 后端 → 地图

从这张图可以看出,视觉SLAM不是单一模块,而是一个闭环系统。传感器数据进来,前端做特征匹配得到粗略位姿,后端做优化消除误差,回环检测负责「纠正方向」,最终输出一个全局一致的地图。这个地图再交给导航模块,做路径规划和避障。

注意:视觉SLAM虽然强大,但也不是万能的。我曾经在一个纯白色走廊里跑ORB-SLAM,结果特征点太少,直接跟丢了。后来加了IMU才稳住。所以实际工程中,多传感器融合几乎是标配。

视觉SLAM的核心价值,说白了就是让机器人「看得见、记得住、走得稳」。没有它,机器人就是个瞎子;有了它,机器人才能真正自主导航。

嗯,这一章就讲到这里。下一章咱们深入聊聊视觉SLAM的数学基础——坐标系变换、李群李代数这些硬核内容。到时候我会结合代码讲,保证你能听懂。


专注资料整理