本项目是一个基于 ROS 1 的智能服务机器人仿真系统,面向展馆导览、定点讲解、语音交互与人脸识别等服务机器人场景。系统在 Gazebo 仿真环境中完成机器人建模、定位导航、语音识别、语音播报、人脸识别与 AR 码辅助定位等功能,实现机器人根据语音指令前往指定目标点,并在到达后完成播报、识别与交互任务。
- 睿抗机器人开发者大赛 2024 国家级二等奖、全省第一名
- 支持机器人在 Gazebo 仿真环境中的定点导航
- 支持基于语音指令的机器人动作控制
- 支持展馆/目标点语音播报与讲解
- 支持基于 TensorFlow/Keras 的人脸识别
- 支持 AR 码识别与相对位姿解析
- 支持多目标点任务调度与导航控制
- 支持 ROS Topic、Service、Action 方式的多模块通信
- ROS 1
- Gazebo
- move_base
- AMCL
- rf2o
- ar_track_alvar
- Vosk
- 讯飞语音 API
- TensorFlow / Keras
- OpenCV
- Anaconda
- C++ / Python / CMake
系统主要由以下模块组成:
| 模块 | 功能说明 |
|---|---|
| 机器人模型模块 | 使用 URDF/Xacro 描述机器人结构,并在 Gazebo 中加载仿真模型 |
| 定位导航模块 | 基于 AMCL、rf2o 与 move_base 实现机器人定位和路径规划 |
| 多目标点导航模块 | 通过 Action Client 向 move_base 发送目标点,实现连续导航任务 |
| 语音识别模块 | 使用讯飞 API 与 Vosk 模型完成语音转文字 |
| 语音播报模块 | 根据导航状态和任务流程播放对应讲解音频 |
| 人脸识别模块 | 使用 TensorFlow/Keras 训练并加载人脸识别模型 |
| AR 码定位模块 | 使用 ar_track_alvar 解析 AR 码相对位姿,用于对齐和辅助定位 |
bobac/
├── README.md
├── input.wav
├── action
├── yin/ # 语音播报音频资源
└── src/
├── bobac3_description/ # 机器人模型与描述文件
├── bobac3_navigation/ # 导航相关 launch、地图与参数配置
├── bobac3_slam/ # SLAM 建图相关配置
├── nav_goal/ # 多目标点导航与语音控制逻辑
├── robot_voice/ # 讯飞语音识别与语音合成模块
├── face/ # 人脸识别模块
├── ar_pose/ # AR 码位姿解析
├── ar_track_alvar/ # AR 码识别依赖模块
├── secondary_localization/ # 基于 AR 码的二次定位
├── relative_move/ # 相对运动控制服务
├── amcl/ # AMCL 定位模块
├── robot_pose_ekf/ # 多传感器位姿融合
└── navigation/ # ROS Navigation 相关功能包
系统使用 ROS 1 的 move_base 作为导航框架,通过全局路径规划与局部路径规划完成机器人在地图中的自主移动。
导航流程:
- 加载 Gazebo 仿真环境和机器人模型
- 启动地图、定位与导航参数
- 使用 AMCL / rf2o 获取机器人位姿
- 通过
move_baseAction 发送目标点 - 机器人根据代价地图完成路径规划和避障移动
系统支持两种语音识别方式:
- 使用讯飞 API 完成在线语音识别
- 使用 Vosk 模型完成离线语音识别
识别后的文本通过 ROS Topic 发布,控制节点根据关键词解析用户意图,例如前往指定展馆、开始导览、执行动作等。
人脸识别模块运行在 Anaconda 环境下,使用 TensorFlow/Keras 构建识别模型,并结合 OpenCV 完成摄像头图像读取、人脸检测、图像预处理和身份分类。
主要流程:
- 采集人脸图像数据
- 对图像进行裁剪、缩放和归一化处理
- 使用 TensorFlow/Keras 训练识别模型
- 在任务触发后加载模型进行实时识别
- 将识别结果发布给 ROS 控制节点
系统使用 ar_track_alvar 识别 AR 码,并计算机器人与 AR 码之间的相对位姿。该功能可用于目标点对齐、近距离定位和特定任务触发,提高机器人在局部场景中的定位精度。
nav_goal 模块负责整合导航、语音和视觉任务。机器人可以根据语音指令切换任务状态,依次完成目标点导航、语音播报、人脸识别和 AR 码对齐等流程。
git clone https://github.com/Platinum1154/bobac.git
cd bobaccatkin_make
source devel/setup.bash如果使用 zsh:
source devel/setup.zshroslaunch nav_goal test1.launchrosrun nav_goal nav_multigoal_noderosrun nav_goal audio.pyroslaunch secondary_localization track.launchrosrun face face_recognition.py建议按照以下顺序启动系统:
- 启动 ROS Master
- 启动 Gazebo 仿真环境
- 启动地图、定位和导航模块
- 启动多目标点导航节点
- 启动语音识别或语音播报模块
- 根据任务需要启动人脸识别和 AR 码定位模块
- 展馆导览机器人
- 智能服务机器人仿真
- ROS 导航算法验证
- 语音控制机器人实验
- 人脸识别与机器人交互实验
- AR 码辅助定位实验
- 基于 ROS 1 搭建完整机器人仿真系统,实现导航、语音、视觉多模块融合
- 使用 move_base 完成 Gazebo 环境下的定点导航与任务调度
- 使用 AMCL 与 rf2o 进行机器人定位,提高仿真导航稳定性
- 使用 ar_track_alvar 获取 AR 码相对位姿,实现近距离对齐与辅助定位
- 使用讯飞 API 与 Vosk 模型实现在线/离线语音识别
- 使用 TensorFlow/Keras 完成人脸识别,并与机器人任务流程联动
- 通过 ROS Topic、Service、Action 解耦导航、语音和视觉模块,便于扩展与调试
建议环境:
- Ubuntu 18.04 / 20.04
- ROS Melodic / Noetic
- Gazebo
- Python 3
- Anaconda
- TensorFlow
- Keras
- OpenCV
- Vosk
- move_base
- ar_track_alvar
不同 ROS 版本下依赖包名称可能存在差异,请根据本地环境调整安装命令。
- 优化 README 中的启动流程和参数说明
- 增加系统运行截图或演示视频
- 增加 launch 文件说明和节点通信图
- 补充人脸识别模型训练流程
- 增加语音指令词表和任务状态机说明
- 增加 License,明确项目开源协议
本项目暂未声明 License。
Platinum1154