I played music from a USB speaker using the ROS package (gx_sound_player). There were some points that were stuck before playing, so I will summarize it in this article together with the confirmation procedure that was actually carried out.
The content of this article is based on the following articles.
Introduction of gx_sound_player and ROS package release procedure
USB speaker: For example, here Ubuntu16.04 + ROS kinetic environment Test music file (.wav): For example, I will download it from here.
1. 1. Connect the USB speaker to your PC
2. Check that the sound device is visible
$ ls -l /dev/snd/*
⇒ You should see pcmC1D0p etc.
(Hereafter, it is assumed that pcmC1D0p is the device file of the USB speaker)
3. 3. Play WAV files with aplay
$ aplay -D hw:1,0 musicbox.wav
⇒ OK if you can play music from the USB speaker
If you cannot play music from the USB speaker, review the procedure.
Install the gx-sound package.
$ sudo apt install ros-kinetic-gx-sound
1. 1. Start roscore
$ source ~/catkin_ws/devel/setup.sh
$ roscore
2.gx-sound node start
$ roslaunch gx_sound_player sound_player.launch device_name:="hw:1,0"
3. 3. WAV playback
$ rosrun rulo sound-test.py
⇒ OK if you can play music from the USB speaker
Music files/home/ubuntu/Downloads/musicbox.Store in wav
sound-test.py
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import actionlib
import os
import rospy
from gx_sound_msgs.msg import SoundRequestAction, SoundRequestGoal
def main():
rospy.init_node('sound_request_client_node')
client = actionlib.SimpleActionClient('/gx_sound_player/sound_player/sound_request', SoundRequestAction)
client.wait_for_server()
rospy.loginfo("connected to actionlib server")
now = rospy.Time.now()
#Audio3 after 0 seconds.play wav
#Music files/home/ubuntu/Downloads/musicbox.Store in wav
goal1 = SoundRequestGoal(stamp=now + rospy.Duration(0.0), file="/home/ubuntu/Downloads/musicbox.wav")
rospy.loginfo("send request")
client.send_goal(goal1)
rospy.loginfo("send complete")
#client.wait_for_result(rospy.Duration.from_sec(5.0))
if __name__ == '__main__':
main()
OK if you send a silent file The silent file will be downloaded from here.
gx-sound package installation
$ sudo apt install ros-kinetic-gx-sound
ros-kinetic-gx-sound not found
I updated the package list as follows and solved it.
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-get update
--
I solved it by converting the format with ffmpeg.
48000Hz audio file, 16bit LittleEndian,How to convert to stereo
$ sudo apt-get install ffmpeg
$ ffmpeg -i input.wav -ar 48000 -format S16_LE -channel 2 output.wav
Introduction of gx_sound_player and ROS package release procedure Free Wave, MP3
Recommended Posts