Skip to content

Platinum1154/bobac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

融合语音交互与视觉导航的智能服务机器人仿真系统设计

本项目是一个基于 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 相关功能包

核心实现

1. 定点导航

系统使用 ROS 1 的 move_base 作为导航框架,通过全局路径规划与局部路径规划完成机器人在地图中的自主移动。

导航流程:

  1. 加载 Gazebo 仿真环境和机器人模型
  2. 启动地图、定位与导航参数
  3. 使用 AMCL / rf2o 获取机器人位姿
  4. 通过 move_base Action 发送目标点
  5. 机器人根据代价地图完成路径规划和避障移动

2. 语音交互

系统支持两种语音识别方式:

  • 使用讯飞 API 完成在线语音识别
  • 使用 Vosk 模型完成离线语音识别

识别后的文本通过 ROS Topic 发布,控制节点根据关键词解析用户意图,例如前往指定展馆、开始导览、执行动作等。

3. 人脸识别

人脸识别模块运行在 Anaconda 环境下,使用 TensorFlow/Keras 构建识别模型,并结合 OpenCV 完成摄像头图像读取、人脸检测、图像预处理和身份分类。

主要流程:

  1. 采集人脸图像数据
  2. 对图像进行裁剪、缩放和归一化处理
  3. 使用 TensorFlow/Keras 训练识别模型
  4. 在任务触发后加载模型进行实时识别
  5. 将识别结果发布给 ROS 控制节点

4. AR 码辅助定位

系统使用 ar_track_alvar 识别 AR 码,并计算机器人与 AR 码之间的相对位姿。该功能可用于目标点对齐、近距离定位和特定任务触发,提高机器人在局部场景中的定位精度。

5. 多模块任务调度

nav_goal 模块负责整合导航、语音和视觉任务。机器人可以根据语音指令切换任务状态,依次完成目标点导航、语音播报、人脸识别和 AR 码对齐等流程。

快速开始

1. 克隆仓库

git clone https://github.com/Platinum1154/bobac.git
cd bobac

2. 编译工作空间

catkin_make
source devel/setup.bash

如果使用 zsh:

source devel/setup.zsh

3. 启动导航仿真

roslaunch nav_goal test1.launch

4. 启动多目标点导航节点

rosrun nav_goal nav_multigoal_node

5. 启动语音识别节点

rosrun nav_goal audio.py

6. 启动 AR 码定位

roslaunch secondary_localization track.launch

7. 启动人脸识别

rosrun face face_recognition.py

运行说明

建议按照以下顺序启动系统:

  1. 启动 ROS Master
  2. 启动 Gazebo 仿真环境
  3. 启动地图、定位和导航模块
  4. 启动多目标点导航节点
  5. 启动语音识别或语音播报模块
  6. 根据任务需要启动人脸识别和 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

本项目暂未声明 License。

Author

Platinum1154

About

基于 ROS 1、Gazebo、move_base、语音识别与人脸识别的智能服务机器人仿真系统,支持定点导航、语音交互、AR 码定位和视觉识别任务。

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors