c7134c25dfe642f3a467e325920.../README.md

4.0 KiB
Raw Permalink Blame History

语义推理与导航

卡片名称:办公室场景下的小车语义推理与导航

描述:基于 VLMRRT*Nav2 和视觉语言模型的语义导航项目,把仿真导航、目标检测、语义记忆库和自然语言导航串成一条完整链路。

这是一个基于 ROS 2 HumbleGazebo SimNav2 和视觉语言模型的语义导航项目。系统把仿真导航、目标检测、语义记忆库和自然语言导航串成一条完整链路:机器人先在环境中自主移动并识别目标物体,把高置信度的语义结果保存为 JSON 记忆库;随后用户输入自然语言目标,系统从记忆库中检索最匹配的语义对象,并调用 Nav2 完成导航。

Semantic Navigation Preview

项目能力

本项目包含以下核心能力:

  • 使用 TurtleBot3 + Gazebo Sim 构建室内办公场景导航仿真
  • 使用自定义 RRT* 全局规划器接入 Nav2
  • 使用 VLM 目标检测节点进行语义目标标注
  • 基于 RGB-D 与 TF 估计物体在地图中的位置并生成语义记忆库
  • 将检测结果保存为 JSON 文件,支持后续复用
  • 接收自然语言输入,匹配语义目标并导航到目标附近的可行接近点

整体流程

项目运行分为两个阶段:

  1. 语义记忆构建阶段
    机器人在仿真环境中移动,检测节点从相机图像中识别目标物体,并把标签、置信度和目标坐标写入 JSON 语义记忆库。

  2. 语义导航阶段
    用户输入自然语言目标,例如 water dispensersofarefrigerator,系统将语义文本映射到已保存的目标条目,选取目标附近的可达点,并通过 Nav2 发送导航目标。

核心模块

1. 导航与仿真

  • src/TurtleBot-RRT-Star/:自定义 RRT* 全局规划器,包名为 nav2_rrtstar_planner
  • src/turtlebot3_simulations/TurtleBot3 仿真环境、世界文件和启动资源
  • gzsim_run.sh:一键启动 Gazebo Sim 与 websocket 服务(内含 setup_model_cache.sh
  • setup_model_cache.sh / VENDOR_MODELS.mdvendor 共享权重与下载、同步说明

2. 语义感知

  • src/vlm_perception_pkg/:语义检测节点
  • 入口命令:ros2 run vlm_perception_pkg vlm_detection
  • 功能:读取机器人相机图像,识别候选目标,结合深度和 TF 写入语义记忆库

3. 语义导航

  • src/vlm_nav_pkg/:自然语言语义导航节点
  • 入口命令:ros2 run vlm_nav_pkg semantic_nav
  • 功能:加载 JSON 语义记忆库,匹配语义标签,选择可行导航点并发送目标给 Nav2

4. 语义记忆库

示例语义结果文件位于:

  • src/vlm_nav_pkg/config/example_object_detection_vlm.json
  • src/vlm_nav_pkg/config/test_vlm.json

语义记忆库保存的是目标标签、置信度和地图坐标。系统会优先保留高分结果,以减少低质量检测对导航的影响。

仓库结构

.
├── README.md
├── doc.md
├── gzsim_run.sh
├── requirements.txt
├── requirements-v100.txt
├── assets/
└── src/
    ├── TurtleBot-RRT-Star/
    ├── turtlebot3_simulations/
    ├── vlm_nav_pkg/
    ├── vlm_perception_pkg/
    └── websocket.gzlaunch

各目录作用如下:

  • doc.md:完整课程说明,包含带截图的分步骤操作
  • assets/:运行截图和展示图片
  • src/TurtleBot-RRT-Star/RRT* 全局规划插件与 Nav2 参数
  • src/vlm_perception_pkg/:检测与语义标注相关代码
  • src/vlm_nav_pkg/:语义导航相关代码与配置文件
  • gzsim_run.sh:仿真与 websocket 启动脚本
  • requirements*.txtPython 依赖列表

相关资源