オーディオ・アニマトロニクスのためのRTコンポーネント
オーディオ・アニマトロニクスのためのRTコンポーネント
概要
本研究ではエンターテインメント用途のロボットの中でも,音とアニメーションが同調することで人を楽しませる,いわゆる「オーディオ・アニマトロニクス」で利用するためのRTコンポーネント群を作成する.
作成したRTコンポーネントは「スクリプト制御」「音声合成」「サーボ制御」の3つから構成され,組み合わせによってスクリプトに沿ったオーディオ・アニマトロニクスの発話とアニメーションの処理を簡単に実装できる.
ソースコード
スクリプト制御
https://github.com/thorikawa/rtc-script-reader
サーボ制御
https://github.com/thorikawa/rtc-johnny-five
音声合成
https://github.com/thorikawa/rtc-rospeex
システム構成
- 音声はPCと接続されたスピーカーから出力される
- 現バージョンではロボット2台(arduino2機)までをPCと接続し、コントロールできる
- PCと接続するArduinoにはFirmata(StandardFirmata)が書き込まれていることを前提とする。FirmataはPCからArduinoをコントロールするために定義されたプロトコルで、書き込むためのスケッチはArduino IDEのexampleに含まれている。
- 動かすサーボモーターの制御ポートは、各ArduinoのD3ピンに接続されていることを前提とする
動作環境
以下の環境で動作確認を行っているが、基本的にはpythonのRTCが動作するPC・Arduino互換のマイコン・PWMサーボモーターがあれば動作はするはずである。
- Mac OS X 10.11.1
- Python 2.7.10_2
- OpenRTM-aist 1.1
- Arduino UNO, Intel Edison Kit for Arduino
- マイクロサーボ SG92R
依存ソフトウェア
以下のpythonモジュールがPCにインストールされていることを前提とします。pipなどでインストールしてください。
- pyfirmata
- numpy
- pyaudio
- requests
使用方法
1. 設定ファイルの準備
各ロボットに喋らせたい内容を定義した設定ファイルを準備する。設定ファイルはjsonフォーマットで、サンプルは以下の通り。
喋る内容のオブジェクトの配列となっており、各オブジェクトの"robot_id"は現状1と2のみ対応している。すでに録音済の音声ファイルがある場合は"audio_url"でURLを、テキストから音声合成した場合は"text"で文字列を指定する。
--- [ { "robot_id": 1, "audio_url": "http://localhost:8080/audio/m1.wav" }, { "robot_id": 2, "text": "こんにちは、僕はロボット2号だよ" } ] ---
2. RTCコンポーネントの起動
2.1 スクリプト制御コンポーネント
$ python script_reader.py
2.2 サーボ制御コンポーネント
ロボットの数だけコンポーネントを登録する必要があるため、登録名が重複しないように-fオプションで異なる設定ファイルを指定することに注意。
# ロボット1台目
$ python firmata_servo.py -f rtc0.conf
# ロボット2台目
$ python firmata_servo.py -f rtc1.conf
2.3 音声合成コンポーネント
$ python rospeex.py
3. RTCコンポーネントの接続
以下のように接続する。
4. RTCコンポーネントの設定
script_reader(スクリプト制御コンポーネント)の設定で、1で準備した設定ファイルのパスを指定する。
firmata_servo(サーボ制御コンポーネント)の設定で、Arduinoが接続されたCOMポートのパスを指定する。
コメント
もうちょっとマニュアルが欲しいです.特に使用するハードウェア,依存ソフトウェア等の環境について,メモ程度で良いのであると助かります.
ご意見ありがとうございます!いくつかドキュメントを追加させて頂きました。