【机器人】DualMap 具身导航 | 动态场景 开放词汇语义建图 导航系统

DualMap 是一个在线的开放词汇语义映射系统,使得机器人能够通过自然语言查询动态变化的环境 中理解和导航

双地图导航,结合全局抽象地图进行高层次候选选择,以及局部具体地图进行精确目标定位,有效管理和更新环境中的动态变化。

论文地址:DualMap: Online Open-Vocabulary Semantic Mapping for Natural Language Navigation in Dynamic Changing Scenes

代码地址:https://github.com/Eku127/DualMap

一、框架思路流程

DualMap的框架思路流程,如下图所示:

通过"具体地图"和"抽象地图"的双地图,进行目标导航:

  1. 输入需要查询物体的描述,例如"去找红色水杯"
  2. 在抽象地图中,对每个锚的语义列表中进行查询匹配,选出最可能包含目标的位置
  3. 导航到可能位置后,在局部的具体地图中进一步搜索目标
  4. 若找到,即完成导航
  5. 若未找到,则触发抽象地图更新,
  6. 将局部具体地图中新的观测进行更新
  7. 多次尝试,用新地图重新做候选检索,进入第 2 步,直到找到目标或超过最大尝试次数

1.1 Concrete Map (具体地图) 构建流程

  1. 输入RGB-D数据、机器人的Pose信息
  2. 使用YOLO + FastSAM,进行物体对象检测
  3. 生成一组带有类别标签 、语义特征 和点云的观测物体对象
  4. 将新观测的物体与地图中已有的对象集进行匹配对比(特征相似度+点云重叠匹配 );如果匹配成功****更新该对象的点云与 CLIP 特征,如果匹配失败则插入为新对象
  5. 生成当前最新的细粒度 3D语义地图,也就是具体地图;包含场景中所有静态/动态物体的点云与语义信息

1.2 Abstract Map (抽象地图)构建流程:

  1. 在具体地图的基础上,来生成抽象地图
  2. 检测出静态物体,用 CLIP将各对象特征与"静态家具"模板匹配,高于阈值的标为"锚"(桌子、柜子、沙发等)
  3. 关联易动物体,将体积小、可移动物体的特征与附近锚的平面位置做几何/高度判断,挂到相应静态锚的语义列表上
  4. 将全局场景点云 投影到鸟瞰网格,生成二值 Occupancy Map(墙、柱等固定障碍)
  5. 生成抽象地图,仅保留静态锚的位置+语义+其上易动物体特征,以及全局占据格

二、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 帧)未更新时,启动稳定性评估

  • 检查标准:对象需要满足两个条件才能通过稳定性检查:

    1. 累积的观测数量超过一个设定的阈值。

    2. 在对象的观测列表中,最频繁出现的类别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博客

【机器人】复现 ECoT 具身思维链推理-CSDN博客

【机器人】复现 SG-Nav 具身导航 | 零样本对象导航的 在线3D场景图提示-CSDN博客

【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025 -CSDN博客

【机器人】复现 Embodied-Reasoner 具身推理 | 具身任务 深度推理模型 多模态场景 长远决策 多轮互动_embodied reasoner-CSDN博客