図1を参照して、この実施例のコミュニケーションロボットシステム(以下、単に「システム」ということがある。)10は、コミュニケーションロボット(以下、単に「ロボット」ということがある。)12を含む。このロボット12は、たとえば無線LANなどのネットワーク14にアクセスすることができる。ロボット12はサーバ20と協働して人間16が音声、視線、および指差しで指示する物品を特定し、たとえばその物品を人間16に持っていくなどの動作を実行する。
人間16は、その人物が誰であるかを示す無線タグ18を装着しているとともに、図示しないが、モーションキャプチャのためのマーカが付着されている。マーカは、典型的には、人間の頭頂、両肩、両肘、両手の人差し指の先端などに設定されていて、それらのマーカが、人間16の全体とともに、サーバ20に制御されるカメラ120によって撮影される。カメラ120は、実施例では、3つ設けられ、人間16を3方向から撮影し、そのカメラ映像をサーバ20に供給する。
サーバ20は無線LANのようなネットワーク14に結合され、上述のようにして入力されるカメラ映像データに基づいて、マーカの動きを検出するモーションキャプチャ処理を実行するとともに、たとえば肌色領域を検出することによって、人間16の顔の位置を特定することができる。
このシステム10では、上述のように、ロボット12が人間16の指示する物品を対象物として特定するものである。対象物となり得る物品の例として、この実施例では、本(書籍)24を用いる。本24には、その本がどのような本であるかを示す無線タグ18が付着されている。本24は本棚26に収納される。
ただし、対象物となり得る物品は実施例の書籍だけでなく、もし家庭用のシステムであれば、家庭内のあらゆる物品が考えられる。また、当然、家庭用としてだけではなく、人間と一緒に働く任意の場所(会社、事務所、工場など)での利用が考えられる。
そして、このシステム10が対象とするすべての物品(本24)は、サーバ20に付設された物品辞書122に登録される。物品辞書122については後述する。
また、システム10が対象とする人間16は、人間16に付着されている無線タグ18が複数存在するアンテナ124のいずれかを介して無線タグ読取装置208(図4参照)で読み取られることによって、その位置がサーバ20で把握される。つまり、人間16の位置は、人間16に付着されている無線タグ18からの電波をどのアンテナ124で受信したかによって若干大まかな位置が把握される。
なお、図1では、簡単のため、1台のロボット12を示してあるが、2台以上であってよい。また、人間16は1人に限定される必要はなく、無線タグ18で識別できるので、複数であってよい。
また、図1に示す実施例では、このシステム10を設置している空間のワールド座標を用いてロボット12、人間16、物品24などの位置が表現されていて、他方、ロボット12の制御はロボット座標で行なわれるので、詳細は説明しないが、ロボット12は、後述の処理における必要に応じて、ロボット座標とワールド座標との間の座標変換処理を実行するものである。
図2を参照して、ロボット12のハードウェアの構成について説明する。また、図2はこの実施例のロボット12の外観を示す正面図である。ロボット12は台車30を含み、台車30の下面にはロボット12を自律移動させる2つの車輪32および1つの従輪34が設けられる。2つの車輪32は車輪モータ36(図3参照)によってそれぞれ独立に駆動され、台車30すなわちロボット12を前後左右の任意方向に動かすことができる。また、従輪34は車輪32を補助する補助輪である。したがって、ロボット12は、配置された空間内を自律制御によって移動可能である。
台車30の上には、円柱形のセンサ取り付けパネル38が設けられ、このセンサ取り付けパネル38には、多数の赤外線距離センサ40が取り付けられる。これらの赤外線距離センサ40は、センサ取り付けパネル38すなわちロボット12の周囲の物体(人間や障害物など)との距離を測定するものである。
なお、この実施例では、距離センサとして、赤外線距離センサを用いるようにしてあるが、赤外線距離センサに代えて、超音波距離センサやミリ波レーダなどを用いることもできる。
センサ取り付けパネル38の上には、胴体42が直立するように設けられる。また、胴体42の前方中央上部(人の胸に相当する位置)には、上述した赤外線距離センサ40がさらに設けられ、ロボット12の前方の主として人間との距離を計測する。また、胴体42には、その側面側上端部のほぼ中央から伸びる支柱44が設けられ、支柱44の上には、全方位カメラ46が設けられる。全方位カメラ46は、ロボット12の周囲を撮影するものであり、後述する眼カメラ70とは区別される。この全方位カメラ46としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ40および全方位カメラ46の設置位置は、当該部位に限定されず適宜変更され得る。
胴体42の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節48Rおよび肩関節48Lによって、上腕50Rおよび上腕50Lが設けられる。図示は省略するが、肩関節48Rおよび肩関節48Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節48Rは、直交する3軸のそれぞれの軸廻りにおいて上腕50Rの角度を制御できる。肩関節48Rの或る軸(ヨー軸)は、上腕50Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節48Lは、直交する3軸のそれぞれの軸廻りにおいて上腕50Lの角度を制御できる。肩関節48Lの或る軸(ヨー軸)は、上腕50Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
また、上腕50Rおよび上腕50Lのそれぞれの先端には、肘関節52Rおよび肘関節52Lが設けられる。図示は省略するが、肘関節52Rおよび肘関節52Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕54Rおよび前腕54Lの角度を制御できる。
前腕54Rおよび前腕54Lのそれぞれの先端には、人の手に相当するハンド56Rおよびハンド56Lがそれぞれ設けられる。これらのハンド56Rおよび56Lは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット12は、ハンド56Rおよび56Lを用いて物体を把持または挟持することができる。ただし、ハンド56R,56Lの形状は実施例の形状に限らず、人間の手に酷似した形状や機能を持たせるようにしてもよい。
また、図示は省略するが、台車30の前面,肩関節48Rと肩関節48Lとを含む肩に相当する部位,上腕50R,上腕50L,前腕54R,前腕54L,球体56Rおよび球体56Lには、それぞれ、接触センサ58(図3で包括的に示す)が設けられる。台車30の前面の接触センサ58は、台車30への人間や他の障害物の接触を検知する。したがって、ロボット12は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪32の駆動を停止してロボット12の移動を急停止させることができる。また、その他の接触センサ58は、当該各部位に触れたかどうかを検知する。なお、接触センサ58の設置位置は、当該部位に限定されず、適宜な位置(人の胸,腹,脇,背中および腰に相当する位置)に設けられてもよい。
胴体42の中央上部(人の首に相当する位置)には首関節60が設けられ、さらにその上には頭部62が設けられる。図示は省略するが、首関節60は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット12の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部62には、人の口に相当する位置に、スピーカ64が設けられる。スピーカ64は、ロボット12が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、人の耳に相当する位置には、マイク66Rおよびマイク66Lが設けられる。以下、右のマイク66Rと左のマイク66Lとをまとめてマイク66ということがある。マイク66は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。さらに、人の目に相当する位置には、眼球部68Rおよび眼球部68Lが設けられる。眼球部68Rおよび眼球部68Lは、それぞれ眼カメラ70Rおよび眼カメラ70Lを含む。以下、右の眼球部68Rと左の眼球部68Lとをまとめて眼球部68ということがある。また、右の眼カメラ70Rと左の眼カメラ70Lとをまとめて眼カメラ70ということがある。
眼カメラ70は、ロボット12に接近した人間の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット12は、この眼カメラ70からの映像信号によって、人間16の左右両目のそれぞれの視線方向(ベクトル)を検出する。その視線検出方法は具体的には、2つのカメラを用いるものとして特開2004‐255074号公報に、1つのカメラを用いるものとして特開2006‐172209号公報や特開2006‐285531号公報開示されるが、ここではその詳細は重要ではないので、これらの公開公報を引用するにとどめる。
ただし、人間16の視線ベクトルの検出のためには、よく知られているアイマークレコーダなどが利用されてもよい。
また、眼カメラ70は、上述した全方位カメラ46と同様のカメラを用いることができる。たとえば、眼カメラ70は、眼球部68内に固定され、眼球部68は、眼球支持部(図示せず)を介して頭部62内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部62の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部62の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部68ないし眼カメラ70の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ64,マイク66および眼カメラ70の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット12は、車輪32の独立2軸駆動,肩関節48の3自由度(左右で6自由度),肘関節52の1自由度(左右で2自由度),首関節60の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
図3はロボット12の電気的な構成を示すブロック図である。この図3を参照して、ロボット12は、CPU80を含む。CPU80は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス82を介して、メモリ84,モータ制御ボード86,センサ入力/出力ボード88および音声入力/出力ボード90に接続される。
メモリ84は、図示は省略をするが、ROM,HDDおよびRAMを含む。ROMおよびHDDには、ロボット12の動作を制御するための制御プログラムが予め記憶される。たとえば、各センサの出力(センサ情報)を検知するための検知プログラムや、外部コンピュータとの間で必要なデータやコマンドを送受信するための通信プログラムなどが記録される。また、RAMは、ワークメモリやバッファメモリとして用いられる。
さらに、この実施例では、ロボット12は、人間16とのコミュニケーションをとるために発話したり、ジェスチャしたりできるように構成されているが、メモリ84に、このような発話やジェスチャのための発話/ジェスチャ辞書85Aが設定されている。
モータ制御ボード86は、たとえばDSPで構成され、各腕や首関節および眼球部などの各軸モータの駆動を制御する。すなわち、モータ制御ボード86は、CPU80からの制御データを受け、右眼球部68Rの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「右眼球モータ92」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、左眼球部68Lの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「左眼球モータ94」と示す)の回転角度を制御する。
また、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Rの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「右腕モータ96」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Lの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「左腕モータ98」と示す)の回転角度を制御する。
さらに、モータ制御ボード86は、CPU80からの制御データを受け、首関節60の直交する3軸のそれぞれの角度を制御する3つのモータ(図3では、まとめて「頭部モータ100」と示す)の回転角度を制御する。そして、モータ制御ボード86は、CPU80からの制御データを受け、車輪32を駆動する2つのモータ(図3では、まとめて「車輪モータ36」と示す)の回転角度を制御する。
モータ制御ボード86にはさらにハンドアクチュエータ108が結合され、モータ制御ボード86は、CPU80からの制御データを受け、ハンド56R,56Lの開閉を制御する。
なお、この実施例では、車輪モータ36を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ36と同様に直流モータを用いるようにしてもよい。また、ロボット12の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更された、たとえば、他の実施例では、エアアクチュエータが適用されてもよい。
センサ入力/出力ボード88は、モータ制御ボード86と同様に、DSPで構成され、各センサからの信号を取り込んでCPU80に与える。すなわち、赤外線距離センサ40のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード88を通じてCPU80に入力される。また、全方位カメラ46からの映像信号が、必要に応じてセンサ入力/出力ボード88で所定の処理を施してからCPU80に入力される。眼カメラ70からの映像信号も、同様にして、CPU80に入力される。また、上述した複数の接触センサ58(図3では、まとめて「接触センサ58」と示す)からの信号がセンサ入力/出力ボード88を介してCPU80に与えられる。音声入力/出力ボード90もまた、同様に、DSPで構成され、CPU80から与えられる音声合成データに従った音声または声がスピーカ64から出力される。また、マイク66からの音声入力が、音声入力/出力ボード90を介してCPU80に与えられる。
また、CPU80は、バス82を介して通信LANボード102に接続される。通信LANボード102は、たとえばDSPで構成され、CPU80から与えられた送信データを無線通信装置104に与え、無線通信装置104は送信データを、ネットワーク14を介してサーバ20に送信する。また、通信LANボード102は、無線通信装置104を介してデータを受信し、受信したデータをCPU80に与える。たとえば、送信データとしては、ロボット12からサーバ20への信号(コマンド)であったり、ロボット12が行ったコミュニケーションについての動作履歴情報(履歴データ)などであったりする。このように、コマンドのみならず履歴データを送信するのは、メモリ84の容量を少なくするためと、消費電力を抑えるためである。この実施例では、履歴データはコミュニケーションが実行される度に、サーバ20に送信されたが、一定時間または一定量の単位でサーバ20に送信されるようにしてもよい。
さらに、CPU80は、バス82を介して無線タグ読取装置106が接続される。無線タグ読取装置106は、アンテナ(図示せず)を介して、無線タグ18(RFIDタグ)から送信される識別情報の重畳された電波を受信する。そして、無線タグ読取装置106は、受信した電波信号を増幅し、当該電波信号から識別信号を分離し、当該識別情報を復調(デコード)してCPU80に与える。図1によれば無線タグ18は、ロボット12が配置された会社の受付や一般家庭の居間などに居る人間16に装着され、無線タグ読取装置106は、通信可能範囲内の無線タグ18を検出する。なお、無線タグ18は、アクティブ型であってもよいし、無線タグ読取装置106から送信される電波に応じて駆動されるパッシブ型であってもよい。
図4を参照して、サーバ20のハードウェアの構成について説明する。図4に示すように、サーバ20は、CPU200を含む。CPU200は、プロセッサとも呼ばれ、バス202を介して、メモリ204、カメラ制御ボード206、無線タグ読取装置208、LAN制御ボード210、入力装置制御ボード212、およびモニタ制御ボード214に接続される。
CPU200は、サーバ20の全体の制御を司る。メモリ204は、ROM、RAM、およびHDDなどを包括的に示したものであり、サーバ20の動作のためのプログラムを記録したり、CPU200が動作する際のワークエリアとして機能したりする。カメラ制御ボード206は、当該制御ボード206に接続されるカメラ120を制御するためのものである。
無線タグ読取装置208は、当該制御ボード208に接続されるアンテナ124を介して人間16や物品(本)24に装着された無線タグ18から送信される識別情報の重畳された電波を受信する。そして、無線タグ読取装置208は、受信した電波信号を増幅し、当該電波信号から識別信号を分離し、当該識別情報を復調(デコード)してCPU200に与える。アンテナ124は、ロボット12が配置された会社の受付や一般家庭の各部屋などにくまなく配置され、システム10が対象とするすべての物品(本)24および人間16の無線タグ18から電波を受信できるようになっている。したがって、アンテナ124は複数存在するが、図1および図4では包括的に示している。
また、LAN制御ボード210は、当該制御ボード210に接続される無線通信装置216を制御し、サーバ20が外部のネットワーク14に無線によってアクセスできるようにするものである。さらに、入力装置制御ボード212は、当該制御ボード212に接続される入力装置としてのたとえば、キーボードやマウスなどによる入力を制御するものである。そして、モニタ制御ボード214は、当該制御ボード214に接続されるモニタへの出力を制御するものである。
また、サーバ20は、図示しないインターフェースによって、サーバ20に付設された物品辞書122および音声認識辞書126(図1参照)に接続されている。
メモリ204には、物品ローカル辞書205A、音声認識ローカル辞書205B、発話パターン辞書205C、発話辞書205D、個人正誤DB205E、および音声認識率DB205Fが設定されている。
物品ローカル辞書205Aは、後述する物品辞書122から抽出された内容が登録される辞書である。サーバ20は、ロボット12が人間16を認識した際に、当該人間16の近傍に存在する物品(本)24の情報だけを物品辞書122から抽出して物品ローカル辞書205Aに登録する。音声認識ローカル辞書205Bは、後述する音声認識辞書126から抽出された内容が登録される辞書である。サーバ20は、ロボット12が人間16を認識して物品ローカル辞書205Aを作成すると、当該物品ローカル辞書205Aに登録されている単語を音声認識するために必要な情報を音声認識辞書126から抽出して音声認識ローカル辞書205Bに登録する。したがって、物品ローカル辞書205Aおよび音声認識ローカル辞書205Bは、人間16の位置の変化に応じて動的に書き換えられる。このように音声認識辞書126から音声認識ローカル辞書205Bを作成し、音声認識に使用する辞書を小さくすることによって音声認識の対象となる単語(音素記号列)の数を少なくし、音声認識の処理にかかる時間を短くするとともに正しく音声認識できる割合を高めることができる。
発話パターン辞書205Cは、人間16の行った発話の内容が特定のパターンであるか否かを判断するための辞書である。発話辞書205Dは、サーバ20がロボット12に、人間16に対して発話させる音声の内容を決定するために必要な情報を記憶している。また、個人正誤DB205Eは、システム10が、人間16が指示した物品(本)24を特定することに最終的に成功したか否かを人間16のID別に記憶している。そして、音声認識率DB205Fは、音声認識辞書126に登録されている単語のそれぞれについての音声認識における認識率、つまり、実際の音声認識により当該単語を正しく認識できた割合を記憶している。
次に、図5を参照して物品辞書122を説明する。この図5に示す物品辞書122は、たとえばユーコード(Ucode)のようなIDをそれぞれの物品の1つに割り当て、物品毎にその名称、属性、位置(座標)などの必要な情報を文字列として登録している。なお、ユーコードは、具体的には、128ビットの数字からなり、340兆の1兆倍のさらに1兆倍の数の物品を個別に識別できるものである。ただし、この物品辞書122に使うIDは必ずしもこのようなユーコードである必要はなく、適宜の数字や記号の組み合わせからなるものであってよい。
このような物品辞書122は、システム10(ロボット12およびサーバ20)が識別すべき対象物となるすべての、たとえば家庭内の物品をIDと文字列とで登録するものであり、いわばグローバル辞書に相当する。
物品辞書122には、1つの物品(本)24についての情報が1つのレコードとして登録されている。そして、たとえば、1つのレコードには、本のID以外に「名称」、「属性」、「著者」、「出版社」などの項目が記憶されている。「属性」の項目には、本のカバーの色や体裁など当該本を補足的に説明する単語が記憶されている。各項目の情報はテキスト形式の単語で記憶されている。しかし、「属性」の項目においてダブルコーテーション(“)で囲まれている情報は、音声認識における音素記号形式(音素記号列)の単語で記憶されている。
この音素記号列の情報は、ロボット12がマイク66で拾った人間16が発する音声をサーバ20が音声認識する処理の過程で生成される情報であり、音声認識ローカル辞書205B(音声認識辞書126)に登録されておらず、音声認識をすることができなかったが、人間16の視線や指差しにより、人間16がどの本を指示しているか判断できた場合に、その認識できなかった音声に相当する音素記号列をその本のレコードの「属性」として記憶したものである。
また、音素記号列の後に括弧書きで付記されているのは、当該音素記号列に対応つけて記憶された人間16のIDの情報である。これは、当該音声記号列の示す音声が、当該IDが示す人間16によって発せられたことを示している。
なお、前述したように、物品辞書122には各物品(本)24が存在する場所の情報も記憶されており、物品辞書122の1つのレコードには、図示しないが当該物品(本)24が存在する場所を記憶する項目も含まれている。
次に、図10を参照して音声認識辞書126を説明する。一般的に音声認識辞書には単語辞書と文法辞書とが存在するが音声認識辞書126は単語辞書である。文法辞書についての説明は省略する。音声認識辞書126は、図10に示すように、テキスト形式の単語を記憶する項目、テキスト形式の単語に対応する音素記号形式(音素記号列)の単語を記憶する項目、および当該テキスト形式の単語が物品の名称、たとえば、本のタイトル(名称)であるか否かを示す情報を記憶する項目を含むレコードからなっている。テキスト形式の単語を記憶する項目に記憶されているのが物品の名称であるか否かを示す情報を記憶する項目には、テキスト形式の単語を記憶する項目に物品の名称が記憶されている場合には「1」が記憶され、そうでない場合は「0」が記憶されている。
音声認識の処理では、入力された音声を音素に分解し、分解した各音素について当該音素を表す記号を生成する。そして、入力された音声の単語に相当するこの記号の列が音声認識辞書126に記憶されている音素記号列である。音声認識の処理では、音声から生成した音素記号列ともっとも近い音素記号列を音声認識辞書126(音声認識ローカル辞書205B)内で特定し、この特定した音素記号列に対応して記憶されている単語を音声認識結果として出力する。
前述したように、このシステム10では、人間16が音声と視線および指差しによって物品(本)24を指示すると、ロボット12とサーバ20とが協働して、人間16が指示した物品(本)24を特定し、その特定した物品(本)24をロボット12が人間16のところに運搬などする。以下において、この人間16とシステム10とのやり取りをコミュニケーションと呼ぶことがある。
より詳細に述べると、このシステム10では、人間16がロボット12に近づくと、ロボット12が人間16を無線タグ18によって認識する。サーバ20には、システム10が対象とする物品(本)24のすべてが登録された物品辞書122、および音声認識によって物品(本)24を特定するための単語が登録された音声認識辞書126が付設されている。ロボット12が人間16を認識すると、ロボット12はサーバ20に対して物品辞書122および音声認識辞書126のローカル辞書(物品ローカル辞書205A、音声認識ローカル辞書205B)の作成を指示する。
ローカル辞書の作成の指示を受けると、サーバ20では、ロボット12が認識した人間16の位置を特定し、特定した当該人間16から所定の範囲内、たとえば、半径5m以内にある物品(本)24のレコードのみを物品辞書122から抽出して物品ローカル辞書205Aを作成する。そして次に、音声認識辞書126から、物品ローカル辞書205Aに登録されている物品(本)24を音声認識するため必要な情報のみを抽出して音声認識ローカル辞書205Bを作成する。
その後、ロボット12は、認識した人間16に対して、たとえば、「何か本を持ってきましょうか?」という発話を行う。この発話に対し、人間16は、持ってきてほしい物品(本)24に視線を向けつつ当該物品(本)24を指差しながら、「化学の謎持ってきて」などと答える。
するとロボット12は、「化学の謎持ってきて」という人間16の声を音声認識し、人間16の視線を推定し、指差した指が向かっている方向を推定することによって、人間16が指示している物品(本)24を特定する。
人間16が指示している物品(本)24を特定すると、サーバ20は、人間16に特定した物品(本)24を確認するためにロボット12が発話する音声の内容、たとえば、「白い本ですか?」を決定し、ロボット12が当該物品(本)24(化学の謎の本24)を指し示しながらこれを発話する。
このとき、サーバ20は、発話の内容を、次回に人間16が当該物品(本)24(化学の謎の本24)をロボット12に指示する際に、人間16に当該物品(本)24(化学の謎の本24)を特定するための単語として使用してほしい単語を含んだものとする。
たとえば、ロボット12が特定した物品(本)24(化学の謎の本24)を確認するための発話内容が「白い本ですか?」であった場合、システム10は、次回に人間16が「化学の謎」の本を指示する際には、指差しとともに、「化学の謎持ってきて」と発話する代わりに「あの白い本持ってきて」と発話することを期待している。このことは、人間はロボットの発話内容を真似する傾向があるという知見に基づいている。この場合、人間16に物品(本)24を特定するために次回に使用することを期待する単語は「白い」である。この「白い」という単語は、人間16の近傍に「化学の謎」の本24の他に「白い」物品(本)24が存在せず、また、「白い」という単語の音声認識における認識率が高い場合にサーバ20によって選択される。
ところで、人間16が指差しとともに、「化学の謎を持ってきて」などと発話する場合、「化学の謎」という単語ではなく、その人間16が独自に使用する、たとえば、「化学の謎」の省略形である「バケナゾ」という単語を用い「バケナゾ持ってきて」などと発話することが考えられる。この場合、「バケナゾ」という単語が物品辞書122および音声認識辞書126に登録されていなければ、システム10は「バケナゾ」という音声を認識し、「バケナゾ」が「化学の謎」の本を指示していることを特定することができない。
このような場合においても、システム10は、人間16の視線や指差しの方向に基づいて人間16が指示している物品(本)24を特定することが可能である。したがって、「バケナゾ」などのように音声認識できなかった単語がある場合には、視線や指差しの方向に基づいて特定した結果を利用して、音声認識できなかった単語を物品辞書122および音声認識辞書126に登録する。
システム10が特定した物品(本)24を確認するために、ロボット12がたとえば「白い本ですか?」と発話すると、人間16は、「そうです」あるいは「ちがいます」などと発話し、ロボット12に返答する。サーバ20は、この人間16の返答における音声を音声認識し、システム10が特定した物品(本)24が、人間16が指示したものであるか否かを判断する。システム10が特定した物品(本)24が、人間16が指示したものでなかった場合には、次の候補である物品(本)24が、人間16が指示したものであるか否かを確認する。一方、システム10が特定した物品(本)24が、人間16が指示したものであった場合には、ロボット12が当該物品(本)24を人間16のところにまで運搬する。
次に、図1に示す実施例におけるロボット12およびサーバ20の動作について、図15から図22に示すフロー図を参照して説明する。
図15の最初のステップS1において、ロボット12のCPU80(図3)は、同じく図3に例示するセンサ入力/出力ボード88からのセンサ入力にしたがって、人間16(図1)を認識したかどうか判断する。具体的には、たとえば赤外線センサ40で人体を検知し、そのとき無線タグ読取装置106で人間16が装着している無線タグ18を認識したとき、人間16を認識したと判断する。このとき、ロボット12は、無線タグ18より人間16のユーザID(たとえば、(456…0000004))を読み取る。
ステップS1でYESと判断すると、次のステップS3で、ロボット12のCPU80は、ローカル辞書、つまり、物品ローカル辞書205Aおよび音声認識ローカル辞書205Bを作成する指示を、ネットワーク14を介してサーバ20に送信する。このとき、ローカル辞書の作成指示と同時に、ステップS1で認識したと判断した人間16のユーザID(456…0000004)をもサーバ20に送信する。
ロボット12からローカル辞書の作成指示とユーザIDとが送信されると、サーバ20では、図16のステップS31で、CPU200は、ローカル辞書の作成指示を受信したと判断し、ステップS33において、ロボット12が認識した人間16とのコミュニケーションに使用する当該人間16に専用の物品ローカル辞書205Aおよび音声認識ローカル辞書205Bの作成を行う。
ステップS33の「ローカル辞書の作成」の処理は、図18のフロー図に示す手順で実行される。まず、図18のステップS81で、ロボット12から送信されたユーザIDで特定される人間16の近傍にある物品(本)24のレコードを物品辞書122から抽出して物品ローカル辞書205Aを作成する。
このとき、CPU200は、無線タグ読取装置208を駆動してアンテナ124を介して、人間16に付着された無線タグ18から電波を受信して人間16ごとにユーザIDと人間の位置を特定する。そして、こうして特定した複数の人間16のユーザIDと人間の位置の情報と、ロボット12より送信されたユーザIDとに基づいてロボット12が認識した人間16の位置を特定する。
ロボット12が認識した人間16の位置を特定すると、次に、物品辞書122に記憶されている各レコードの物品(本)24の位置が記憶されている項目を参照し、図5に示すような物品辞書122から、ロボット12が認識した人間16の近傍に位置する物品(本)24のレコードをすべて抽出して、図6に示すような物品ローカル辞書205Aを作成する。
こうして物品ローカル辞書205Aを作成すると、次に、CPU200はステップS83で、「物品ローカル辞書205Aに登録されている単語」の一覧300を作成する。図7は、この単語の一覧300を示した図解図である。この単語の一覧300は、音声認識辞書126から音声認識ローカル辞書205Bを作成する際に使用される。図6および図7からわかるように、単語の一覧300に登録される「物品ローカル辞書205Aに登録されている単語」とは、物品ローカル辞書205Aの各レコードの「名称」、「属性」、「著者」、「出版社」のそれぞれに記憶されているテキスト形式の単語である。ただし、図7に示されるように、この単語一覧300には、テキスト形式の文字列からなる単語のみではなく、先に説明した音素記号列(図7の例では、“bakenazo”、“saiai”)もユーザID(図7の例では、(456…0000004)、(456…0000003))とともに登録される。これらの音素記号列(およびユーザID)は、先述したように、物品辞書122に単語が登録されていなかったために、登録されていない単語に対応する音素記号列が後から登録されたものである。
ステップS85では、単語の一覧300に登録されている音素記号列の中から、ロボット12が認識した人間16のユーザID以外のユーザIDが対応つけられている音素記号列を削除する。ロボット12が認識した人間16のユーザIDが(456…0000004)である場合には、図8に示したように、他の人間16のユーザID(456…0000003)と対応つけられている“saiai”が削除される。ユーザIDが(456…0000003)である人間16に特有の“saiai”という本24(化学の目)の名称の呼び方は、ロボット12が認識したユーザIDが(456…0000004)である人間16とのコミュニケーションにおける音声認識には必要がないと考えられるからである。
次に、CPU200は、ステップS87で、単語の一覧300における冗長性を排除する。つまり、図7の例において、単語の一覧300に登録されている「白色」や「ハードカバー」などの重複部分を図8に示すように削除する。
こうして単語の一覧300が完成すると、次に、この単語の一覧300を利用して音声認識辞書126から音声認識ローカル辞書205Bを作成する。
まず、ステップS89において、CPU200は、メモリ204内に設定したカウンタCt1をインクリメントする。初期状態では、カウンタCt1は「0」である。このカウンタCt1は、単語の一覧300に登録されている単語の数をカウントするものであり、単語の一覧300のポインタとして機能する。したがって、カウンタCt1のカウント値によって、単語の一覧300内において異なる単語を指定する。カウンタCt1のカウント値が、単語の一覧300に登録されている単語の数「L」に等しくなるまで、以下の動作が各単語について実行されると理解されたい。
ステップS91では、単語の一覧300に登録されている単語が音素記号列であるか否かを判断する。たとえば、単語の一覧300に登録されている単語が図8に示すように、テキスト形式で表現された「地球温暖化」という単語であれば、ステップS91でNOと判断される。すると、ステップS93で、テキスト形式である「地球温暖化」という単語をキーとして、音声認識辞書126(図10参照)を検索し、「地球温暖化」という単語を記憶した項目を含むレコードを抽出し、図11に示すように音声認識ローカル辞書205Bに登録する。
一方、単語の一覧300に登録されている単語が図8に示すように、音素記号形式で表現された“bakenazo”という単語であれば、ステップS91でYESと判断される。すると、ステップS95で、音素記号列である“bakenazo”という単語をキーとして音声認識辞書126を検索し、“bakenazo”という単語を記憶した項目を含むレコードを抽出し、図11に示すように音声認識ローカル辞書205Bに登録する。
このようにして、物品辞書122から物品ローカル辞書205Aが作成され、音声認識辞書126から音声認識ローカル辞書205Bが作成される。
一方、図15に戻って、ロボット12において、ステップS3でローカル辞書の作成指示をサーバ20に送信した後は、ステップS5で、CPU80は、メモリ84内に設定している発話/ジェスチャ辞書85Aを用いて、スピーカ64から、たとえば、「何か本を持って来ましょうか?」のような発話を行なわせる。その後、人間16がたとえば「花火の匠持ってきて」のような発話をしたとすると、ロボット12が人間16の指示を認識し、ステップS7で、CPU80が、“YES”と判断する。このとき、人間16は、「花火の匠持ってきて」という発話とともに、該当本に視線を向けつつ当該本を指差すことによって、どの本持ってきてほしいかを指示する。
CPU80は、ステップS7でYESと判断すると、次にステップS9において、人間16が指示した「花火の匠持ってきて」という音声の情報とともに、音声認識ならびに視線と指差しの推定を行わせる指示をサーバ20に送信する。
サーバ20では、CPU200が、図16のステップS35において、ロボット12から音声認識ならびに視線と指差しの推定を行わせる指示を音声の情報とともに受信したと判断すると、ステップS37における「音声認識による物品の推定」の処理とステップS39における「視線と指差しによる物品の推定」の処理とを並列的に実行する。
「音声認識による物品の推定」の処理は、図19のフロー図に示す手順にしたがって実行される。まず、CPU200は、ステップS111で、ロボット12から送信されてきた「花火の匠持ってきて」という音声の情報を音声認識する。具体的には、「花火の匠持ってきて」という音声を音素に分割し、各音素に対応する音素記号を生成する。そして、図示しない文法辞書を参照して、生成した音素記号列“hanabinotakumi mottekite”のうち“hanabinotakumi”という音素記号列が目的語であると特定する。次に、この“hanabinotakumi”という音素記号列をキーとして音声認識ローカル辞書205B(図11参照)を検索し、もっとも近い音素記号列の単語を記憶した項目を有するレコードを特定する。そして、特定したレコードに記憶されているテキスト形式の単語である「花火の匠」を得る。また、このとき、特定したレコードの「物品名称」の項目に記憶されている情報に基づいて、音声認識されたのが物品の名称であるか、つまり、本24のタイトル(名称)であるか否かを判断することができる。この判断に基づいて後ほどフラグtwの設定を行うが、後ほど設定を行うのはフロー図の表現上の都合であり、ステップS111においてフラグtwの設定を行えばよい。
たとえば、人間16が「花火の匠持ってきて」という代わりに「黒いの持ってきて」と指示した場合には、同様にしてステップS111における音声認識の結果として、「黒い」が得られる。なお、音声認識の方法としては特に限定されるものではなく既存の方法を採用することができる。
また、人間16が「花火の匠持ってきて」という代わりに、「花火の匠」という単語の人間16独特の略語である「ハナタク」という単語を用いて、「ハナタク持ってきて」と発話した場合には、音声認識ローカル辞書205Bには「ハナタク」という単語に相当する“hanataku”という音素記号列は登録されていないので、音声認識をすることができない。
このように、音声認識ができない単語があった場合には、CPU200は、ステップS113において、YESと判断し、ステップS115において、音声認識した人間16の発話内容は特定のパターンであったか否かを判断する。ここで発話内容の特定のパターンとは、たとえば、「○○持ってきて」や「○○お願い」などであり、人間16が指示する物品を特定する単語(○○)が含まれるであろう発話パターンである。人間16が発した発話の内容がこれらの特定のパターンに該当するか否かは、音声認識の処理における図示しない文法辞書を用いた発話内容の文法解析とともに、メモリ204に設定されている発話パターン辞書205Cを参照することによって判定することができる。
ステップS115でYESと判断した場合は、音声認識できなかった単語であって、人間16が指示した物品を特定するであろう単語があることを示すために、ステップS117で、メモリ204上に設定されているフラグnwに数値「1」を記憶させてフラグnwをオン状態にする。なお、フラグnwの初期状態はオフ状態(数値「0」)である。そして、ステップS119では、ステップS111における音声認識の処理で生成された、音声認識できなかった単語の音素記号列をメモリ204に設定されたワークエリアwaに格納する。なお、ステップS115でNOと判断すると、ステップS117およびステップS119をスキップする。
一方、ステップS113においてNOと判断すると、つまり、音声認識できない単語がなかったと判断すると、ステップS121において、CPU200は、音声認識した単語は物品の名称、つまり、本24のタイトル(名称)であったかどうかを判断する。この音声認識した単語が本24のタイトル(名称)であったかどうかは、音声認識ローカル辞書205Bの各レコードに含まれる「物品名称」の項目に記録されている情報に基づいて判断される。
ステップS121でYESと判断すると、ステップS123で、本24のタイトル(名称)が音声認識されたことを示すために、メモリ204に設定されたフラグtwに数値「1」を記憶させてフラグtwをオン状態にする。なお、フラグtwの初期状態はオフ状態(数値「0」)である。ステップS121でNOと判断するとステップS123をスキップする。
ステップS125では、CPU200は、ステップS111における音声認識の結果として得られたテキスト形式の単語、たとえば、「花火の匠」に基づいて物品ローカル辞書205Aを参照し、人間16が指示した物品(本)24の候補としての物品(本)24を選出する。具体的には、ステップS111で得られたテキスト形式の単語、たとえば、「花火の匠」をキーとして、物品ローカル辞書205Aを検索し、「花火の匠」というテキスト形式の単語を項目に記憶しているレコードを特定する。図6の例では、物品IDが「123…0000046」であるレコードが「名称」の項目に「花火の匠」という単語を記憶しているので、物品IDが「123…0000046」である物品(本)24が特定される。こうして特定された物品IDの物品(本)24が、人間16が指示した物品の候補として選出され、当該物品(本)24のIDが物品リストA(不図示)に登録される。
ここで、ステップS111における音声認識の結果として得られた単語が、たとえば、「白い」であった場合は、図6の物品ローカル辞書205Aの例の場合では、「属性」の項目に「白い」という単語を記憶しているレコードが複数存在するので、これらのレコードに含まれる物品ID、つまり、物品IDが「123…0000035」、「123…0000091」、および「123…0000102」の物品(本)24が、人間16が指示した物品の候補として選出される。この場合、こうして選出された複数の物品のIDが、物品リストA(不図示)に登録される。
ステップS127では、こうして選出された物品(本)24の候補が物品リストAに存在するか否かを判断する。ステップS127でYESと判断すると、ステップS129で、CPU200は、音声認識の結果による物品(本)24の候補が存在することを示すために、メモリ204に設定されているフラグcaに数値「1」を記憶させてフラグcaをオン状態にする。なお、フラグcaの初期状態はオフ状態(数値「0」)である。ステップS127でNOと判断すると、ステップS129をスキップする。このようにして、音声認識によって、人間16が指示した物品(本)24の推定が行われる。
図16に戻って、ステップS39の「視線と指差しによる物品の推定」の処理は、図20のフロー図に示す手順にしたがって実行される。CPU200は、まず、ステップS141で、メモリ204内に設定したカウンタCt2をインクリメントする。初期状態ではカウンタCt2は「0」が設定されている。このカウンタCt2は、人間16の近傍に存在する物品の数をカウントするもので、物品ローカル辞書205A(図6参照)のポインタとして機能する。したがって、カウンタCt2のカウント値によって、物品ローカル辞書205A内において、異なる物品を指定する。カウンタCt2のカウント値が、物品ローカル辞書205A内にリストアップしている物品の数「m」に等しくなるまで、以下の動作が各物品について、実行されるものと理解されたい。
ステップS141に続いて、CPU200は、人間16の視線を推定してそれの確信度を求める動作と、指差し方向を推定してそれの確信度を求める動作とを並行して実行するが、ここでは便宜上、まず視線を推定し次いで指差し方向を推定する順序で説明する。
図20のステップS141〜ステップS153の処理は、図16のステップS35でロボット12から音声認識ならびに視線と指差しの推定を行わせる指示を受信した後の一定の繰り返しの時間(t1,t2,t3,…,tm)毎に実行されるが、実施例では、50Hz(1秒間に50回)で実行されるものとする。なお、ステップS141〜ステップS153の処理は、たとえば、図15のステップS5でロボット12が発話を行った際に、その旨を知らせる通知をロボット12からサーバ20に送信し、当該通知を受信したサーバ20が、当該通知を受信した後の一定の繰り返しの時間(t1,t2,t3,…,tm)毎に実行するようにしてもよい。
ステップS143では、CPU200は、ロボット12から、人間16の視線の方向を示す視線ベクトル情報を受信する。フロー図には明記しないが、ロボット12では、CPU80は、たとえば眼カメラ70からのカメラ映像を処理することによって、先に挙げた公開公報に記載したいずれかの方法に従って、人間16の左右のそれぞれの眼の視線ベクトルを推定する。この左右それぞれの眼の視線方向は図13において直線L1およびL2で示される。このようにして、ロボット12は、所定の時間間隔で繰り返し各視線L1およびL2を推定し、この視線の方向を示す視線ベクトル情報をサーバ20に送信する。
サーバ20では、ステップS145において、CPU200が、カウンタCt2がそのとき物品ローカル辞書205A内でポイントしている物品と、各視線L1およびL2との距離を計算する。この計算の際には、CPU200は、ロボット12から受信した視線ベクトル情報をロボット座標系からワールド座標系に座標変換して使用する。また、この距離の計算の際には、物品ローカル辞書205Aの当該物品(本)24のレコードに記録されている当該物品(本)24の位置の情報が利用される。
一方、指差し方向を推定するためには、ステップS147において、まず、CPU200は、人間16が指差し動作をした腕を特定する。具体的には、モーションキャプチャのデータを参照して、たとえば、人間16の指先と肩の高さとの差が小さい側の腕を指差し腕として推定する。なぜなら、指差し動作をする場合には、腕を持ち上げる動作をまずすると考えられるからである。このようにして、ステップS147でどちらの腕を用いて指差し動作をするかを推定した後、CPU200は、次のステップS149において、指差し方向を推定する。
この実施例では、図13に示すように、指差し腕の指先と顔の中心(重心)とを通る直線L3、および指差し腕の指先とその腕の肘とを通る直線L4を想定する。そして、モーションキャプチャのデータを参照して、その直線L3およびL4を推定する。次のステップS151において、各直線L3およびL4と各物品との間の距離を計算する。
上述のステップS143〜S145およびステップS147〜S151は、繰返し時間(t1,t2,t3,...,tm)毎に行われる。そして、各繰返しの時間(t1,t2,t3,...,tm)毎に、線L1,L2,L3,およびL4との距離が最小になる物品を求める。各線において、最小になった物品に対して高い確信度(図14でいえば「○」印)を付与する。このようにして、たとえば図14に示すような確信度表を作成する。
このように直線毎に最短距離を持つ物品を算出することによって確信度表を作成するようにすれば、1つの物品について2以上の直線について確信度(○)が付与されることがある。このことによって、後にステップS155で説明するような物品リストB(不図示)を作成することができるのである。
この図14の確信度表において、視線L1およびL2のそれぞれについて評価される確信度は「視線確信度」ということができ、指差し方向線L3およびL4のそれぞれについて評価される確信度が「指差し方向確信度」であるということができる。
図14に示す例で説明すると、「123…0000001」のIDを持つ物品、実施例でいえば図1に示す「地球温暖化」という名称の本についていえば、時間t1に一方の視線L2とこの本との間の距離が最小になったものの、その他の時間区間ではどの線も当該本に最接近することはなかったと判断できる。次の、「123…0000046」のIDを持つ物品、実施例でいえば図1に示す「花火の匠」という名称の本についていえば、時間t1を除いて、各時間にどれかの線がこの物品に再接近したことがわかる。このようにして、図14に示す確信度表がステップS145およびステップS151で作成される。
ステップS155においてCPU200は、図14に示す確信度表を参照して、そのとき人間16が指示したと考える物品(本)24を特定する。具体的には、確信度評価(図14で言えば丸印)が単に多い順や、繰返し時間で視線(L1またはL2)と指差し(L3またはL4)の両方に○が入っている回数が多い順などに従って、物品のIDのリストである物品リストB(不図示)を作成する。
この確信度評価について、たとえば、図14に示す例で説明すると、「123…0000001」のIDを持つ「地球温暖化」という名称の本についていえば、確信度評価は「1」(1つの○印が付与された。)であり、「123…0000046」のIDを持つ「花火の匠」という本の確信度は「3」ということになる。したがって、この場合には、物品リストBには、ID「123…0000046」、ID「123…0000001」の順で登録される。
ただし、確信度(○印)の数が同じ場合であるとか、確信度(○印)の数が所定の閾値より小さい場合など、判断に迷う場合には、たとえば、図14に示す各繰り返しの時間の全区間の半分以上で確信度が付与されているような物品を対象物として特定すればよい。
このようにして、ステップS37の「音声認識による物品の推定」の処理で物品リストAが作成され、ステップS39の「視線と指差しによる物品の推定」の処理で物品リストBが作成されると、次に、CPU200は、図16のステップS41で、人間16が指示した物品の候補の一覧である候補物品一覧C(不図示)を作成する。この候補物品一覧Cを作成する処理は、図21のフロー図に示す手順で実行される。
まず、CPU200は、ステップS161で、メモリ204に設定されているフラグcaがオン状態であるか、つまり、音声認識の結果により推定された物品が存在するか否か、言い換えれば、物品リストAに物品のIDが登録されているか否かを判断する。
ステップS161でNOと判断すると、音声認識の結果によって推定された物品は存在しないので、ステップS163で、視線確信度および指差し方向確信度に基づいて候補物品一覧Cを作成する。つまり、物品リストBの内容をそのままに候補物品一覧Cを作成する。
一方、ステップS161でYESと判断すると、次に、CPU200は、ステップS165で、フラグtwがオン状態であるか、つまり、音声認識により本24のタイトル(名称)(物品の名称)が認識されたか否か、言い換えれば、音声認識の結果として得られた物品リストAに登録されている物品のIDは、人間16の発話内容に含まれる本24のタイトル(名称)に基づいて決定されたか否かを判断する。
ステップS165でYESと判断すると、ステップS167で、CPU200は、音声認識の結果を視線確信度および指差し方向確信度よりも優先させて候補物品一覧Cを作成する。つまり、物品リストAに登録されている物品のIDが上位となるように先に候補物品一覧Cに登録し、その後に、物品リストBに登録されている物品のIDが下位となるように登録する。これは、人間16が名指しした本24のタイトル(名称)を音声認識して物品(本)24を推定したほうが、視線や指差しに基づいて物品(本)24を推定するよりも確実であると考えられるからである。なお、物品リストAと物品リストBとに重複する物品のIDが存在する場合には、物品リストBに登録されている物品のIDを候補物品一覧Cに登録しない。
一方、ステップS165でNOと判断すると、CPU200は、ステップS169で、視線確信度および指差し方向確信度を音声認識の結果よりも優先させて候補物品一覧Cを作成する。つまり、物品リストBに登録されている物品のIDが上位となるように先に候補物品一覧Cに登録し、その後に、物品リストAに登録されている物品のIDが下位となるように登録する。なお、物品リストAと物品リストBとに重複する物品のIDが存在する場合には、物品リストAに登録されている物品のIDを候補物品一覧Cに登録しない。
このようにして候補物品一覧Cが作成されると、次に、CPU200は、図16のステップS43で、候補物品一覧Cから第1候補である物品(本)24を選出する。はじめのステップS43では、候補物品一覧Cの先頭に登録されている物品(本)24のIDを選出する。2回目以降のステップS43では、候補物品一覧Cの2番目以降に登録されている物品(本)24のIDを選出する。
そして、ステップS45では、ステップS43で物品(のID)が選出されたか否か、つまり、候補となる物品(本)24が存在したか否かを判断する。ステップS45で、YESと判断すると、次に、CPU200は、ステップS47において、ステップS43で選出された物品の位置情報を取得する。つまり、CPU200は、ステップS43で選出された物品(本)24(以下、「選出物品(本)24」と呼ぶ。)のIDをキーとして物品ローカル辞書205Aを検索することによって、当該物品IDが示す物品(本)24の位置の情報を取得する。
次に、CPU200は、ステップS49で、「選出物品(本)24」が、人間16が指示した物品(本)24であるか否かを人間16に確認するためにロボット12に発話させる際の発話内容を決定する。ロボット12が行うこの発話の内容には、サーバ20が、人間16が指示したと推定する物品(本)24を特定する単語(以下、「特定単語」と呼ぶ。)が含まれる。図6を参照して、サーバ20が、人間16が指示したと推定した物品(本)24が、物品IDが「123…0000046」である「花火の匠」とう本であったとする。この場合、ステップS49では、たとえば、「花火の匠の本ですね」、「黒色の本ですね」、「ハードカバーの本ですね」などという発話内容を決定する。この例の場合、それぞれ、「花火の匠」、「黒色」、「ハードカバー」が先述の「特定単語」である。この「発話内容の決定」の処理は、図22のフロー図に示す手順で実行される。
図22を参照して、まず、CPU200は、ステップS181で、メモリ204に設定されている個人正誤DB205Eを参照して、ロボット12が認識した人間16とコミュニケーションをとるのがはじめてであるか否か、つまり、当該人間16の指示する物品(本)24を特定するのがはじめてであるか否かを判断する。個人正誤DB205Eは、ロボット12と人間16とのコミュニケーション結果の記録である。つまり、この個人正誤DB205Eには、ロボット12とコミュニケーションを行った人間16のIDと当該人間16が指示する物品(本)24をシステム10が正しく推定することができたか否かを示す成功、不成功の別がコミュニケーションのたび毎に記録されている。個人正誤DB205Eに当該人間16のIDが記録されていなければ、当該人間16は初対面であると判断する。
ステップS181でYESと判断すると、つまり、人間16は初対面であると判断すると、ステップS183で、CPU200は、物品(本)24の「特定単語」を本24のタイトル(名称)に決定する。この本24のタイトル(名称)の内容は、図16のステップS43で選出した物品(本)24(「選出物品(本)24」)のIDを物品ローカル辞書205Aで検索することによって得ることができる。
そして、ステップS203では、メモリ204に設定されている発話辞書205Dを利用して、ステップS183で決定した「特定単語」である本24のタイトル(名称)、たとえば、「花火の匠」に基づいて「花火の匠の本ですね」などという発話内容を決定する。なお、ステップS203では、決定した発話内容をロボット12がこれにしたがって発話するための発話内容情報の生成も行う。
一方、ステップS181でNOと判断された場合、つまり、当該人間16のIDが個人正誤DB205Eに記録されている場合は、ステップS185で、CPU200は、同じく個人正誤DB205Eを参照して当該人間16とのコミュニケーションにおける成功率を計算し、成功率が、たとえば、70%以上であるか否かを判断する。ステップS185でNOと判断すると、先に説明したように、ステップS183で、物品(本)24の「特定単語」を本24のタイトル(名称)と決定し、ステップS203で、発話内容を決定する。
一方、ステップS185で、YESと判断すると、ステップS187で、「選出物品(本)24」に関する単語の一覧D(不図示)を物品ローカル辞書205Aから作成する。たとえば、「選出物品(本)24」が、図6を参照して物品IDが「123…0000046」である「花火の匠」という本24であったとすると、単語の一覧Dには、物品ローカル辞書205Aの物品IDが「123…0000046」であるレコードに登録されている単語である「花火の匠」、「黒色」、「ハードカバー」、「近藤四郎」、「ATR出版株式会社」が登録される。
単語の一覧Dが作成されると、次に、CPU200は、ステップS189で、単語の一覧Dに登録されている単語のうち、人間16の近傍に存在する物品(本)24に関連する単語と同一の単語を削除する。人間16の近傍には、物品ローカル辞書205Aに登録されている物品(本)24が存在することになる。「選出物品(本)24」が、図6を参照して物品IDが「123…0000046」である「花火の匠」という本24であったとすると、単語の一覧Dには、先述したように、「ハードカバー」という単語や「ATR出版株式会社」という単語が登録されている。
ここで、物品(本)24の「特定単語」を「ハードカバー」という単語や「ATR出版株式会社」という単語に決定し、ロボット12が「ハードカバーの本ですね」や「ATR出版株式会社の本ですね」と発話したとする。すると、図6の物品ローカル辞書205Aからわかるように、人間16の近傍には「ハードカバーの本」や「ATR出版株式会社の本」は複数存在するので、人間16はロボット12の発話に基づいてロボット12がどの物品(本)24を示しているのかがわからない。そこで、単語の一覧Dから、物品ローカル辞書205Aに記録されている「選出物品(本)24」以外のレコードに記録されている単語と同一の単語を削除する。
次に、ステップS191で、CPU200は、単語の一覧Dから6個未満の音素からなる単語、つまり、音声認識の処理において6個未満の音素に分解される単語を削除する。これは、音素数の少ない単語は正しく音声認識されにくいためである。なお、分解される音素の数は、当該単語を音声認識ローカル辞書205Bに参照することによって判明する当該単語に対応する音素記号列を構成する音素記号の数によって判断することができる。ただし、図11の音声認識ローカル辞書205Bに示した音素記号列は、説明の表現の都合上、アルファベットを用いてローマ字であらわしたものであり、図11に示すアルファベットが音素記号をあらわしたものではない。そして、ステップS193では、さらに、単語の一覧Dから平仮名の「う」で始まる単語を削除する。これは、「う」から始まる単語は正しく音声認識されにくいためである。
次に、CPU200は、ステップS195で、単語の一覧Dに単語が存在するか否かを判断する。ステップS195でNOと判断すると、「特定単語」とするべき単語が単語の一覧Dに存在しないので、ステップS197で指示形容詞である「あの」という単語を「特定単語」に決定する。そして、ステップS203では、発話辞書205Dを利用して、ステップS197で決定した「特定単語」である「あの」に基づいて「あの本ですね」などという発話内容を決定する。あるいは、指示形容詞とステップS187の段階で作成した単語の一覧Dに登録されているいずれかの単語を用いて、「あの白い本ですね」という発話内容にしてもよい。ただし、この例では、「白い本」という言葉によっては物品(本)24を一意に特定することはできない。なお、ステップS203では、指示代名詞を用いて「白いあれ(これ)ですね」という発話内容にしてもよいし、単に「あれ(これ)ですね」という発話内容にしてもよい。
一方、ステップS195でYESと判断すると、ステップS199で、メモリ204に設定されている音声認識率DB205Fを参照し、単語の一覧Dに登録されている単語のそれぞれの音声認識率を取得して単語の一覧Dに登録されている単語を音声認識率の高い順にソートする。そして、ステップS201では、単語の一覧Dの最上位に登録されているもっとも音声認識率の高い単語を「特定単語」に決定する。ステップS203では、発話辞書205Dを利用して、ステップS201で決定した「特定単語」に基づいて発話内容を決定する。このようにして、システム10が推定した人間16が指示した物品(本)24を人間16に確認するためにロボット12が発話する内容が決定される。
このように、人間16が指示したとシステム10が推定した物品(本)24を人間16に確認する際にロボット12が発話する内容に、音声認識率の高い「特定単語」を利用すると、人間16がこれを真似し、次回にその物品(本)24を指示する際にこの「特定単語」を利用すれば、システム10は音声認識による物品(本)24の特定を容易に行うことができるようになる。
図16に戻って、ステップS49において発話内容が決定されると、次に、CPU200は、ステップS51で、ステップS47で取得した「選出物品(本)24」の位置情報とステップS203(図22)で生成した発話内容情報とをロボット12に送信する。
ロボット12では、「選出物品(本)24」の位置情報と発話内容情報とを受信すると、CPU80が、図15のステップS11でYESと判断する。するとCPU80は、次のステップS13において、メモリ84に設定されている発話/ジェスチャ辞書85Aを参照して、「選出物品(本)24」の位置情報に基づいて「選出物品(本)24」を指差すとともに、発話内容情報に基づいて発話を行う。なお、このとき、CPU80は、受信した「選出物品(本)24」の位置情報をワールド座標系からロボット座標系に座標変換して利用する。
「選出物品(本)24」が「花火の匠」というタイトル(名称)の本24である場合は、このステップS13では、図1において右から2番名に置かれている本を指差しジェスチャで示すとともに、たとえば、「花火の匠の本ですね」のような発話を行う。
このようなロボット12の指差しと発話に対し、人間16は、「そうです」とか「ちがいます」などといった応答を行う。するとロボット12では、CPU80が、マイク66を通して入力された人間16の声を取り込み、ステップS15で人間16の応答があったと判断する。そして、ステップS17では、取り込んだ人間16の音声の情報とともに、当該音声を音声認識して肯定する内容であるか否定する内容であるかを判断させる指示をサーバ20に送信する。
サーバ20では、CPU200は、音声認識により肯定であるか否定であるかを判断させる指示と、音声認識すべき音声の情報を受信すると、図16のステップS53でYESと判断する。そして、次に、CPU200は、ステップS55で、受信した音声の情報に音声認識処理を施して、音声の内容が肯定を示すものであるか否定を示すものであるかを判断し、ステップS57でその判断結果をロボット12に送信する。
ロボット12では、音声認識による肯定であるか否定であるかの判断結果を受信すると、CPU80は、ステップS19でYESと判断する。そして、さらに、ステップS21ではサーバ20における音声認識の結果が肯定を示すものであったか否かを判断する。ステップS21でNOと判断すると、CPU80は、ステップS11で、サーバ20から「選出物品(本)24」の位置情報と発話内容情報とをさらに受信したか否かを判断する。
一方、ステップS21でYESと判断すると、ロボット12は、該当する物品(本)24の方向に移動し、該当する物品(本)24を把持して人間16の位置に運ぶ。つまり、物品(本)24が存在する位置の座標が既にわかっているので、ロボット12のCPU80は、車輪モータ36を制御して、ロボット12をその物品(本)24の位置に移動させ、次いでアクチュエータ108(図3)を制御することによってハンド56R(または56L)開閉して物品(本)24をハンド56R(または56L:図2)で把持させ、その状態で再び車輪モータ36を制御してロボット12を人間16の位置にまで移動させる。このようにして、ステップS23で、サーバ20が図16のステップS43で選出した「選出物品(本)24」を人間16に運ぶことができる。
一方、サーバ20では、図16のステップS57で、音声認識による人間16の音声の内容が肯定であるか否定であるかの判断結果をロボット12に送信した後、図17のステップS61で、当該判断の結果が肯定であったか否かを判断する。ステップS61でNOと判断すると、CPU200は、図16のステップS43で、音声認識の結果ならびに視線確信度と指差し方向確信度から作成した前述の候補物品一覧Cから、次の候補である物品(本)24の選出を行う。
このとき、候補物品一覧Cに他の物品(本)24のIDが登録されていない場合には、ステップS45で物品が選出されなかったと判断される(ステップS45でNO)。すると、CPU200は、ステップS59で候補物品がない旨の通知をロボット12に送信する。
ロボット12では、候補物品がない旨の通知を受信すると、CPU200が、図15のステップS25でYESと判断し、人間16が指示する物品(本)24を特定できなかったものとして処理を終了する。
一方、図17に戻って、ステップS61でYESと判断すると、次に、CPU200は、ステップS63で、人間16の指示する物品(本)24を特定することができたことを示すために、メモリ204に設定されているフラグscに数値「1」を記憶させてフラグscをオン状態にする。なお、フラグscの初期状態はオフ状態(数値「0」)である。
次に、CPU200は、ステップS65で、メモリ204に設定されているフラグnwがオン状態であるか否かを判断する。先に説明したように、このフラグnwは、人間16が発話した音声を音声認識した結果、音声認識できない単語が存在し、その単語が、人間16が指示した物品を特定するであろう単語である場合にオン状態に設定される。
ステップS65でYESと判断すると、CPU200は、ステップS67で、音声認識できなかった単語を物品辞書122に登録して辞書を更新する。具体的には、図19のステップS119で、メモリ204のワークエリアwaに格納された音声認識できなかった単語の音素記号列を、物品辞書122に登録する。たとえば、人間16が「ハナタク持ってきて」と発話し、「ハナタク」が音声認識できなかったが、視線や指差しに基づく推定により、人間16は「花火の匠」の本を指示していたと判明したとする。この場合、ワークエリアwaには単語「ハナタク」の音素記号列“hanataku”が格納されているので、この音素記号列を、図9に示すように、物品辞書122の物品のIDが「123…0000046」である「花火の匠」という本24のレコードの「属性」の項目に、この「ハナタク」という単語を発話した人間16のIDとともに記憶する。
次に、CPU200は、ステップS69で、音声認識できなかった単語を音声認識辞書126に新たなレコードとして登録して辞書を更新する。具体的には、ステップS67での例をそのまま用いると、図12に示すように、音声認識辞書126に、図16のステップS43で選出された物品(本)24(「選出物品(本)24」)の名称の単語である「花火の匠」を記憶した項目と、メモリ204のワークエリアwaに格納されている音素記号列である“hanataku”を記憶した項目とを含むレコードを追加する。このとき、当該レコードの「物品名称」の項目には、物品の名称(本24のタイトル(名称))であることを示す値「1」が格納される。
このように音声認識辞書122に「花火の匠」という単語と“hanataku”という音素記号列を登録しておくと、次回以降において、人間16が、たとえば、「ハナタク持ってきて」と発話すると、「ハナタク」を音声認識することができ、その音声認識の結果として物品(本)24の名称である「花火の匠」を得ることができる。
ステップS71では、メモリ204に設定されている個人正誤DB205Eを更新する。つまり、メモリ204に設定されているフラグscがオン状態であるか否かを判断し、オン状態である場合には、人間16が指示する物品(本)24を特定することができたということを示しているので、個人正誤DB205Eに当該人間16とのコミュニケーションが成功したことを示す情報を記憶する。一方、フラグscがオフ状態である場合には、当該人間16とのコミュニケーションが不成功であったことを示す情報を記憶する。
なお、ステップS65でNOと判断した場合は、ステップS67およびステップS69をスキップする。
このように、システム10では、音声認識、視線の推定、指差し方向の推定のそれぞれに基づいて、人間16が指示する物品(本)24の推定を行う。そして、人間16の発生する音声に含まれる物品(本)24を特定する単語が音声認識辞書126(音声認識ローカル辞書205B)に登録されておらず、物品(本)24を特定する単語が音声認識できなかった場合、視線の推定および指差し方向の推定に基づいて推定した物品を示す単語と音声認識できなかった単語の音素記号列とを対応つけて音声認識辞書126に登録する。
したがって、人間16が物品(本)24を指示する際に音声認識辞書126に登録されていない、人間16に独自の単語や地方の方言である単語を用いた場合でも、当該単語を音声認識辞書126に手間をかけずに登録し、次回からはこの単語を音声認識して人間16の指示する物品(本)24を特定することができる。
なお、上述の実施例では、この発明の物品推定システムをコミュニケーションロボットシステムに適用して説明したが、コミュニケーションロボットシステム以外の用途にも適用できることはいうまでもない。