【机器人】复现 DualMap 具身导航 | 动态场景 | 双地图机制

【机器人】复现 DualMap 具身导航 | 动态场景 | 双地图机制

本文复现DualMap ,它支持机器人通过自然语言查询动态变化的环境中理解和导航

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

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

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

示例效果:

1、下载工程代码

执行下面的命令,拉取github的代码:

git clone https://github.com/Eku127/DualMap.git cd DualMap/3rdparty/ git clone https://github.com/apple/ml-mobileclip.git cd ml-mobileclip && git checkout 1140b8d

打印信息:

$ git clone   https://github.com/Eku127/DualMap.git正克隆到 'DualMap'...
remote: Enumerating objects: 493, done.
remote: Counting objects: 100% (63/63), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 493 (delta 43), reused 33 (delta 33), pack-reused 430 (from 2)
接收对象中: 100% (493/493), 86.42 MiB | 14.36 MiB/s, 完成.
处理 delta 中: 100% (165/165), 完成.
.....

$ cd ml-mobileclip && git checkout 1140b8d
注意:正在切换到 '1140b8d'。

您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以在切换
回一个分支时,丢弃在此状态下所做的提交而不对分支造成影响。

如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在 switch 命令
中添加参数 -c 来实现(现在或稍后)。例如:

  git switch -c <新分支名>

或者撤销此操作:

  git switch -

通过将配置变量 advice.detachedHead 设置为 false 来关闭此建议

HEAD 目前位于 1140b8d MobileCLIP iOS App.

2、创建Conda环境

通过environment.yml配置文件来创建Conda环境,名字为dualmap_env,python版本为3.10;

environment.yml配置文件,如下所示:

name: dualmap_env channels: - nvidia - pytorch - conda-forge - defaults dependencies: - python=3.10 - cmake - pip - faiss-cpu=1.9.0 - mkl - blas=1.0=mkl - pip: - tyro - open_clip_torch - wandb - h5py - openai - hydra-core - distinctipy - ultralytics==8.3.103 - dill - supervision==0.25.1 - open3d - imageio - natsort - kornia - rerun-sdk==0.22.1 - record3d==1.4.1 - pyliblzfse - pypng - tabulate - pympler - plyfile - "numpy<2.0" - git+https://github.com/ultralytics/CLIP.git 

执行下面命令进行创建:

conda env create -f environment.yml

等待相关的依赖库安装完成,再进入dualmap_env环境:

conda activate dualmap_env

3、安装torch和flash-attn

我们指定安装torch版本为2.5.1+cu118,执行下面命令进行安装:

pip install torch==2.5.1+cu118 torchvision==0.20.1+cu118 --index-url \ https://download.pytorch.org/whl/cu118

等待安装完成~

Successfully installed nvidia-cublas-cu11-11.11.3.6 nvidia-cuda-cupti-cu11-11.8.87 nvidia-cuda-nvrtc-cu11-11.8.89 nvidia-cuda-runtime-cu11-11.8.89 nvidia-cudnn-cu11-9.1.0.70 nvidia-cufft-cu11-10.9.0.58 nvidia-curand-cu11-10.3.0.86 nvidia-cusolver-cu11-11.4.1.48 nvidia-cusparse-cu11-11.7.5.86 nvidia-nccl-cu11-2.21.5 nvidia-nvtx-cu11-11.8.86 sympy-1.13.1 torch-2.5.1+cu118 torchvision-0.20.1+cu118 triton-3.1.0
(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap$ 

再安装flash-attn版本为2.5.9.post1

pip install flash-attn==2.5.9.post1 --no-deps 

4、安装MobileCLIP

执行下面命令进行安装:

cd 3rdparty/mobileclip pip install -e . --no-deps cd ../..

打印信息:

(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap$ 
(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap$ cd 3rdparty/mobileclip
(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap/3rdparty/mobileclip$ pip install -e . --no-deps
Obtaining file:///home/lgp/2025_project/DualMap/3rdparty/mobileclip
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Building wheels for collected packages: mobileclip
  Building editable for mobileclip (pyproject.toml) ... done
  Created wheel for mobileclip: filename=mobileclip-0.1.0-0.editable-py3-none-any.whl size=5659 sha256=d77226ca58cd1636890ac92db7d575e83673fc29796d9f2e2ba70f4af05d268c
  Stored in directory: /tmp/pip-ephem-wheel-cache-1jfolsbp/wheels/26/a9/56/6bc77673ac3574dff1d51b7f0096f3f85b8a8ff6f8ff6d73d3
Successfully built mobileclip
Installing collected packages: mobileclip
Successfully installed mobileclip-0.1.0

(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap/3rdparty/mobileclip$ 
(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap/3rdparty/mobileclip$ cd ../..

(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap$

5、下载Replica数据集

首先创建一个目录dataset,用于存放数据集,然后进行目录

mkdir dataset && cd dataset

执行下面命令下载Replica数据集:

wget https://cvg-data.inf.ethz.ch/nice-slam/data/Replica.zip

得到的Replica.zip大约12.5G左右,然后解压文件后的目录结构为:

dataset/

├── Replica/

│ ├── office0/

│ │ ├── results/ # RGB-D frames (depth + RGB)

│ │ └── traj.txt # Trajectory file

│ ├── office1/

│ ├── ...

│ └── room2/

6、构建地图

执行下面命令进行模型推理:

python -m applications.runner_dataset

首次运行时会联网下载一些权重,包括:open_clip_model.safetensors、yolov8l-world.pt、mobile_sam.pt、FastSAM-s.pt

运行的打印信息:

(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap$ python -m applications.runner_dataset
[2025-11-16 20:53:21,457] [INFO] [real_accelerator.py:203:get_accelerator] Setting ds_accelerator to cuda (auto detect)
UserWarning: WARNING: failed to get cudart_version from onnxruntime build info.
2025-11-16 20:53:22,051 - WARNING - [Runner Dataset]
============================================================
Log Path                       : /home/lgp/2025_project/DualMap/output/map_results/log/log_20251116_205322.log
Output Dir                     : ./output/map_results
Map Save Dir                   : ./output/map_results/replica_office1/map
Class List Path                : ./config/class_list/gpt_indoor_general.txt
Use FastSAM for OV?            : True
Running Concrete Map Only?     : True
Save Concrete Map?             : True
Save Global Map?               : False
Use Preload Global Map?        : False
Use Rerun for Visualization?   : True
============================================================
FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers

Processing: 100%|█████████████████████████████████████████████| 200/200 [00:42<00:00,  4.65it/s]
Done

看到可视化界面,在逐渐构建详细3D环境信息:

运行过程:

最终完成构建:

如果想换其他场景,可以修改config/base_config.yaml文件

具体是修改scene_id变量,Replica数据集支持:office0、office1、office2、office3、room0、room1等

# ============================================================ # DATASET CONFIG # ============================================================ ## Replica Dataset dataset_name: replica scene_id: office1 dataset_path: dataset/Replica dataset_conf_path: config/data_config/dataset/replica.yaml dataset_gt_path: dataset/Replica-Dataset/Replica_original # ============================================================ # OUTPUT CONFIG # ============================================================ # output directory output_path: ./output/map_results # ============================================================ # LOGGING CONFIG # ============================================================ # logging config logging_config: ./config/support_config/logging_config.yaml

其他场景的运行效果1:

其他场景的运行效果2:

7、模型推理——导航查找物体

然后我们需要基于构建好的地图信息,来导航查找物体;

python -m applications.offline_local_map_query

打印信息:

(dualmap_env) lgp@lgp-MS-7E07:~/2025_project/DualMap$ python -m applications.offline_local_map_query
Loading classes id --> colors from: ./config/class_list/gpt_indoor_general_id_colors.json
Loading classes id --> names  from: ./config/class_list/gpt_indoor_general.txt
Loading saved obj results from: ./output/map_results/replica_room0/map
Loading viewpoint from: ./output/map_results/replica_room0/map/viewpoint.json
Successfully loaded 58 objects
Loading CLIP model
[2025-11-16 21:42:16,868][root][INFO] - Parsing model identifier. Schema: None, Identifier: MobileCLIP-S2
[2025-11-16 21:42:16,868][root][INFO] - Loaded built-in MobileCLIP-S2 model config.
[2025-11-16 21:42:17,485][httpx][INFO] - HTTP Request: HEAD https://hf-mirror.com/apple/MobileCLIP-S2-OpenCLIP/resolve/main/open_clip_model.safetensors "HTTP/1.1 302 Found"
[2025-11-16 21:42:17,488][root][INFO] - Instantiating model architecture: CustomTextCLIP
[2025-11-16 21:42:18,065][root][INFO] - Loading full pretrained weights from: /home/lgp/.cache/huggingface/hub/models--apple--MobileCLIP-S2-OpenCLIP/snapshots/8e8a808316aeb7c24d0400e1cf8f74b6937832aa/open_clip_model.safetensors
[2025-11-16 21:42:18,115][root][INFO] - Final image preprocessing configuration set: {'size': (256, 256), 'mode': 'RGB', 'mean': (0.0, 0.0, 0.0), 'std': (1.0, 1.0, 1.0), 'interpolation': 'bilinear', 'resize_mode': 'shortest', 'fill_color': 0}
[2025-11-16 21:42:18,115][root][INFO] - Model MobileCLIP-S2 creation process complete.
/home/lgp/anaconda3/envs/dualmap_env/lib/python3.10/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
  warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)
[2025-11-16 21:42:18,535][root][INFO] - Parsing tokenizer identifier. Schema: None, Identifier: MobileCLIP-S2
[2025-11-16 21:42:18,535][root][INFO] - Attempting to load config from built-in: MobileCLIP-S2
[2025-11-16 21:42:18,535][root][INFO] - Using default SimpleTokenizer.
Done initializing CLIP model.
Obj Map length: 58

        Keybindings:
        Q - Quit the application
        R - Display the point cloud with RGB colors
        C - Display the point cloud with semantic colors
        F - Enter a query to find top similarity objects
        H - Display this help message
        N - Highlight objects based on previous query results
        M - Colored objects based on previous query results
        S - Save the current viewpoint

        Press the corresponding key to perform the action.

看到可视化界面:

点击可视化界面,按下C键,查看三维点云的可视化:

点击可视化界面,按下F键,输入查找目标,比如:desk lamp(台灯)

Enter your query: desk lamp
Top 5 similar objects:
1. No. 17 lamp: 0.546

能看到找到了:

也可以输入中文的,点击可视化界面,按下F键,输入查找目标,比如:花 

Enter your query: 花 
Top 5 similar objects:
1. No. 35 unknown: 0.465

能看到找到了:

分享完成~

Read more

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】

🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 1. Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 2. Visual Studio 安装和管理 GitHub Copilot 3. Visual Studio 使用 GitHub Copilot 扩展 4. Visual Studio 使用 GitHub Copilot 聊天 5. Visual Studio 使用 GitHub Copilot 协助调试 6. Visual Studio 使用 IntelliCode AI 辅助代码开发 7. Visual Studio 玩转 IntelliCode AI辅助开发

Llama-3.2-3B新手教程:3步搭建你的AI写作助手

Llama-3.2-3B新手教程:3步搭建你的AI写作助手 1. 为什么选Llama-3.2-3B做写作助手 你是不是也遇到过这些情况:写周报卡壳半小时、给客户写方案反复删改、想发条朋友圈却憋不出一句像样的话?别急,这次不用等灵感,一个轻量又聪明的AI写作助手已经 ready——Llama-3.2-3B。 它不是动辄几十GB的大块头,而是一个仅30亿参数、却在多语言对话和文本生成任务中表现亮眼的“小而强”模型。由Meta官方发布,经过指令微调(SFT)和人类反馈强化学习(RLHF)双重优化,它更懂怎么听懂你、怎么帮上忙,而不是自说自话。 更重要的是,它不挑设备:一台8GB内存的笔记本就能跑起来;不设门槛:不用配环境、不装CUDA、不编译源码;不绕弯路:点几下就进对话框,输入一句话,立刻开始帮你写。 这不是实验室里的Demo,而是真正能放进你日常写作流里的工具——写邮件、列提纲、润色文案、生成产品描述、甚至写小红书爆款标题,它都能接得住、写得顺、

AMD显卡终极兼容指南:llama.cpp Vulkan后端快速解决方案

AMD显卡终极兼容指南:llama.cpp Vulkan后端快速解决方案 【免费下载链接】llama.cppPort of Facebook's LLaMA model in C/C++ 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 你是否在AMD显卡上运行llama.cpp时遇到过Vulkan初始化失败或推理速度异常的问题?本文为你提供一套完整的AMD显卡兼容性解决方案,让你轻松解决llama.cpp在AMD设备上的各种疑难杂症。通过本指南,你将掌握从驱动优化到性能调优的全套技巧,让大语言模型在AMD显卡上流畅运行。 AMD显卡兼容性问题深度解析 AMD显卡用户在使用llama.cpp的Vulkan后端时,主要面临三大挑战: 驱动版本不匹配:不同世代的AMD显卡对Vulkan API的支持程度存在差异,特别是RDNA架构的RX 6000/7000系列。 内存管理冲突:AMD的显存分配策略与llama.cpp的预期存在偏差,导致模型加载失败。 着色器编译异常:特定驱动版本在编译SPIR-V着色器时会产生无效

Vscode新手必看:GitHub Copilot从安装到实战的5个高效用法

Vscode新手必看:GitHub Copilot从安装到实战的5个高效用法 最近和几位刚入行的朋友聊天,发现他们虽然装了Vscode,也听说过GitHub Copilot的大名,但真正用起来的却不多。要么是觉得配置麻烦,要么是打开后只会傻傻地等它自动补全,完全没发挥出这个“AI结对程序员”的威力。这让我想起自己刚开始用Copilot那会儿,也是摸索了好一阵子才找到感觉。今天,我就把自己从安装到深度使用过程中,那些真正提升效率的实战心得整理出来,希望能帮你绕过那些坑,快速把Copilot变成你的开发利器。 GitHub Copilot远不止是一个高级的代码补全工具。当你真正理解它的工作模式,并学会与之高效“对话”时,它能在代码生成、逻辑解释、问题调试乃至学习新框架等多个维度,显著改变你的编程体验。这篇文章不会重复那些官网都有的基础操作,而是聚焦于五个经过实战检验的高效用法,让你从“会用”进阶到“精通”。 1. 环境准备与深度配置:不止是安装插件 很多教程把安装Copilot描述为“点一下按钮”那么简单,但要想获得流畅稳定的体验,一些前置准备和深度配置至关重要。这就像给赛车加油