今回の仕組み
今回の仕組みはRaspberry PiにNode-REDとMQTTブローカー(Beebotte)を使用して、ALMemoryを介してPepperに指示を出してアニメーション付きのセリフをしゃべらせます。
※今回の記事は、Rasberry Pi、Node-RED、MQTT、Choregrapheの知識があることを前提としています
Pepper 開発ツールChoregraphe(コレグラフ)のインストールについては以下を参照ください。
Pepper 開発ツールのインストール
Node-REDとMQTTブローカー(Beebotte)については、以下の記事等をご参照ください。
Beebotte(MQTT Broker)の設定とRaspberry Pi(Node-RED)の設定
Beebotte の WEBコンソールを利用した MQTTメッセージの送受信テスト
Pepperの作業
Pepper側の処理は、Pepperの開発ツールChoregraphe(コレグラフ)を使います。
MQTTのやりとりに使うライブラリ「Paho」の読み込み処理から追加して Python ボックスを使用してPepper用 MQTT Publisher/Subscripterボックスを作る必要があります。
今回は以下のMQTT Adapterボックスを利用します。
まずはダウンロードしておきます。
https://github.com/yacchin1205/pepper-web-boxes
MQTT Adapterボックスの読み込み
-
GitHubからZIPダウンロードもしくはcloneしたディレクトリのうち、以下のディレクトリを選択します。
- ディレクトリ:web-boxes
- ファイルの種類:ボックスライブラリのディレクトリ(Directories)
-
[ボックスライブラリ]に web-boxes ボックスライブラリが表示されます。
MQTT Adapterボックスの配置
-
web-boxes ボックスライブラリの [Network] > [MQTT Adapter]ボックスを「フローダイアグラム」にドラッグ&ドロップします。※MQTT Adapterボックスをドラッグ&ドロップすると自動的にpaho というモジュールがプロジェクト中にインポートされる
-
MQTT Adapterボックスの設定ダイアログを開き、以下のパラメータを設定します。
- Host ... MQTT Brokerのホスト名(例:mqtt.beebotte.com)
- Port ... MQTT Brokerのポート番号(例:1883)
- Username ... MQTT Brokerの接続用ユーザ名
- Password ... MQTT Brokerの接続用パスワード
- Key-Topic Bindings ... ALMemoryのキーとMQTTのトピックとの紐づけ(例:MQTT/Fsathon3:Ras/good)
-
MQTTアダプターボックスは起点となる[onStart]からつなげて、起動時にすぐMQTTがつながるようにします。
-
「フローダイアグラム」の左側にある+[ALMemoryからのイベントの追加]を選択し、[メモリイベントの選択]画面の左下[新しいキー追加]をクリックして、ALMemoryとMQTT の Key-Topic Bindings(例:MQTT/Fsathon3:Ras/good)の[MQTT/Fsathon3]を相互接続されるように追加します。
-
[フローダイアグラム]に [Animated Say] ボックスをドラッグ&ドロップし、以下を設定します。
- Voice shaping (%) : 100%
- Speed (%): 100%
- Text : congratulations
- Speaking movement mode : disabled
- Animation : Stand/Gestures/Hey_2
- ロボット上の変の自動更新:チェックあり
-
バーチャルロボットでメニューの「再生」をクリックして、PepperとNode-REDをつないでみます。
※[ログビューア]のログに「Connedted with result code 0」が表示されたら、無事つながっているようです。 -
最後はNode-RED側からメッセージを送信後にPepper がジェスチャーしながらしゃべります。
※動作されない場合は、[Animated Say] ボックスに到達されているか[ログビューア]を確認してください。