这两年只要聊到SLAM,总有人把它和“过气技术”绑定在一起。想想也能理解,端到端自动驾驶、视觉大模型、具身智能VLA这些概念轮番轰炸,显式建图、位姿优化听起来确实不够性感。但最近圈内的风向明显变了:头部AI实验室的具身智能团队和自动驾驶部门又开始批量放出SLAM相关岗位,多个新项目的系统框架里,SLAM从“可选模块”悄悄变回了“系统刚需”。SLAM不但没死,反而被重新抬上了牌桌。这篇文章不写概念科普,就聊聊我这几年的观察、踩坑和一套能落地的混合玩法。适合前几年被“端到端一切”带走、现在想回头看SLAM的朋友,也适合正在为机器人项目做技术选型的工程师。
1. 为什么SLAM会被当成“过气技术”
1.1 端到端热的那五年,显式几何被挤到了墙角
从深度学习开始统治计算机视觉之后,行业对SLAM的态度经历了一次明显的冷淡期。图像可以直接预测深度,BEV感知可以用神经网络从多相机拼出俯视图,占用网络能直接输出占据栅格,视觉语言模型更是一口气把“看图说话”和“指路”全包了。于是很多团队在写技术路线图的时候,自然而然地做了一个减法:SLAM这种需要手工设计特征、维护关键帧、做非线性优化的传统模块,是不是可以直接被端到端模型替换掉?
我见过不止一个项目组在2021到2023年之间把建图定位组整个裁掉,算法资源全部投给纯视觉大模型和端到端驾驶。当时的逻辑很简单:数据够多、算力够猛,网络应该能自己学会“我在哪、周围是什么”。结果到了真机阶段,问题一个接一个冒出来:重定位精度抖得厉害,跑一圈回来地图对不上,闭环全靠“网络自己悟”,没有任何机制保证全局一致性。最后团队不得不把SLAM那套东西又从故纸堆里翻出来补窟窿。
这段经历给我的教训是:SLAM不是被技术淘汰的,是被叙事淘汰的。只要融资故事里流行“一个模型解决所有问题”,SLAM这种模块化、可解释、需要精雕细琢的东西就会显得不合时宜。但工程系统的底线是稳定,不是听着高级。
1.2 “过时”的判断源于对比维度错位
还有一个原因是对比维度搞错了。如果只看帧间里程计的相对精度,这几年基于深度学习的视觉里程计确实在很多数据集上超过了传统特征点法。弱纹理、运动模糊、光照突变这些场景,学习型方法靠着海量数据先验往往表现更好。于是有人顺手得出结论:SLAM不行了,传统几何过时了。
但SLAM从来不只是“跟着走”,它还包括回环检测、全局优化、地图复用、重定位,这些部分至今没有一个纯端到端模型能真正替代。翻译举个例子:你可以说某个大模型翻译英文比纸质词典快得多,但不能因为快就认定“词典索引应该被扔掉”。机器人在一个环境里长期工作,需要的是能回答“我回到老地方了吗”的能力,这种能力靠的正是全局位姿图和地图描述子,而不是单帧预测。
所以在我的评价框架里,SLAM的“旧”只是前端的旧,它的后端、它的地图表示、它的闭环机制,反而因为大模型时代对空间一致性的高要求而变得更值钱了。真正过时的是“只靠几何、完全抛弃语义感知”的老做法,而不是SLAM本身。
2. 头部AI实验室重新视SLAM为刚需的三个信号
2.1 具身智能把“长期自主”变成了硬指标
这一轮AI巨头重新盯上SLAM,最直接的推动力是具身智能。大家慢慢意识到,具身智能不是让机器人在演示视频里跑通一个端到端策略,而是让它在真实的家庭、厂房、医院里连续工作几小时甚至几天。这里有一个基本问题绕不开:机器人得知道自己现在在哪、目标在哪、怎么从当前点走回之前见过的那个点。
大模型很擅长“理解”任务,比如看懂指令、规划动作序列、识别杯子和桌子的关系。但“理解”不等于“几何定位”。大模型不会因为你问了“桌子在哪”就给你输出一个可供导航使用的全局坐标,更不会在你推着机器人转了三圈之后自动修正累计漂移。这些活儿必须由一个持续运行的空间感知模块来干,这个模块就是SLAM。
头部实验室近两年的招聘方向很能说明问题:很多具身智能团队现在要的不是单纯会调Prompt的人,而是“懂SLAM、懂多传感器标定、能把大模型输出跟地图和位姿对接”的复合型工程师。JD里写得明明白白:负责机器人空间记忆模块,构建可持续更新的环境表征,支撑上层VLA。这不就是SLAM的活儿换个名字吗?
2.2 多模态大模型需要空间索引,SLAM是默认基建
另一个容易被忽略的应用方向,是用SLAM给多模态大模型做空间记忆底座。现在不少具身Agent的架构是这么设计的:机器人先花几分钟用SLAM建一张环境地图,然后在图上面挂语义标签,比如沙发、门、冰箱各自的位置和范围。当用户说“去厨房把杯子拿过来”,大模型负责把自然语言转换成语义目标,但真正定位厨房在哪、路线怎么走,靠的是SLAM输出的拓扑地图和位姿树。
这本质上是一个检索问题。SLAM建出来的地图不是给你看的一张点云图,而是一个带坐标系的数据库。大模型是大脑,负责决策;SLAM是骨架,负责让大脑知道身体在哪。我甚至看到一些团队把SLAM关键帧和地图描述子当成tokenizer的一部分,用来做全局检索,效果比纯文本记忆靠谱得多,因为物理世界的拓扑关系没法靠文字隐式编码。
还有数据闭环这条线。训练具身策略需要大量的真值位姿,仿真环境里可以凭空生成,但真实数据没有。现在主流的做法是让机器人先跑一遍SLAM,把录制传感器数据和优化后的轨迹一并产出,作为训练标注。没有SLAM,这条自动化标注流水线根本建不起来。
2.3 行业逻辑从“一切皆可学习”回到“可证明稳定”
还有一个更深层的信号,是头部AI项目开始重新接受“确定性模块兜底、学习模块扩展”的混合架构。前几年有些团队搞“完全端到端”,把定位、感知、规划全塞进一个网络里。演示效果确实惊艳,但一上真机就原形毕露:换场景要重新微调,出现分布外输入时没有任何可解释的降级策略,出了事故也没法回溯是哪一层出了问题。监管、安全评级、保险这些环节根本没法接受一个黑盒承担全部责任。
SLAM作为传统几何算法,恰好是当前少有的、能把不确定性量化出来的模块。位姿图的协方差、回环验证的几何检验、关键帧的共视关系,这些都是工程上可审计、可调参、可兜底的东西。让深度学习做感知,让几何优化做定位与地图一致性,再用大模型做语义决策,这套三层架构正在成为新的默认方案。
所以“SLAM重新被当成刚需”不是因为SLAM算法突然变强了,而是因为行业终于又需要“可解释、可重复、可定位”的基座了。这个趋势在无人驾驶、仓储物流、家庭服务机器人里都能看到。
3. SLAM技术栈怎么重新选型
3.1 先别追算法新词,看传感器配置
很多朋友一上来就问“现在用什么开源SLAM方案”,我的习惯是先看车上有什么传感器,再做倒推。传感器配置决定了你能走哪条技术路线,也基本决定了系统的鲁棒性上限。
单目视觉加IMU最便宜,适合手机AR、轻量级XR设备这类算力和成本敏感的形态,但尺度漂移和初始化问题是老毛病。双目相机加IMU是移动机器人的黄金组合,能直接给尺度,抗光照变化比单目强不少,室内室外都能跑。激光雷达加IMU则是硬核工业场景的首选,尤其在黑暗、强光、玻璃幕墙这种视觉杀手环境里,激光不会背叛你。多传感器融合就是把视觉和激光都接进来,再加轮式里程计或者GNSS,工程量和标定难度都翻倍,但稳定性也确实最好。
我参与的某室内服务机器人项目,一开始坚持纯视觉方案,想省传感器成本,结果在玻璃幕墙走廊里反复丢定位。后来加了一个单线激光雷达做融合,整个系统的鲁棒性立刻上了一个台阶。这个经验后来反复验证:硬件预算允许的情况下,多一种物理原理不同的传感器,比什么花哨算法都管用。
3.2 选型看的是性能边界,不是数据集跑分
开源社区里各种SLAM方案的测试结果满天飞,KITTI、EuRoC、TUM跑出来的分数都很好看。但那些基准数据是干净、无遮挡、传感器标定良好的,真机场景根本没那么友好。我做选型评估时更看重边界能力,会专门拿自己录制的脏数据包来测。
我一般会列四类指标。一是长时间漂移率,让机器人在同一个区域绕半小时,看轨迹终点和起点的闭合误差;二是重定位成功率,在光照变化、视角偏移的条件下反复触发重定位,统计成功率;三是初始化时间和失败率,看它在快速运动、低纹理场景里能不能顺利启动;四是算力占用情况,尤其是嵌入式设备上回环检测和全局优化会不会把CPU打满。四类指标都过了才敢上真机,哪怕它们和公开榜分数有差距也没关系。
这里有个很实用的建议:建一个本地的“场景录包库”,把反光地砖、长走廊、空旷大厅、动态人流这些难啃的场景都录成原始数据包。每次评估新方案,第一件事就是在这些包里跑一遍,而不是先跑公开数据集。公开数据集考的是算法下限,你自己的场景包考的是落地上限,后者才是决定项目成败的东西。
3.3 传感器标定和时间同步是选型之后的第一道坎
方案选完之后,接下来让你崩溃的通常是标定。相机内参、相机和IMU之间的外参、激光雷达和相机之间的外参,任何一个标定得不准,跑出来的轨迹就会以肉眼可见的速度漂移。IMU的bias估计尤其挑激励,如果拿着设备慢悠悠转两圈就完事,角速度计和加速度计的偏置根本收敛不到真值,一旦系统在弱纹理环境里依赖IMU传数据,几分钟内就飘到天上去。
时间同步是另一个隐形杀手。相机帧率30Hz、IMU 200Hz、激光雷达10Hz,各自的时间戳来源还不一样,延时差几毫秒在快运动时会直接变成几厘米的定位误差。很多SLAM方案里有在线估计时间延时的模块,但前提是传感器驱动本身得把时间戳传准。我见过不止一台机器人,IMU时间戳用的是系统收到数据包的时机,而不是传感器实际采集的时机,导致在线标定怎么都收敛不了。解决方式很简单:在硬件驱动层用硬件时钟给每一帧打上采集时刻戳,而不是到了用户态再补。
4. 把SLAM和现代AI结合的一个落地流程
4.1 经典后端加学习型前端,是当前最稳的组合
很多人问现在该不该追端到端SLAM,把整个前端后端全换成神经网络。我的观点是:对于需要落地交付的项目,最稳的架构是“传统优化后端 + 学习型前端”。后端继续用关键帧位姿图优化、滑窗BA、回环图优化这套经典框架,因为它可证明收敛、能输出协方差、工程上可控;前端则把特征提取、特征匹配、深度估计这些感知任务交给轻量级网络,专门解决弱纹理和动态场景下的“看不清”“对不上”问题。
这样做的工程理由很直接:任何一次系统崩溃,你都能快速定位是前端感知错了,还是后端几何推错了。边界清晰,调参方便,出了问题找人也好找。全端到端的方案听起来简洁,但真机上任何一个环节出错,整个网络的状态就是一个黑盒,你根本没法判断应该补数据还是改网络结构。
我用过的组合是:前端用轻量级学习型特征替代传统角点特征,再叠一个动态物体分割Mask,把行人、车辆这些移动目标从匹配里剔除;后端保留经典的滑动窗口BA和位姿图优化。实测下来,在动态走廊里轨迹误差比纯传统前端低了20%到30%,而且算力增加可控,在嵌入式GPU上也能跑到实时。
4.2 一套可以直接参考的混合方案流程
把前面这些思路落成一个完整流程,大致是五步。第一步是数据采集与标定,先把传感器时间戳校准、IMU标定、相机激光外参标定全部做扎实,然后录制一段覆盖目标场景的数据包。第二步是前端感知提升,对图像做学习型特征提取,顺便输出动态物体Mask,在特征匹配时过滤掉这些区域。第三步是后端状态估计,前端输出特征匹配结果给到滑动窗口BA,和IMU预积分一起紧耦合优化,持续输出当前位姿。第四步是回环与重定位,在后台用词袋模型做回环候选检索,再用几何验证滤除误匹配,确认后把回环约束加入全局位姿图。第五步是输出与维护地图,根据应用需求输出稀疏点云、占据栅格或者拓扑图,并且支持多会话地图拼接和更新。
每一步都有值得注意的细节。比如第三步里IMU预积分要留出bias修正的接口,否则滑窗优化动不动就发散;第四步里回环验证不能只看特征匹配数量,还得结合位姿一致性做最终确认,否则相似纹理区域很容易产生假阳性回环,直接把整张地图拉变形。这些细节都是我在项目里逐个趟过来的,写成文章只有几行字,现场排查的时候一个晚上就没了。
4.3 混合方案最大的工程量其实在数据闭环
很多人以为混合方案最难的是算法选型,其实是数据闭环。学习型前端要生效,需要针对目标场景做标注、训练、评测,这本身就是一整套流程。最笨但最有效的方法是:先在仿真环境里生成一批弱纹理、动态场景的合成数据,网络预训练一轮,再到真机上录数据做微调,最后用小批量真值评测决定要不要发布模型版本。
真值从哪来?我推荐的做法是用激光SLAM建一张高精度全局地图,然后在这张图上把视觉位姿和轨迹做离线对齐,以此生成学习前端训练用的标注和评测用的真值。听起来有点“先有鸡还是先有蛋”的循环,但实际操作中完全可行,因为激光SLAM在结构化环境里足够稳,可以作为信任锚点。这个闭环一旦跑通了,后面每次换场景、改传感器布局,都能在一天内重新产出一套适配数据,而不是靠人工一帧帧标注。
5. 现场实录:一次混合SLAM改造的排障过程
5.1 项目背景和最初的失败现象
某室内服务机器人项目,走廊是玻璃幕墙加反光地砖,来往人员很多。初始方案是双目加IMU的视觉SLAM,单独测试时指标还行,一进入大厅区域就出问题:机器人直线走过30米左右,轨迹开始往一侧歪,地图上的墙体会叠出重影,偶尔还会突然跳一段,像是被“拽”到别的位置。用户反馈很直接:机器人在玻璃幕墙前面不敢走,一走就偏。
我们的第一反应是替换前端算法,把传统特征换成学习型特征,同时加入动态目标过滤。改完之后单跑视觉里程计,弱纹理区域确实稳了不少,但大厅里的漂移问题依然存在。这提醒我,问题大概率不在前端感知,而在更深层的标定或后端约束上。
5.2 从IMU标定开始一步步找到根因
按排查顺序,我们重新做了IMU标定。上一版标定数据是在室内静态环境录的,激励轨迹太温和,加速度计和陀螺仪的bias估计一直不稳定。重新用“快速转动加突然静止”的激励方式采集了半小时数据,标定完成后,静态零漂明显下降。但上机测试,大厅漂移只是减轻,没有根治。
第二步检查时间同步。我们把相机和IMU的原始时间戳拉出来对比,发现IMU时间戳实际上是从系统缓存队列里取出来的软件时间,并不是传感器数据被硬件捕获的那一刻。给驱动层打上硬件采集时间戳的补丁后,在线延时估计很快收敛到了稳定值。这一步做完,长直走廊的轨迹明显变直了,但大厅里的回环问题还在。
第三步聚焦回环检测。大厅是一个环形结构,理论上机器人绕一圈应该触发回环把累计误差拉回来,但系统始终没在预期位置触发。查了日志才发现,视觉词袋模型在玻璃幕墙区域提不到足够稳定的特征,回环候选检索出来的都是同一段相似玻璃墙的错误匹配,又被几何验证过滤掉了。我们调整了关键帧策略,增加短基线关键帧密度,同时把激光雷达的几何信息融入回环验证阶段,终于让系统在大厅实现了正确闭环。
5.3 排查过程中的经验提炼成速查表
| 症状 | 可能根因 | 检查顺序 | 解决思路 |
|---|---|---|---|
| 直线行驶轨迹侧偏 | IMU标定不收敛、延时未校准 | 先重新标定IMU,再检查时间戳来源 | 用激励充分的轨迹标定;硬件层打采集时间戳 |
| 弱纹理场景频繁丢定位 | 前端特征不足、局部优化被动态目标干扰 | 看特征匹配数、检查动态物体是否进入优化 | 学习型特征、动态分割Mask、加激光辅助 |
| 地图重叠不对齐 | 回环漏检或假阳性 | 查回环触发日志、看几何验证通过率 | 调关键帧密度、加入多传感器验证 |
| 初始化失败率高 | 快速运动导致IMU激励过大、单目尺度未收敛 | 检查初始化时段IMU数据、视觉特征连续性 | 限制初始化运动速度、改用双目/深度传感器 |
| CPU占用持续高位 | 全局优化过于频繁、地图关键帧过多 | 统计各模块耗时占比 | 降低全局优化频率、边缘化旧关键帧、限制局部地图大小 |
6. 给SLAM工程师与转方向朋友的经验之谈
6.1 三条能少走弯路的入行建议
先说给新人的三条建议。第一,不要一上来就死磕公式,先完整跑通一套离线数据管线。把公开数据集录成包,在电脑上把定位、建图、回环全流程跑一遍,看可视化结果,再回头理解背后的数学原理。第二,数学一定要写代码验证。SLAM绕不开坐标系变换、李群李代数、非线性优化,光看推导等于没学,亲手实现一次手写BA或者位姿图优化,你对整个系统的理解会完全不同。第三,别只陷在SLAM里,尽量让自己成为“能对接大模型”的SLAM工程师。现在行业缺的不是会跑开源框架的人,而是能把语义地图、拓扑导航、多模态指令和位姿优化接在一起的人,这种复合能力在招聘市场上非常稀缺。
6.2 我最后想说的话
最后说点个人体会。做了这么多年空间感知相关的项目,我最大的感受是:算法热点会一轮一轮地换,但物理世界里“我在哪、周围是什么、怎么走回老地方”这个问题,永远是机器人必须回答的底层问题。大模型让机器人更聪明,但聪明之前先得站稳。头部AI实验室重新把SLAM当刚需,不是因为SLAM突然变时髦了,而是因为他们终于走到真实物理世界门口,发现没有这个“骨架”,再强的大脑也站不住。
对我来说,这其实是一件让人安心的好事。一个方向如果只靠概念炒作,迟早会被下一个概念拍在沙滩上;反而是SLAM这种需要啃硬骨头、需要长期积累、需要在无数个长夜里调标定和调回环的领域,才能沉淀出别人短期追不上的工程壁垒。那些总说“SLAM已死”的人,大概率没亲自在玻璃幕墙大厅里救过一台快撞墙的机器人。你救过,你就知道它有多重要。