Functional-SLAM_公众号推送稿
还在研究语义SLAM?!清华×大工×ETH开源首个功能级SLAM——让机器人地图从“识别物体”走向“理解交互”|CoRL 2026
**一句话看点:**语义/物体级 SLAM 已经能告诉机器人“这是什么、在哪里”,但真正面向交互的机器人还需要知道“哪里可以操作、如何作用于对象”。Functional-SLAM 将 Functional 3D Scene Graph 从离线后处理推进为在线 SLAM 状态,并进一步利用功能拓扑反向增强回环与定位。
过去十余年,SLAM 的地图表示已经从稀疏特征点、点云和几何结构,逐渐发展到能够显式建模物体类别、实例和语义信息。Semantic SLAM、Object-level SLAM 让机器人不再只知道“我在哪里”,还开始知道“这里有什么”。
但如果目标是一台真正需要进入现实环境完成操作任务的机器人,仅仅“认识物体”,真的够吗?
当机器人接收到一句很简单的指令:
“Pick up the kettle to pour water.”
语义/物体级地图也许已经告诉它:这里有一个 kettle(水壶)。
但机器人真正要操作的并不是“kettle”这个类别标签,而是水壶上的 handle(把手)。它还需要进一步知道:哪个部件可以操作?这个部件属于哪个对象?应该在哪里与它发生交互?这个部件又是以什么方式作用于对象的?
类似的问题几乎存在于所有真实操作任务中:
- 识别出抽屉,不等于知道应该拉哪个把手;
- 识别出炉灶,不等于知道哪个旋钮控制哪个 burner;
- 识别出灯,也不等于知道房间另一侧哪个 switch 与它存在控制关系。
换句话说:
Semantic / Object SLAM 更擅长回答 “What is there?”;面向具身交互的地图,还需要进一步回答 “How to interact?”。
这正是清华大学 × 大连理工大学 × ETH Zürich 在 CoRL 2026 工作 Functional-SLAM: Interaction-Aware Mapping with Online Functional Scene Graphs 中尝试解决的问题。
与“在已有重建结果上再生成一张功能图”不同,Functional-SLAM 希望让对象、可交互部件及其功能关系从被观测到的那一刻起,就作为 SLAM 地图状态持续维护;同时,已经形成的功能拓扑又能够反过来帮助 SLAM 发现回环候选、改善位姿估计。
一句话概括:
让机器人地图从“识别物体”继续走向“理解交互”,并让这种功能理解真正进入在线 SLAM 闭环。
1. 论文信息
论文题目: Functional-SLAM: Interaction-Aware Mapping with Online Functional Scene Graphs
会议: Conference on Robot Learning(CoRL 2026,已接收)
作者: Xinggang Hu, Chenyangguang Zhang, Zihan Zhu, Ruida Zhang, Xiangkui Zhang, Xiangyang Ji
单位: Tsinghua University / Dalian University of Technology / ETH Zürich
- Paper: https://arxiv.org/abs/2609.07497
- Code: https://github.com/Hbelief1998/Functional-SLAM-CoRL_2026
- Demo: https://www.bilibili.com/video/BV13xbw6NECB/
- Dataset: https://huggingface.co/datasets/xg-123/Functional-SLAM-dataset
代码、实验数据与 Demo 均已公开,感兴趣的读者可以直接复现。
2. 语义 / 物体 SLAM 已经“认识”了物体,然后呢?

图1 从几何地图、语义/物体地图进一步走向面向交互的功能地图。
如果把机器人地图的发展粗略分成三个层级,可以看到一个很直观的变化。
几何 SLAM:回答“我在哪里?”
传统 SLAM 的核心输出是相机轨迹、点云以及其他几何地图。机器人可以知道自己的位姿,也可以恢复环境的三维结构。
Semantic / Object SLAM:回答“这里有什么?”
在几何基础上继续加入类别、实例与语义信息之后,机器人可以把地图中的结构进一步组织成:
mug、kettle、bottle、cabinet、drawer……
此时地图已经不再只是“点”,而开始具备物体层面的可解释性。
Functional-SLAM:进一步回答“我应该和哪里交互?”
真正执行操作时,机器人往往需要的不是整个物体,而是与动作直接相关的细粒度交互单元。
以水壶为例,仅仅识别出 kettle 仍然不足以完成“拿起水壶去倒水”。机器人需要进一步定位 handle,并知道:
handle → grasp to lift or pour → kettle
因此,Functional-SLAM 不只维护对象,还显式表示功能载体、机器人可操作的 interaction units,以及局部或远程的功能关系。
这里的重点不是“把语义标签分得更细”,而是让地图开始保存与机器人动作直接相关的结构化知识。
也就是说:
Recognizing Objects ≠ Understanding Interaction.
3. Functional Scene Graph 已经有了,为什么还需要 Functional-SLAM?
近年来,OpenFunGraph(CVPR 2025)、FunGraph(IROS 2025)、KeySG(ICRA 2026)、HHOpenFunGraph(ECCV 2026)等工作,已经将 3D Scene Graph 从物体和语义层面进一步拓展到可操作部件、交互元素及其功能关系。
例如,OpenFunGraph 首次系统定义了开放词汇 Functional 3D Scene Graph,并从 posed RGB-D sequences 中构建 objects、interaction elements 和 functional relations,使机器人不仅知道“场景里有什么”,还能够进一步推理“哪里可以交互、这个交互部件作用于谁”。
这类工作已经说明:
Functional 3D Scene Graph 是连接三维场景理解与机器人细粒度交互的一种重要表示。
但现有方法还有一个关键限制。
它们通常依赖已知相机位姿、深度输入,或者离线重建得到的稳定几何,再在此基础上完成节点融合和功能关系推理。换句话说,功能图构建与机器人的在线定位、建图过程基本是解耦的。论文明确指出,这种 offline paradigm 在真实未知环境中会带来更高的处理延迟和部署成本,难以满足机器人探索过程中的 immediate interaction。
对于真实机器人,这一区别非常关键。
机器人进入一个未知环境时,不仅需要一边运动、一边估计自身位姿和环境几何,还可能随时需要利用当前已经获得的功能信息完成操作。因此,我们真正希望的不是:
先得到稳定的三维重建,再额外构建一张 Functional Scene Graph;
而是:
让功能图与 SLAM 同时运行,并随着新的观测和最新的 SLAM 状态持续更新。
因此,Functional-SLAM 推进的重点并不是简单地把已有功能图方法“跑得更快”,而是改变了 Functional Scene Graph 在系统中的角色:
从建立在稳定几何之上的 offline reconstruction result,变成 SLAM 过程中 continuously and recursively maintained online map state。
这意味着功能节点和功能关系不再依赖一个已经固定的最终场景,而必须在机器人持续探索、SLAM 状态不断变化的过程中被长期维护。
而这恰恰引出了一个此前离线功能图不需要正面处理的问题:
当支撑功能图的相机位姿和局部几何本身都在持续变化时,如何保证这张细粒度功能图仍然稳定、正确?
4. 从稳定离线几何走向在线 SLAM,真正难在哪里?

图2 Functional Scene Graph 从离线构建走向在线 SLAM 后面临的核心挑战。
这里首先要注意一个本质区别。
传统离线 Functional Scene Graph 通常建立在已经获得的稳定 pose / reconstruction 上,因此节点一旦写入三维坐标,其几何基准基本不会继续变化。
但在 Online SLAM 中,情况完全不同:
当前相机位姿只是在线估计结果,前端跟踪会累积漂移,而后端优化又会不断修正历史关键帧位姿。
因此,支撑功能节点的 world position、image projection 和 relative spatial relation 都可能随 SLAM 优化发生变化。
对于普通的大尺度 object,这种变化有时还可以容忍;但 Functional-SLAM 所关注的恰恰是 handle、knob、button 等细粒度 interaction elements。
这些元素通常:
尺度小、外观相似,而且三维几何支撑弱。
因此,即使只是轻微的位姿或重建误差,也可能直接造成错误的跨帧关联。论文特别指出,这是 Functional-SLAM 相比传统 object-level SLAM 更突出的问题。
具体而言,在线 Functional Graph 主要面临下面两个层面的核心挑战。
4.1 位姿在变,但功能节点的“身份和位置”不能跟着乱
假设机器人连续多次看到同一个 drawer handle。
在不同时间,它对应的相机位姿仍可能因为前端漂移和后端优化而发生变化。如果节点仍按照早期估计的 world-frame geometry 固定下来,那么后续进行投影、几何比较和节点关联时,就可能继续使用已经过时的几何位置。
对于一个大柜子,这种误差可能影响有限;但对于几厘米大小的 handle,同样的误差已经足以造成:
- 同一 interaction element 被重复建立;
- 当前观测无法与历史节点正确匹配;
- 相邻的两个相似 handle 被错误关联;
- 节点与其长期功能上下文发生不一致。
因此,这里的问题实际上包含两个彼此耦合的要求:
Geometry Synchronization:节点几何必须始终与最新 SLAM 状态同步;
以及:
Identity Association:即使位姿变化、多个小部件又高度相似,也必须稳定判断“这还是不是原来的那个节点”。
这也是为什么 Functional-SLAM 不能像离线方法那样,把节点几何一次写入固定世界坐标之后就不再更新。
4.2 单帧看见了一条关系,并不代表这条关系就是真的
Functional Graph 的另一个困难来自 functional edge。
一个 interaction element 与哪个 object 存在功能关系,在单帧中往往并不明确。
例如,从某个视角观察时,一个 handle 可能由于遮挡、局部重叠以及邻近候选竞争,同时对多个 object 表现出较强的空间关联。
这意味着当前帧即使检测到了:
handle + drawer + cabinet
也不能简单地根据这一帧就确定:
这个 handle 到底应该归属于哪一个 object。
论文将这一问题称为明显的 single-frame affiliation ambiguity。如果直接把单帧关系写入长期图,一次错误判断就可能形成错误 functional edge;而 Functional-SLAM 需要的是一张能够被长期使用的 persistent graph,因此这种关系必须依靠后续多帧观测逐渐得到验证和稳定。
因此,真正进入在线 SLAM 后,Functional Graph 面临的核心问题可以压缩成两句话:
节点层面:SLAM 几何不断变化,小尺度交互元素却必须保持稳定的几何和跨帧身份。
关系层面:单帧功能归属存在歧义,长期功能边却必须足够可靠。
而 Functional-SLAM 后面的设计,正是围绕这两个问题展开:
Anchor-Keyframe Geometry + Functional-Context-Constrained Association
→ 解决 online pose update 下的 persistent node maintenance;
Temporal Functional-Edge Posterior
→ 通过 multi-frame evidence 稳定 functional relations。
5. Functional-SLAM:让功能图成为真正的在线 SLAM 状态
图3 Functional-SLAM 整体框架。
整个系统可以概括为三个耦合阶段:
Tracking & Functional Perception → Online Functional Graph Mapping → Functional-Topology-Assisted Loop Closure
5.1 从每一帧获得局部功能观测
Functional-SLAM 以 MASt3R-SLAM 负责底层几何跟踪,持续估计相机位姿、pointmap、confidence 和 keyframes。
与此同时,系统利用开放词汇功能感知模块,从当前图像中识别对象、功能载体和机器人可操作的 interaction units,并产生候选功能关系。
因此,系统每次拿到的首先只是:
“当前这一帧看到了什么、可能有什么功能关系?”
真正关键的是如何把这些瞬时局部观测变成一张长期稳定的在线图。
5.2 让功能图在位姿变化中稳定“生长”
针对前面的三个核心问题,Functional-SLAM 分别进行了对应设计。
(1)Anchor-Keyframe Geometry:让节点几何始终跟随最新 SLAM 状态
Functional-SLAM 不把细粒度功能节点直接“钉死”在某个旧的世界坐标上,而是在 anchor-keyframe 坐标系中维护其几何。
当 SLAM 后端更新关键帧位姿时,节点几何可以通过最新 anchor pose 同步恢复。
直观地说:
SLAM 地图动了,功能节点也必须跟着动。
这避免了直接 world-frame fusion 时,历史位姿优化造成节点几何与当前地图逐渐脱节的问题。
(2)Functional-Context Association:判断的不只是“像不像”,还要看“属于谁”
在跨帧 Node Association 中,Functional-SLAM 不只使用几何信息,还进一步结合语义与功能上下文。
对于两个外观几乎完全一致的 handle,仅仅知道它们都叫 “handle” 并没有区分度;但如果一个属于 drawer A,另一个属于 drawer B,它们在功能上下文中就是两个不同的长期实体。
因此,系统把:
Geometry + Semantic + Functional Context
联合用于 persistent node maintenance,使细粒度 interaction units 在连续帧中更稳定地保持身份一致。
(3)Temporal Edge Posterior:不让功能关系“一帧定终身”
对于功能关系,Functional-SLAM 不把单帧预测直接写成最终边。
系统持续积累不同帧中的 relation evidence,通过 temporal posterior 更新候选关系;只有当多帧证据逐渐稳定之后,才将对应的 local / remote functional edge 正式 commit 到长期地图。
因此:
单帧 perception 负责提出候选,时间负责逐步消解歧义。
通过这三个设计,Functional Scene Graph 从一次性的结果,变成了能够随着机器人探索持续递归更新的 persistent map state。
6. 回环:功能图反哺 SLAM
论文更进一步做了一件很有意思的事:
让已经建立起来的 Functional Topology 反过来参与 Loop Closure。
传统视觉地点识别主要问:
“现在看到的地方,与以前某个地方在外观上像不像?”
但室内场景中大量柜体、墙面和家具可能高度重复,某些区域又缺乏纹理。仅靠 appearance retrieval,真正的回环可能没有进入候选集合。
Functional-SLAM 因此从在线功能图中提取具有结构信息的 functional graphlets,例如:
cabinet — drawer — handle
相比单个 object label,这类“对象 + 交互部件 + 功能关系”的组合能够提供另一种地点辨识线索,用来补充纯视觉检索得到的 loop candidates。
需要特别强调的是:
Functional topology 并不直接替代几何回环。
功能图负责“补候选”,新增候选仍然需要通过统一的 geometric verification;验证通过之后,才进入 pose-graph optimization。
因此,Functional-SLAM 最终形成的是一个双向闭环:
SLAM → 支撑 Functional Graph 的在线维护
Functional Graph → 反向增强 SLAM 的回环与定位
7. 实验:功能图在线之后,定位和建图效果如何?
论文在 SceneFun3D 和 FunGraph3D 场景上评估在线功能场景图构建,并与多种 SLAM 和 Functional Scene Graph 方法进行比较。
实验重点回答两个问题:
功能信息真正进入 SLAM 后,会不会拖累甚至破坏定位?
以及:
不用 GT pose,而是在真实 SLAM 位姿持续变化的情况下,细粒度功能节点和关系还能不能稳定建出来?
7.1 定位性能:功能拓扑确实可以“反哺”SLAM

图4 Functional-SLAM 的定位性能。
在论文的定位评测中,完整 Functional-SLAM 的 ATE 为 16.5 mm,面向更高运行效率的 RT 配置为 17.6 mm,而几何 backbone MASt3R-SLAM 为 19.7 mm。
对应地,相比 MASt3R-SLAM:
- Ours:ATE 降低 16.3%
- Ours w/ RT:ATE 降低 10.8%
7.2 功能场景图构建:真正困难的是 estimated pose

图5 Functional Scene Graph 构建性能与真实场景结果。
这一组实验尤其能体现“为什么不是直接使用已有离线 Functional Scene Graph 方法”。
在 GT pose 条件下,OpenFunGraph、FunGraph、KeySG 等方法可以建立在稳定相机位姿上进行节点与关系构建。
但论文进一步把这些方法放到 Ours pose 条件下,也就是使用真实 SLAM 估计位姿进行比较。此时,位姿漂移、小尺度节点错位和跨帧关联问题真正进入了评测。
以 FunGraph3D 为例,在 Ours pose 下,Functional-SLAM 的 Overall Nodes 达到:
- R@3 = 64.55
- R@10 = 67.14
而同一 pose setting 下,离线对比方法中较好的结果为 39.44 / 42.25。
对于要求节点和关系同时正确的 Overall Triplets,Functional-SLAM 达到:
- R@5 = 41.10
- R@10 = 43.84
同条件下较好的离线基线为 27.05 / 27.74。
即使采用 RT 配置,FunGraph3D 上的 Overall Nodes 仍达到 54.23 / 55.63,Overall Triplets 达到 35.27 / 38.01。
运行效率方面,表中离线 Functional Graph baseline 约为 0.02–0.06 FPS,而 Functional-SLAM 完整版本为 0.38 FPS,RT 配置为 0.92 FPS。
8. 从“地图”走向“操作”:真实机器人 Demo

图6 在线 Functional 3D Scene Graph 与机器人交互示例。
最终,一张 Functional Scene Graph 的价值并不在于图本身画得多复杂,而在于机器人能否真正利用其中的交互信息。
论文展示了多种真实机器人任务,例如:
- Manipulating the kettle, grasp to lift
- Open the drawer on the right
- Open the lid of the jar
- Pick up the cup
这些任务有一个共同点:
真正决定动作能否执行的,不只是“地图里有没有这个 object”,而是能否找到正确的 interaction unit,并知道它与目标对象之间的 functional relation。
例如:
- “拿起水壶”最终要落到正确的 kettle handle;
- “打开右侧抽屉”要落到对应 drawer 的 handle;
- “打开罐子”要找到 lid 及其正确功能关系。
这也再次回到文章最开始的问题:
认识一个物体,并不等于理解如何与它交互。
🎬 Functional-SLAM Demo
【公众号排版时在此处插入 Functional-SLAM Demo 视频】
**推荐排版方式:**将原始 Demo MP4 上传至微信公众号后台素材库,并在此处直接插入视频,使读者可在推文中点击播放;同时保留 Bilibili 作为备用入口。
9. 总结:从 Semantic Mapping 到 Interaction-Aware Mapping
回过头来看,Functional-SLAM 最值得关注的地方,并不是简单地在 Semantic SLAM 上再增加几个标签。
它真正试图推动的是地图角色的变化。
几何 SLAM 主要回答:
Where am I?
Semantic / Object SLAM 进一步回答:
What is there?
而面向真实机器人交互,还需要继续回答:
What can I interact with, and how?
为此,Functional-SLAM 做了三件关键的事:
- 将 Functional Scene Graph 从离线后处理结果推进为持续、递归维护的 online SLAM state;
- 通过 Anchor-Keyframe Geometry、功能上下文关联和多帧时序证据,在位姿持续变化的条件下稳定维护细粒度节点和功能关系;
- 进一步利用 Functional Topology 补充视觉回环候选,使“SLAM 支撑功能图”和“功能图增强 SLAM”形成双向协同。
当然,这项工作也并不意味着 Semantic / Object SLAM 被“取代”。
恰恰相反,功能理解建立在可靠的几何和语义感知之上。Functional-SLAM 更像是在追问一个下一阶段的问题:
当机器人已经能够知道“这是什么”以后,地图还能不能进一步告诉它“这个世界该怎么用”?
从这个角度看,Functional-SLAM 所尝试构建的并不只是一张更丰富的 3D 地图,而是一种更加接近机器人长期空间记忆的结构化表示——其中不仅包含“哪里有什么”,也开始包含哪些东西可以交互,以及它们如何发生作用。
如果说过去的 SLAM 主要帮助机器人看见并定位世界,那么面向具身智能的下一步,也许就是让地图进一步帮助机器人理解并作用于世界。
10. 论文 / 代码 / Demo
感兴趣的读者欢迎关注、使用和讨论:
- Paper: https://arxiv.org/abs/2609.07497
- Code: https://github.com/Hbelief1998/Functional-SLAM-CoRL_2026
- Demo: https://www.bilibili.com/video/BV13xbw6NECB/
- Dataset: https://huggingface.co/datasets/xg-123/Functional-SLAM-dataset
如果这项工作对你的研究有所帮助,欢迎 Star GitHub,并引用我们的工作。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)