対話ロボット

普通の言葉でロボットと対話する、あるいは言葉でロボットに行動を指示する。そんな未来社会に向けた研究を行っています。この対話ロボットは、Sageによる意味解析技術とHermesによる対話応答技術とDeep Learningによるシーン解析技術を用いて、ベースとなるロボットにNaoとPepperを使って構築したものでATHENAと呼びます。


対話ロボットシステムAthena

ロボット操作システムAthena2011における処理の流れを図1に示す。発話者による音声命令をGoogle Speechを用いてテキストに変換する。このテキストをSAGEで意味解析し、Genesisによって適切なAthenaコマンドに変換する。音声命令をテキスト変換し、それがAthenaの実行キーとなり、内部でSAGE解析が始まる。指示発話がGenesisによって行為と対象の語意に分類され、適当なAthenaコマンドに変換する。このコマンドは、Athena内のExegesisによってAthenaコマンドからNAO動作命令に変換され無線LANで送信し実行される。


Athenaの全体構造

図1 Athenaの全体構造


Genesisは、SAGE解析を行った結果を基に行為と対象の決定を行い、Athenaコマンドリストを生成する。行為とはロボットが行う動作の単位で、対象とは動作対象となるロボット自身のパーツで、量とはどの方向にどのくらいどの頻度で動かすのかなどの数値や副詞である。例として「右手を上げなさい」と発話者が言った場合には、「上げなさい」が行為であり、「右手を」が対象である。行為と対象・量の決定を行う上で重視したのが、指示発話の多様な表現である。意味解析を行うことで多様な表層表現を深層の意味表現に変換し、発話内の言葉の語意ごとにAthenaの動作コマンドやロボット部位や変位量に対応付けて一意的な行為を行わせる。


表層表現・語意・コマンド間の対応

図2. 表層表現・語意・コマンド間の対応


指示発話からコマンドができるまでの流れを「右手を上げて」という例を用いて図 2に示した。この例では「上げて」という動詞節がviであり、cが「Up」となる。
まずC(vi)を求め、それに対して同一または上位概念であるC(c)を探索する。探索方法は、keyを概念識別子としたハッシュによるものである(詳しくは5.5.に記述)。C(vi)は「3CE8BD」となり、C(c)が「3C0455」となる。「3C0455」が「3CE8BD」の上位概念としてEDR辞書内で存在するため、「3CE8BD」は「3C0455」に属すると考えられ「3C0455」に対応するコマンド「Up」がciとなる。結果、「上げて」という行為に対して「Up」というコマンドが生成される。
Naoに登録されている行為や対象・量に対応する語意(EDR辞書の概念ID)をニーモニックに現した語意を行為の後ろにそれの対象や量を並べた中間言語がAthenaコマンドである。ロボット側(Exegesis)はこれを受け取り、解析してNao動作命令を生成する。Athenaコマンドの構成を以下の図 3に示した。 1つのAthenaコマンドは、動作、方向、対象、詳細、数量、回数から構成さる。動作指定部によって大まかなロボット動作を決定し、そのあとの5つのパラメータが動作の詳細を制御する。それぞれのパラメータを以下のように定義した。
・「動作」・・・主となる動詞の指定
・「方向」・・・動作を行う方向。基準はロボット視点
・「対象」・・・手、顔などの動作を行う部位
・「詳細」・・・左、右など対象の更に細かい部位
・「数量」・・・歩数、角度など動作の程度
・「回数」・・・指定された動作の回数


Athenaコマンドの構成

図3. Athenaコマンドの構成


命令として情報がないパラメータにはnullが割り当てられ、1つの例外を除きAthenaコマンドのパラメータが6つ以下になることはない。表 1にAthenaコマンドとして送信できるパラメータの一覧を示す。例外については4.2で述べる。発話「右手を45度上にあげて」に対するAthenaコマンド(Up,Top,Hand,Rpart, 45Arg, 1,)の構成例を図 8に示した。
Athenaコマンドの5つのパラメータに相互関係はない。存在するすべての組み合わせをAthenaコマンドとしてGenesisで生成し、Exegesisで受け取ることができる。しかし、Athenaコマンド全てがロボットの行動に繋がるとは限らない。


表1. Athenaコマンドパラメータ一覧

Athenaコマンドパラメータ一覧

ExegesisではそのすべてのAthenaコマンドを受け取ることはできても、Nao動作命令を生成するわけではない。例えば、「右手を開いて」は(Open,Hnull,Hand,RPart,Nnull,1,)というAthenaコマンドが生成され、ロボットは実際に右手を開く動作を行う。しかし、「顔を開いて」は(Open,Hnull, Head, RPart,Nnull,1,)というAthenaコマンドが生成されるが、実際にロボットは動作しない。基本的にロボットがハード面で不可能とする動きに対する命令はできない。このような命令については、Nao動作命令を作成していない。実際にロボットが行動できる主なAthenaコマンドを表 2にまとめた。本システムでは、表 2の動作を実現させるために、下記の3種類のNao動作命令生成プログラムを用意した。
・Choregraphe・・・「立つ」「座る」「踊る」の動作で使用。これはNAO動作作成のためのソフトウェアであり、ALDEBARAN ROBOTICSであらかじめ用意している動作プログラムを読み込んで利用する。
・関節変位列生成・・・様々な関節の角度を指定して変化させるプログラム。多くの動作でこのプログラムを使用している。SetAnglesという関数を用い、「関節名、角度(rad)、速度」を与えることで、関節を動かす。
・基本操作・・・「歩く」、「体を回転させる」の動作で使用。予め用意されている関数をそのまま利用した動作プログラム。「歩く」にはwalkToという関数がALDEBARAN ROBOTICSで用意されており、これを利用している。
本来6つのパラメータから構成されるAthenaコマンドだが、動作「Speak」に関しては例外として扱っている。「Speak」はロボットに何かを言わせるコマンドだが、方向や対象などのパラメータが要らず、Athenaコマンドの処理がしやすいため、2つのパラメータのみで構成されている。


表2. ロボット実行可能動作Athenaコマンド(一部抜粋)

ロボット実行可能動作Athenaコマンド(一部抜粋)

Athenaには上記した基本操作以外に、不明語の学習機能や量のあいまい表現を許す機能などがある。これらによってNaoに動作指示し、Naoがその通りに動いている様子を以下に示す。


ロボット学習(早送り)


また、Naoの視覚(かなりの近眼)を通して対象を把持する様子を以下に示す。


把持行動(倍速)


また、Naoのヘッドに深度カメラを搭載して把持動作を行えるようにした。その様子を以下に示す。


Athena2014


さらに、ロボットをPepperに変更して、ロボット操作指示だけでなくHermesを組み込んで雑談や質問応答を行えるようにした。その様子を以下に示す。


Pepper デモ