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