LoginSignup
0
0

More than 3 years have passed since last update.

ROSパッケージ(gx_sound_player)を使ってUSBスピーカーから音楽再生する

Posted at

目的

ROSパッケージ(gx_sound_player)を使ってUSBスピーカーから音楽再生しました。
再生するまでに何点か詰まった箇所がありましたので、実際に実施した確認手順とともに本記事にまとめさせて頂きます。

尚、本記事の内容は以下の記事をベースにしております。

gx_sound_player の紹介と ROS パッケージのリリース手順

準備

USBスピーカー :例えばこちら
Ubuntu16.04 + ROS kinetic環境
テスト用音楽ファイル(.wav) :例えばこちらからダウンロードさせて頂く

step1. USBスピーカーから音楽再生できることを確認

1.USBスピーカーをPCに接続する

2.サウンドデバイスがみえることをチェック
  $ ls -l /dev/snd/*
   ⇒ pcmC1D0p などがみえるはず
  (以降、pcmC1D0p がUSBスピーカーのデバイスファイルであることを前提)

3.aplayでWAVファイルを再生
  $ aplay -D hw:1,0 musicbox.wav
   ⇒ USBスピーカーから音楽再生できればOK

USBスピーカーから音楽再生できなければ手順を見直します。

step2. gx-soundパッケージでWAVファイル再生できることをテスト

gx-soundパッケージをインストールする。

$ sudo apt install ros-kinetic-gx-sound
1.roscore起動
$ source ~/catkin_ws/devel/setup.sh
$ roscore

2.gx-soundノード起動
$ roslaunch gx_sound_player sound_player.launch device_name:="hw:1,0"

3.WAV再生
$ rosrun rulo sound-test.py
 ⇒ USBスピーカーから音楽再生できればOK
   音楽ファイルを/home/ubuntu/Downloads/musicbox.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()

    # 0秒後に audio3.wav を再生
    # 音楽ファイルを/home/ubuntu/Downloads/musicbox.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()

音声停止方法

無音ファイルをsendすればOK
無音ファイルはこちらからダウンロードさせて頂きます。

Error対策

gx-soundパッケージが見つからない状況になった場合

gx-soundパッケージインストール
$ sudo apt install ros-kinetic-gx-sound
ros-kinetic-gx-sound not found

以下の通りパッケージリストを更新して解決しました。

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

--

音声フォーマットエラーになった場合

ffpmegでフォーマット変換すれば解決しました。

音声ファイルを48000Hz, 16bit LittleEndian, stereoに変換する方法
$ sudo apt-get install ffmpeg
$ ffmpeg -i input.wav -ar 48000 -format S16_LE -channel 2 output.wav

参考

gx_sound_player の紹介と ROS パッケージのリリース手順
フリーWave,MP3

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0