c7134c25dfe642f3a467e325920.../README.md

96 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 语义推理与导航
卡片名称:办公室场景下的小车语义推理与导航
描述:基于 `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
├── 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`