「応用事例」に投稿した「preMSMを使った厨房ベルトコンベア動作制御の試み」に記載したように、下膳システムや盛付システムの起動は、Amazon Echoに「アレクサ、食器下げて」や「アレクサ、天ぷら揚げて」と声をかけることで行っています。実際の音声による下膳ロボットの起動動作の動画を「本学モバイルマニュピレータにセンサモジュール搭載 」に載せています。ここに、その方法をまとめます。

1. 概要

図1は、盛付システムのベルトコンベア起動の説明図です。Amazon Echo(Alexa)に「アレクサ、天ぷら揚げて」と声をかけると、以下のようにシステムが起動します。

1) Amazon Echo(Alexa)が「天ぷら揚げて」という声による命令をを捉えて、自分の繋がっているLAN内のスマートデバイスに「天ぷら」というデバイスがないかを探します。

2) Floor Manager上で動作しているNode-REDが「天ぷら」というデバイスにあたりますので、Floor ManagerのNode-REDが返答します。

3) Amazon Echo(Alexa)は、「揚げて」を解釈して信号を”H”レベルにします。

4) これにより、Floor ManagerのNode-REDが起動します。

図1.盛付システムのベルトコンベア起動システム図

この投稿記事では、Floor Manager上で動作しているNode-REDを使って、Alexa(Amazon Echo)に「食器下げて」と「天ぷら揚げて」を認識させる方法を説明します。

2. Alexa(Amazon Echo)の設定

Amazon Echoを使用するLAN環境下で電源投入し、購入時の説明に従って設定します。「アレクサ、音楽をかけて」と言うと、音楽をかけてくれるところまでまず設定を済ませてください。

3. Node-REDの設定

Node-RED上での設定について説明します。

3-1. ノード amazon-echoの追加

amazon-echoをNode-RED上で扱うために、ノードamazon-echoを追加します。

3-1-1. パレットの管理選択

Node-REDを立上げ、右上の三本線のボタンをクリックします。すると図3-1のようなメニューが出ます。

この中から「パレットの管理」を選択します。

      

図3-1 「パレットの管理」の選択

3-1-2. ノードAmazon echoの追加

パレットの管理をクリックすると、ノードの管理画面が出てきます。2つのタブがあります。「現在のノード」と「ノードを追加」のタブです。

「現在のノード」は、現在追加されているノードの一覧です。今回は、Amazon Echoのノードを追加したいので、「ノードを追加」のタブを選択します。

「ノードを追加」のタブでは、「ノードを検索」の欄にカーソルがありますので、そのまま、amazon-echo と入力してください。

すると、図3-2のように合致したノードだけが表示されます。そのなかから、「node-red-contrib-amazon-echo」を追加します。文字の横にある四角い箱をクリックして追加します。

四角い箱をクリックすると、「node-red-contrib-amazon-echo」の説明のHPが開きます。確認して閉じます。

次に右下の「ノードを追加」と書かれた四角い箱をクリックします。上から追加するか中止するかのタブが出てきますので、追加を選択します。

図3-2 ノードamazon-echoの検索

3-2. ノードの配置と設定

3-2-1. ノードAmazon echoの配置

追加が完了すると左側のノードのリスト画面に、図3-3のように、amazon-echo-hubとamazon-echo-deviceのノードが現れます。

この2つのノードをエディター画面に配置します。

amazon-echo-hubは、Alexa(Amazon Echo)との接続を行うノードです。一つだけおきます。

amazon-echo-deviceは、「食器」や「天ぷら」などのようにデバイスを記述するノードです。デバイスの数だけおき、amazon-echo-hubと接続します。

図3-3 ノードamazon-echoの配置

3-2-2.  amazon-echo-hubの設定

amazon-echo-hubの配置が終わったら、クリックして設定を行います。

amazon-echo-hubをクリックすると、図3-4のような設定画面が現れます。設定する箇所は、「Port」のみです。使用されていないポート番号を設定します。ここでは、50000を設定しています。設定したら完了のボタンを押します。

図3-4 amazon-echo-hubの設定画面

3-2-3. amazon-echo-deviceの設定

amazon-echo-deviceの配置が終わったら、クリックして設定を行います。Alexa(Amazon Echo)に音声で認識させたいデバイス名を記載します。

amazon-echo-deviceをクリックすると、図3-5のように設定画面が現れます。設定するのはNameの部分だけです。ここでは、「食器」と書いています。日本語が設定されていたら、漢字でも認識されます。記載したら、完了を押します。

図3-5 amazon-echo-deviceの設定例(食器)

図3-6は、「天ぷら」設定している設定画面です。

図3-6 amazon-echo-deviceの設定例(天ぷら)

3-2-4. 起動後の設定

amazon-echo-deviceのノードの出力から、Alexaが音声を認識して、それぞれのデバイスに信号が届いた以降の動作を記述していきます。

図3-7は、templateノードを配置して、msg.payloadにjsonを記述しています。Alexaによりデバイスが起動したら、このjsonを発行するようにしている例です。
図3-3のように、このtemplateの後、Web Socketでjsonをそれぞれ他の2つのRaspberry Piに送っています。その一つが、図1のベルトコンベア用のGateWayです。もう一つは、下膳用のロボットのPCに送っています。

図3-7 起動後の動作の記述例

以上で、Node-REDの設定は終了です。

4. Amazon EchoとNode-REDのポート番号の整合

Amazon Echoは、自分が接続されているLANの中で、ポート 80番を使用して信号のやり取りをおこなっています。そのため、Alexaは音声を聞き、デバイス名と認識した名称のデバイスが存在するかどうかを調べるために、LANの中のポート80番に一斉にデバイス名を投げて反応があるかどうか調べています。

Node-REDは、「3-2-2.  amazon-echo-hubの設定」で設定したポート番号で信号を待ち受けています。先の例では、ポート 50000番です。したがって、このままでは、Amazon Echoは、Node-REDをうまく認識できません。そこで、Node-REDを起動しているFloor Manager側で、ポート80番とポート50000番を繋いであげる処理を行い、ポート番号を整合させます。

そのために、redirというコマンドを使用します(Linux系の場合です)。

具体的なコマンドは以下のようになります。

$ redir –lport=80 –cport=50000

図4にRaspberryPiでの設定例を示します。コマンド入力後、起動されっぱなし(プロンプトが返ってこない)になりますが、問題ありません。この状態が正常です。

図4 redirコマンドの実行例

※ 上記コマンドを打って、redirコマンドがないとエラーになった場合は、インストールする必要があります。

以下のように、インストールしてください。

$ sudo apt install redir

5. Amazon Echoでのデバイス認識確認

以上で、設定完了です。

うまくいけばこの時点で、「アレクサ、食器下げて」というと「はい」とAlexaが返事してくれます。

以下、うまく認識されない場合に対応した内容を参考に挙げておきます。

5-1. 命令がうまく認識されない場合(1)

注意点は、デバイス名のあとに何と言うかです。「食器を片付けて」といってもうまくいかないです。デバイスをON/OFFするような指示が良いようです。

「食器下げて」「天ぷら揚げて」のような。工夫してみてください。例えば、「アレクサ、(デバイス名)オン」など。

5-2. 命令がうまく認識されない場合(2)

「アレクサ、天ぷらあげて」と言ったときに、Alexaから「すみません。「天ぷら」というデバイスから応答がありません」という返事が来る場合があります。

しばらく待ってからやり直す。Node-REDでデプロイし直すなどでうまくいくようです。

5-3. 命令がうまく認識されない場合(3)

「アレクサ、天ぷらあげて」と言ったときに、Alexaから「すみません。『天ぷら』というデバイスが認識できません」という返事が来た場合は、Alexaがデバイスをうまく認識できていません。以下を確認してみてください。

1) redirコマンドが走っているか確認する

2) redirコマンドのポート番号(–cport)とNode-REDの設定したポート番号(3-2-2.  amazon-echo-hubの設定)が合っているかどうか確認

3) Amazon AlexaのHPで認識できているか確認する

a) Amazon AlexaのHP(https://alexa.amazon.co.jp/)に接続する

b) 左側のメニューから「スマートホーム」を選択する

c) さらに左側のメニューから「デバイス」を選択する

d) リストに設定したデバイス名が認識されているか確認する
図5は、「食器」と「天ぷら」のデバイスが認識されている画面の例です。

e) 認識されていない場合、検索ボタンを押して検索をかけてみる

図5 Amazon Alexaでのデバイスの認識例