|
|
@@ -37,7 +37,7 @@
|
|
|
|
|
|
- 首先需要在你的ROS2主控系统上安装好micro_ros_agent软件包,因为我们这款ROS2离线语音交互模块需要通过micro_ros_agent才能与ROS2进行通信。这里要根据micro_ros_agent不同的安装方式,则与ROS2系统建立连接的命令也不一样。
|
|
|
|
|
|
-- ### 1.配置语音模块的rules规则文件
|
|
|
+### 1.配置语音模块的rules规则文件
|
|
|
|
|
|
- 由于语音模块使用串口与系统进行通信,这样设备挂载点为dev目录下的ttyACM0或者ttyACM1等,可能每次名称会变化。为了保证每次设备名称都一样,我们就需要为语音模块设置一个别名,这样每次就可以使用固定的命令与语音模块建立连接了。
|
|
|
|
|
|
@@ -45,13 +45,13 @@
|
|
|
|
|
|
- `./voiceModuleSetup.sh`
|
|
|
|
|
|
-- ### 2使用.如果使用源码编译安装的micro_ros_agent
|
|
|
+### 2使用.如果使用源码编译安装的micro_ros_agent
|
|
|
|
|
|
- 使用如下命令与ROS2离线语音交互模块建立连接:
|
|
|
|
|
|
- `ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/voiceModule`
|
|
|
|
|
|
-- ### 3.使用ros2 launch建立连接
|
|
|
+### 3.使用ros2 launch建立连接
|
|
|
- 如果在本地ros2系统中成功安装了micro_ros_agent,那就可以将offline_voice_module目录复制一份到自己的ROS2工作区的src目录内,然后在自己ros2工作区根目录下使用使用如下命令就可以编译该软件包:
|
|
|
|
|
|
- `colcon build --packages-select offline_voice_module`
|
|
|
@@ -60,15 +60,15 @@
|
|
|
|
|
|
- `ros2 launch offline_voice_module offline_voice_module.launch.py`
|
|
|
|
|
|
-- ### 4.如果使用snap方式安装的micro_ros_agent
|
|
|
+### 4.如果使用snap方式安装的micro_ros_agent
|
|
|
|
|
|
- 使用如下命令与ROS2离线语音交互模块建立连接:
|
|
|
|
|
|
- `micro-ros-agent serial --dev /dev/voiceModule`
|
|
|
|
|
|
-- ### 5.查看语音模块输出话题列表
|
|
|
-- 当使用以上命令建立连接后,可以使用如下命令查看话题列表:
|
|
|
-- `ros2 topic list`
|
|
|
+### 5.查看语音模块输出话题列表
|
|
|
+- 当与语音模块建立连接后,可以使用如下命令查看话题列表:
|
|
|
+- `ros2 topic list`
|
|
|
|
|
|
- 可以看到语音模块输出以下话题列表:
|
|
|
* /voice_system/asr_cmd_topic
|
|
|
@@ -77,22 +77,22 @@
|
|
|
|
|
|
- 下面依次来介绍各话题的作用:
|
|
|
#### (1) 输出话题:/voice_system/asr_cmd_topic
|
|
|
-该话题消息类型为std_msgs/msg/Int32类型,语音模块将识别到的离线命令词ID发布到该话题上,命令词ID输出范围1~300,依次对应用户设置的要识别的300条命令。(ROS2离线语音交互模块最多可以识别300条命令)
|
|
|
+- 该话题消息类型为std_msgs/msg/Int32类型,语音模块将识别到的离线命令词ID发布到该话题上,命令词ID输出范围1~300,依次对应用户设置的要识别的300条命令。(ROS2离线语音交互模块最多可以识别300条命令)
|
|
|
|
|
|
-- #### (2) 订阅话题:/voice_system/tts_cmd_topic
|
|
|
-该话题消息类型为std_msgs/msg/Int32类型,用户可以向该话题发布int32类型消息,例如向该话题发布1,则语音模块的TTS播放对应的语音内容;发布2,则语音模块TTS播放对应的语音内容。(ROS2离线语音交互模块最多可以识别300条TTS播放内容)
|
|
|
+#### (2) 订阅话题:/voice_system/tts_cmd_topic
|
|
|
+- 该话题消息类型为std_msgs/msg/Int32类型,用户可以向该话题发布int32类型消息,例如向该话题发布1,则语音模块的TTS播放对应的语音内容;发布2,则语音模块TTS播放对应的语音内容。(ROS2离线语音交互模块最多可以识别300条TTS播放内容)
|
|
|
|
|
|
- 使用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个自定义唤醒词)
|
|
|
+#### (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,具体如下所示:
|
|
|
|