浏览代码

更新Readme.md,增加了关于offline_voice_module软件包的说明和使用方式

corvin_zhang 4 周之前
父节点
当前提交
e157965852
共有 1 个文件被更改,包括 56 次插入37 次删除
  1. 56 37
      README.md

+ 56 - 37
README.md

@@ -1,86 +1,105 @@
 
-# 《ros2_offline_voice_module代码仓库介绍》
+# **【ros2_offline_voice_module代码仓库介绍】**
 
 一款内置有micro_ros的ROS2离线语音交互模块,用户可以自定义5个唤醒词,自定义300条离线命令词识别,自定义300条语音合成,同时支持10米远识别距离,抗噪音干扰能力强,识别响应时间小于100ms,性价比超高,下面对代码仓库各目录作用介绍:
 
-## **1.code目录**
+## **1. code目录**
 
-该目录下为用户可以自由修改的语音代码ROS2_Offline_Voice_Module_Code.hd,该代码需要在天问Block软件中进行修改,该软件目前只能在windows系统下安装,语音代码修改比较简单,代码都是使用模块化编程,直接拖拉就可以修改代码。用户可以自由编辑修改,然后将代码编译下载到语音模块中。
+- 该目录下为用户可以自由修改的语音代码ROS2_Offline_Voice_Module_Code.hd,该代码需要在天问Block软件中进行修改,该软件目前只能在windows系统下安装,语音代码修改比较简单,代码都是使用模块化编程,直接拖拉就可以修改代码。用户可以自由编辑修改,然后将代码编译下载到语音模块中。
 
-## **2.doc目录**
+## **2. doc目录**
 
-该目录存放ROS2离线语音交互模块的相关文档。
+- 该目录存放ROS2离线语音交互模块的相关文档。
 
-## **3.firmware目录**
+## **3. firmware目录**
 
-该目录存放ROS2离线语音交互模块的micro_ros固件文件,在使用代码仓库中代码时,确保语音交互模块的固件为最新版本的。
+- 该目录存放ROS2离线语音交互模块的micro_ros固件文件,在使用代码仓库中代码时,确保语音交互模块的固件为最新版本的。
 
-## **4.rules目录**
+## **4. offline_voice_module目录**
 
-该目录存放ROS2离线语音交互模块的设备规则文件,规则文件名为:99-ROS2-Offline-Voice-Module.rules,我们通过执行voiceModuleSetup.sh脚本可以自动配置该规则文件
+- 该目录为创建好的ROS2软件包,方便用户使用ros2 launch命令来与语音模块建立连接。使用时用户只需将该目录复制到自己的ROS2工作区目录下的src目录内就可以了,然后在自己的ROS2工作区目录内,直接使用colcon build就可以编译该软件包
 
-## **5.snap目录**
+## **5. rules目录**
 
-该目录下存放有使用snap方式安装micro_ros_agent的脚本文件,用户的系统如果为ubuntu(可用snap方式安装软件的系统都可以),则可以直接执行该目录下脚本文件snap_Install_Micro_ROS_Agent.sh,就可以自动化安装配置好micro_ros_agent软件了。
+- 该目录存放ROS2离线语音交互模块的设备规则文件,规则文件名为:99-ROS2-Offline-Voice-Module.rules,我们通过执行voiceModuleSetup.sh脚本可以自动配置该规则文件。
+
+## **6. snap目录**
+
+- 该目录下存放有使用snap方式安装micro_ros_agent的脚本文件,用户的系统如果为ubuntu(可用snap方式安装软件的系统都可以),则可以直接执行该目录下脚本文件snap_Install_Micro_ROS_Agent.sh,就可以自动化安装配置好micro_ros_agent软件了。
 
 ---
 
-# <<在ROS2环境下使用方法>>
+# **【在ROS2环境下使用方法】**
 
 首先使用Type-C线连接到ROS2离线语音交互模块的对应通信接口上,然后将USB接口插到你的ROS2主控设备的USB接口上,然后就可以使用命令来建立连接使用了。
 
 ## 与ROS2系统建立连接的操作步骤
 
-首先需要在你的ROS2主控系统上安装好micro_ros_agent软件包,因为我们这款ROS2离线语音交互模块需要通过micro_ros_agent才能与ROS2进行通信。这里要根据micro_ros_agent不同的安装方式,则与ROS2系统建立连接的命令也不一样。
+- 首先需要在你的ROS2主控系统上安装好micro_ros_agent软件包,因为我们这款ROS2离线语音交互模块需要通过micro_ros_agent才能与ROS2进行通信。这里要根据micro_ros_agent不同的安装方式,则与ROS2系统建立连接的命令也不一样。
+
+- ### 1.配置语音模块的rules规则文件
+
+- 由于语音模块使用串口与系统进行通信,这样设备挂载点为dev目录下的ttyACM0或者ttyACM1等,可能每次名称会变化。为了保证每次设备名称都一样,我们就需要为语音模块设置一个别名,这样每次就可以使用固定的命令与语音模块建立连接了。
+
+- 需要注意的是,该脚本每次只需要执行一次就可以了,不需要每次使用语音模块时都执行该脚本,使用下面命令执行配置步骤:
 
-### 1.配置语音模块的rules规则文件
+- `./voiceModuleSetup.sh`
 
-由于语音模块使用串口与系统进行通信,这样设备挂载点为dev目录下的ttyACM0或者ttyACM1等,可能每次名称会变化。为了保证每次设备名称都一样,我们就需要为语音模块设置一个别名,这样每次就可以使用固定的命令与语音模块建立连接了。需要注意的是,该脚本每次只需要执行一次就可以了,不需要每次使用语音模块时都执行该脚本,使用下面命令执行配置步骤:
+- ### 2使用.如果使用源码编译安装的micro_ros_agent
 
-`./voiceModuleSetup.sh`
+- 使用如下命令与ROS2离线语音交互模块建立连接:
 
-### 2.如果使用源码编译安装micro_ros_agent
+- `ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/voiceModule`
 
-使用如下命令与ROS2离线语音交互模块建立连接:
+- ### 3.使用ros2 launch建立连接
+- 如果在本地ros2系统中成功安装了micro_ros_agent,那就可以将offline_voice_module目录复制一份到自己的ROS2工作区的src目录内,然后在自己ros2工作区根目录下使用使用如下命令就可以编译该软件包:
 
-`ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/voiceModule`
+- `colcon build --packages-select offline_voice_module`
 
-### 3.如果使用snap方式安装micro_ros_agent
+- 当成功编译完软件包后,就可以使用如下命令来与语音模块建立连接:
 
-使用如下命令与ROS2离线语音交互模块建立连接:
+- `ros2 launch offline_voice_module offline_voice_module.launch.py`
 
-`micro-ros-agent serial --dev /dev/voiceModule`
+- ### 4.如果使用snap方式安装的micro_ros_agent
 
-### 4.查看语音模块话题列表
-当使用以上命令建立连接后,可以使用如下命令查看话题列表:
-`ros2 topic list`
+- 使用如下命令与ROS2离线语音交互模块建立连接:
 
-可以看到以下话题列表:
+- `micro-ros-agent serial --dev /dev/voiceModule`
+
+- ### 5.查看语音模块输出话题列表
+- 当使用以上命令建立连接后,可以使用如下命令查看话题列表:
+- `ros2 topic list`
+
+- 可以看到语音模块输出以下话题列表:
 * /voice_system/asr_cmd_topic
 * /voice_system/tts_cmd_topic
 * /voice_system/wakeup_status_topic
 
-下面依次来介绍各话题的作用:
-#### /voice_system/asr_cmd_topic
+- 下面依次来介绍各话题的作用:
+#### (1) 输出话题:/voice_system/asr_cmd_topic
 该话题消息类型为std_msgs/msg/Int32类型,语音模块将识别到的离线命令词ID发布到该话题上,命令词ID输出范围1~300,依次对应用户设置的要识别的300条命令。(ROS2离线语音交互模块最多可以识别300条命令)
 
-#### /voice_system/tts_cmd_topic
+- #### (2) 订阅话题:/voice_system/tts_cmd_topic
 该话题消息类型为std_msgs/msg/Int32类型,用户可以向该话题发布int32类型消息,例如向该话题发布1,则语音模块的TTS播放对应的语音内容;发布2,则语音模块TTS播放对应的语音内容。(ROS2离线语音交互模块最多可以识别300条TTS播放内容)
 
-#### /voice_system/wakeup_status_topic
+- 使用ros2 topic pub命令手动往该话题中发送完整的测试命令,下面测试让语音模块播放测试语音1的命令:
+
+- `ros2 topic pub --once /voice_system/tts_cmd_topic std_msgs/msg/Int32 "{data: 1}"`
+
+- #### (3) 输出话题:/voice_system/wakeup_status_topic
 该话题消息类型为std_msgs/msg/Int32类型,语音模块将识别到的唤醒词ID发布到该话题,用户可以订阅该话题得知语音模块是否在唤醒状态,如果唤醒的话,使用哪个唤醒词唤醒的。如果话题消息内容为0,表明未在唤醒状态,如果话题消息内容为1,表面使用第一个唤醒词唤醒的语音模块。(ROS2离线语音交互模块最多可以设置5个自定义唤醒词)
 
 ---
-# <<注意事项>>
+# **【注意事项】**
 
-## 1.当使用micro_ros_agent已经与语音模块建立连接,为何使用ros2 topic list命令却看不到语音模块输出的话题列表?
+- ## 1.当使用micro_ros_agent已经与语音模块建立连接,为何使用ros2 topic list命令却看不到语音模块输出的话题列表?
 
-这是因为在你自己的主系统中(如ubuntu系统安装有ROS2完整版本的系统中,使用type-c线将语音模块连接到的系统中),在当前用户的home目录下".bashrc"文件中配置了ROS_DOMAIN_ID(取值范围0~232),例如你配置域ID为10,具体如下所示:
+- 这是因为在你自己的主系统中(如ubuntu系统安装有ROS2完整版本的系统中,使用type-c线将语音模块连接到的系统中),在当前用户的home目录下".bashrc"文件中配置了ROS_DOMAIN_ID(取值范围0~232),例如你配置域ID为10,具体如下所示:
 
-`export ROS_DOMAIN_ID=10`
+- `export ROS_DOMAIN_ID=10`
 
-由于ROS_DOMAIN_ID的功能是为了区分不同的ROS2通信网络,我们语音模块默认是没有配置ROS_DOMAIN_ID参数的,需要将您在本地配置语音模块的域ID就可以了,具体新增配置如下所示:
+- 由于ROS_DOMAIN_ID的功能是为了区分不同的ROS2通信网络,我们语音模块默认是没有配置ROS_DOMAIN_ID参数的,需要将您在本地配置语音模块的域ID就可以了,具体新增配置如下所示:
 
-`export XRCE_DOMAIN_ID_OVERRIDE=$ROS_DOMAIN_ID`
+- `export XRCE_DOMAIN_ID_OVERRIDE=$ROS_DOMAIN_ID`
 
-新增加该配置后,需要重新打开终端,然后使用命令连接语音模块即可,这样当语音模块与ROS2系统建立连接后,就可以获取到语音模块发布出来的各话题了。
+- 新增加该配置后,需要重新打开终端,然后使用命令连接语音模块即可,这样当语音模块与ROS2系统建立连接后,就可以获取到语音模块发布出来的各话题了。