qrb_ros_audio_service 示例应用是一个提供核心音频功能的 ROS 包,作为 ROS 生态系统中音频能力(当前支持播放和录制)的主要接口。
注意有关更多信息,请参见 qrb_ros_audio_service GitHub 仓库。
qrb_ros_audio_service 流水线
图:qrb_ros_audio_service 流水线
qrb_ros_audio_service 流水线中使用的 ROS 节点/服务
| ROS 节点 | 说明 |
|---|---|
/audio_service | 该节点作为 qrb_ros_audio_service 的主要入口点,通过 ROS 服务请求提供音频播放和录制能力。 |
| ROS 服务 | 类型 | 说明 |
|---|---|---|
/audio_server | qrb_ros_audio_service_msgs::srv::AudioRequest | 允许 ROS 应用发送用于音频播放和录制的服务请求。 |
qrb_ros_audio_service 流水线中使用的 ROS topic
| ROS topic | 类型 | 说明 |
|---|---|---|
/qrb_audiodata | qrb_ros_audio_service_msgs::msg::AudioData | 用于流式音频播放和录制。发布录制的实时原始音频数据,或允许订阅该节点的原始数据以进行播放。你可以使用 --topic_name 参数修改 topic 名称。支持为播放和录制操作使用单独的 topic。 |
前提条件
你已根据 设置运行示例应用的环境 设置设备。开箱即用运行 qrb_ros_audio_service
试一试
试一试
1
设置环境
在设备上启动三个命令行终端并运行以下命令。
ssh root@[ip-addr]
SSH Session
export HOME=/home
source /usr/share/qirp-setup.sh
2
运行 audio 服务
在第一个 SSH 终端中,使用
ros2 launch 命令运行 audio 服务包。SSH Session
ros2 launch qrb_ros_audio_service audio_service.launch.py
3
检查 pipewire 的默认设备
- 验证默认扬声器和听筒麦克风的状态。
SSH Session
wpctl statusAudio ├─ Devices: │ ├─ Sinks: │ * 42. pal sink speaker ll [vol: 1.00] │ 44. pal sink speaker_db [vol: 1.00] │ 46. pal sink headset_ll [vol: 1.00] │ 47. pal sink headset_db [vol: 1.00] ├─ Sources: │ * 48. pal source handset mic [vol: 1.00] │ 50. pal source headset mic [vol: 1.00] - 如果未设置默认扬声器或听筒麦克风,请使用
wpctl set-default <device-num>设置默认设备。SSH Session# Set the default speaker wpctl set-default 42 # Set the default handset mic wpctl set-default 48
4
运行测试用例
在第三个 SSH 终端中,根据下表使用 ROS 命令或 Python 脚本运行测试用例。
注意对于所有分步测试用例,
stream_handle 表示当命令为 create 时由 audio 服务创建的流。audio 服务创建流后,命令在第三个 SSH 终端中打印 stream_handle 的值。- 对于 ROS 命令,你会看到以下输出:
stream_handle=<***> - 对于 Python 脚本,你会看到以下输出:
command create success 1 stream_handle <***>.使用以下命令下载 Python 脚本:wget https://raw.githubusercontent.com/qualcomm-qrb-ros/qrb_ros_audio_service/main/tests/audio_service_test.py
| 用例名称 | 说明 | ROS 命令/Python 脚本 |
|---|---|---|
| 一键播放 | 用一键命令启动播放。扬声器输出音频。支持 WAV 文件格式。将音乐文件放在设备路径上,例如 /tmp/music.wav。 |
|
| 分步播放 | 用分步命令启动播放。扬声器输出音频。支持 WAV 文件格式。 |
|
| 流式播放 | 创建并启动流式播放。它从 loopback topic 订阅音频 PCM 数据。音频数据应使用 qrb_ros_audio_service_msgs::msg::AudioData 填充。 |
启动分步流式播放: 启动分步流式播放: |
| 分步录制 | 使用默认输入设备用分步命令进行录制,并将音频数据写入 /tmp/rec.wav 文件。 |
|
| 发布录制数据 |
|
将录制数据发布到 topic(默认 topic 名称是 “ qrb_audiodata”,但可以使用 topic_name 指定):/qrb_audiodata。同时将其保存到文件:将录制数据发布到 topic(默认 topic 名称是 “ qrb_audiodata”,但可以使用 --topic_name 指定):/qrb_audiodata。同时将其保存到文件: |

