DualMap 是一个在线的开放词汇语义映射系统,使得机器人能够通过自然语言查询在动态变化的环境中理解和导航
双地图导航,结合全局抽象地图进行高层次候选选择,以及局部具体地图进行精确目标定位,有效管理和更新环境中的动态变化。
代码地址:https://github.com/Eku127/DualMap
一、框架思路流程
DualMap的框架思路流程,如下图所示:
通过“具体地图”和“抽象地图”的双地图,进行目标导航:
- 输入需要查询物体的描述,例如“去找红色水杯”
- 在抽象地图中,对每个锚的语义列表中进行查询匹配,选出最可能包含目标的位置
- 导航到可能位置后,在局部的具体地图中进一步搜索目标
- 若找到,即完成导航
- 若未找到,则触发抽象地图更新,
- 将局部具体地图中新的观测进行更新
- 多次尝试,用新地图重新做候选检索,进入第 2 步,直到找到目标或超过最大尝试次数
1.1 Concrete Map (具体地图) 构建流程
- 输入RGB-D数据、机器人的Pose信息
- 使用YOLO + FastSAM,进行物体对象检测
- 生成一组带有类别标签 、语义特征 和点云的观测物体对象
- 将新观测的物体与地图中已有的对象集进行匹配对比(特征相似度+点云重叠匹配);如果匹配成功更新该对象的点云与 CLIP 特征,如果匹配失败则插入为新对象
- 生成当前最新的细粒度 3D语义地图,也就是具体地图;包含场景中所有静态/动态物体的点云与语义信息
1.2 Abstract Map (抽象地图)构建流程:
- 在具体地图的基础上,来生成抽象地图
- 检测出静态物体,用 CLIP将各对象特征与“静态家具”模板匹配,高于阈值的标为“锚”(桌子、柜子、沙发等)
- 关联易动物体,将体积小、可移动物体的特征与附近锚的平面位置做几何/高度判断,挂到相应静态锚的语义列表上
- 将全局场景点云 投影到鸟瞰网格,生成二值 Occupancy Map(墙、柱等固定障碍)
- 生成抽象地图,仅保留静态锚的位置+语义+其上易动物体特征,以及全局占据格
二、DualMap的创新点
2.1 双图结构:精细感知 × 高效导航
Concrete Map 具体地图(三维):
在线增量构建,记录“长得什么样、在哪儿、语义是谁”的全套信息:每个物体的 3D点云、类别标签、以及 CLIP文本+图像混合特征(0.7 图像 + 0.3 文本加权)。
通过“匹配–累积–检查”循环,既能吸纳新出现的物体,也能剔除偶发误检物体。
Abstract Map 抽象地图(二维):
只挑“不会轻易挪动”的家具当锚(Anchor),丢掉其余几何细节,仅保留它们的位置和语义;
将小物件的语义特征“挂到”相应家具下(比如杯子→桌子),但不存它们的点云;
把全局场景点云在鸟瞰平面做网格分桶,生成离散的占据格(occupancy grid),支持快速全局路径规划。
2.2 混合开集分割模型:兼顾速度与覆盖
闭集检测(YOLOv8):快速定位预定义类别的物体边框;
开放集分割(FastSAM/MobileSAM):补充 YOLO 看不到的“新类别”或未包含在训练集里的物体;
融合策略:保留所有 YOLO 框里的分割结果,同时加入 FastSAM 在 “框外” 发现的物体,用色彩直方图判断哪块先贴,避免重复或遗漏。
作用:既能保证速度(YOLO 30 FPS),也能“开箱即用”地识别千奇百怪的新物体。
2.3 动态抽象图更新:闭环导航
初次导航:在 Abstract Map 上,根据用户语言(“找红色水杯”)在每个锚的语义列表里打分,选出最可能放杯子的家具(比如餐桌)。
局部搜索:机器人边走边用 Concrete Map 精细感知,到了目标家具附近再仔细找;
若没找到,就把局部新观测到的物体(例如之前遗漏的一堆杯子)抽象到 Abstract Map,对哪个家具下挂了哪些物件进行补充,然后再选下一个最优家具做第二次尝试。
2.4 轻量级的对象状态检查
传统开放词汇建图系统(如 HOV-SG)依赖 3D 物体合并操作处理分割碎片,需消耗大量计算资源(Replica 场景中每帧处理耗时 42 秒)
优化维度 | 传统方法(HOV-SG) | DualMap 状态检查 |
---|---|---|
空间操作 | 3D 点云体素级合并(耗时 42 秒 / 帧) | 2D 类别分布统计(0.16 秒 / 帧) |
数据依赖 | 全局地图几何信息 | 局部对象观测列表 |
并行性 | 串行 3D 处理 | 可并行对象级检查 |
DualMap 提出的轻量级对象状态检查通过两大创新突破效率瓶颈:
- 计算范式转变:将全局 3D 几何操作(如体素级合并)转化为局部语义分析(如类别分布统计)
- 错误修正前置:在观测阶段实时过滤噪声,避免错误累积导致的地图退化
- 动态适应性:针对动态环境中物体状态变化(如部分遮挡、位置移动)设计增量更新机制
通过两种主要机制实现:稳定性和分裂检测
稳定性检查 目的是过滤掉那些观察不足或可能由噪声引起的对象,从而提高地图的可靠性。
示例:会议室场景中,误检为 "椅子" 的阴影区域若在 15 帧内未被重新观测,且 "椅子" 类别占比仅 30%,则被删除
触发条件:当对象超过T帧(默认 15 帧)未更新时,启动稳定性评估
检查标准:对象需要满足两个条件才能通过稳定性检查:
累积的观测数量超过一个设定的阈值。
在对象的观测列表中,最频繁出现的类别ID至少占总观测数的三分之二。
结果处理:如果对象未通过稳定性检查,它将被视为不稳定对象并从地图中移除。
分裂检测 解决欠分割问题,即多个相邻对象被错误地合并为一个对象的情况。
- 欠分割典型案例:茶几上的遥控器与杂志被错误合并为单一对象
- 触发条件:当在连续帧的相同时间戳上出现具有不同类别ID的观测时,系统会触发分裂检测。
- 检测过程:系统会分析对象观测列表中的类别ID分布。如果发现不同类别ID的观测在多个帧中持续共存,就会认为发生了欠分割。
- 分裂操作:将对象的观测列表按类别ID进行分割,并为每个类别创建新的对象。这有助于保留小对象并提高场景的保真度。
三、实验验证与效果
实验在一台配备NVIDIA RTX 4090 GPU和Intel i7-12700KF CPU的机器上进行。
检测器的选择:
闭环检测采用YOLOv8l world模型 ,能够快速准确地检测预定义类别的对象。
为了支持开放词汇分割,使用了FastSAM 模型。
FastSAM能够检测YOLO模型未涵盖的对象类别,从而实现全面的对象检测。
特征嵌入模型:
论文中使用MobileCLIP-S2 进行特征嵌入。
MobileCLIP是一个轻量级的图像-文本嵌入模型,适用于移动设备和机器人应用。选择该模型可以确保在嵌入特征时保持较高的计算效率。
在HM3D数据集中,目标导航的成功率对比:
在HM3D数据集的静态场景中,DualMap的导航成功率最高,平均成功率达到70.5%。
在动态场景中,DualMap在锚点内重定位和跨锚点重定位的成功率分别为64.8%和60.3%。
在真实世界中DualMap目标导航的成功率
在ScanNet scene001100上,语义分割结果的定性比较:
红色箭头突出显示语义上不准确的预测,而蓝色箭头表示无意义的分割,表明预测存在噪声。
目标导航示例效果:
导航示例,如下图所示:
分享完成~
相关文章推荐:
UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025-CSDN博客
【机器人】具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation-CSDN博客
【机器人】复现 UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025-CSDN博客
【机器人】复现 WMNav 具身导航 | 将VLM集成到世界模型中-CSDN博客
【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示-CSDN博客
【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025 -CSDN博客
【机器人】复现 Embodied-Reasoner 具身推理 | 具身任务 深度推理模型 多模态场景 长远决策 多轮互动_embodied reasoner-CSDN博客