# 语义推理与导航 卡片名称:办公室场景下的小车语义推理与导航 描述:基于 `VLM`、`RRT*`、`Nav2` 和视觉语言模型的语义导航项目,把仿真导航、目标检测、语义记忆库和自然语言导航串成一条完整链路。 这是一个基于 `ROS 2 Humble`、`Gazebo Sim`、`Nav2` 和视觉语言模型的语义导航项目。系统把仿真导航、目标检测、语义记忆库和自然语言导航串成一条完整链路:机器人先在环境中自主移动并识别目标物体,把高置信度的语义结果保存为 JSON 记忆库;随后用户输入自然语言目标,系统从记忆库中检索最匹配的语义对象,并调用 Nav2 完成导航。 ![Semantic Navigation Preview](assets/picture20.png) ## 项目能力 本项目包含以下核心能力: - 使用 `TurtleBot3 + Gazebo Sim` 构建室内办公场景导航仿真 - 使用自定义 `RRT*` 全局规划器接入 Nav2 - 使用 `VLM` 目标检测节点进行语义目标标注 - 基于 RGB-D 与 TF 估计物体在地图中的位置并生成语义记忆库 - 将检测结果保存为 JSON 文件,支持后续复用 - 接收自然语言输入,匹配语义目标并导航到目标附近的可行接近点 ## 整体流程 项目运行分为两个阶段: 1. 语义记忆构建阶段 机器人在仿真环境中移动,检测节点从相机图像中识别目标物体,并把标签、置信度和目标坐标写入 JSON 语义记忆库。 2. 语义导航阶段 用户输入自然语言目标,例如 `water dispenser`、`sofa`、`refrigerator`,系统将语义文本映射到已保存的目标条目,选取目标附近的可达点,并通过 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.md`:vendor 共享权重与下载、同步说明 ### 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` 语义记忆库保存的是目标标签、置信度和地图坐标。系统会优先保留高分结果,以减少低质量检测对导航的影响。 ## 仓库结构 ```text . ├── README.md ├── doc.md ├── gzsim_run.sh ├── bootstrap_ros2_conda_workspace.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*.txt`:Python 依赖列表 ## 相关资源 - 详细操作文档:[doc.md](doc.md) - 语义记忆示例:[src/vlm_nav_pkg/config/example_object_detection_vlm.json](src/vlm_nav_pkg/config/example_object_detection_vlm.json) - 更优测试样例:[src/vlm_nav_pkg/config/test_vlm.json](src/vlm_nav_pkg/config/test_vlm.json) - RRT* 参数文件:`src/TurtleBot-RRT-Star/nav2_params.yaml`