図1を参照して、この実施例のコミュニケーションシステム(以下、単に「システム」という。)10は、コミュニケーションロボット(以下、単に「ロボット」という。)12を含む。このロボット12は、音声および身体動作(ジェスチャ)の少なくとも一方を用いて、人間や他のロボットとコミュニケーションを行うことができる。また、ロボット12は、たとえば無線LANなどのネットワーク14を介してサーバ20にアクセスすることができる。この実施例のロボット12は、サーバ20と協働して、人間16が音声、視線、および指差しで指示する物品を特定し、たとえばその物品を人間16に持って行くなどの動作を実行する。
人間16には、無線タグ18が装着されるとともに、図示しないが、モーションキャプチャのためのマーカが付着されている。無線タグ18は、識別情報を含む電波信号を発信する。ここでは、電波信号に含まれる識別情報は、人間16を個別に識別するために用いられる。マーカは、典型的には、人間の頭頂、両肩、両肘、両手の人差し指の先端などに設定されていて、それらのマーカが、人間16の全体とともに、サーバ20に制御されるカメラ120によって撮影される。カメラ120は、実施例では、3つ設けられ、人間16を3方向から撮影し、そのカメラ映像についてのデータ(カメラ映像データ)をサーバ20に供給する。
サーバ20は、ネットワーク14に接続され、上述のようにして入力されるカメラ映像データに基づいて、マーカの動きを検出するモーションキャプチャ処理を実行するとともに、たとえば肌色領域を検出することによって、人間16の顔の位置を特定することができる。
このシステム10では、上述のように、ロボット12が人間16の指示する物品を対象物として特定するものである。対象物となり得る物品の例として、この実施例では、本(書籍)24を用いる。本24(図1では、「OBJ」と表記してある。)には、その本を識別可能な情報(識別情報)を電波信号に含んで発信する無線タグ18が付着されている。
ただし、対象物となり得る物品は実施例の書籍だけでなく、もし家庭用のシステムであれば、家庭内のあらゆる物品が考えられる。また、当然、家庭用としてだけではなく、人間と一緒に働く任意の場所(会社、事務所、工場など)での利用が考えられる。かかる場合には、任意の場所に存在する種々の物品が対象物となり得る。
そして、このシステム10が対象とするすべての物品(本24)についての情報は、サーバ20に接続された物品辞書データベース(DB)122に登録される。物品辞書DB122については後述する。
また、システム10が対象とする人間16に装着された無線タグ18から発信された識別情報は、複数存在するアンテナ124のいずれかを介して無線タグ読取装置208(図4参照)で読み取られる。そして、無線タグ読取装置208で読み取られた識別情報はサーバ20に与えられる。これに応じて、サーバ20は、識別情報から人間116を特定するとともに、識別情報を受信した(読み取った)アンテナ124が配置されている位置から人間16の若干大まかな位置を把握(検出)する。
なお、図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や物品(この実施例では、本24)に装着され、無線タグ読取装置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は、図示しないインターフェースによって、物品辞書DB122および音声認識辞書DB126(図1参照)に接続されている。
メモリ204(RAM)には、後述するように、物品ローカル辞書データ504a、音声認識ローカル辞書データ504b、発話辞書データ504cおよび個人正誤情報データ504dが設定(記憶)されている。
物品ローカル辞書データ504aに対応する物品ローカル辞書は、後述するように、物品辞書DB122から抽出された内容が登録される辞書である。サーバ20は、ロボット12が人間16を認識した際に、当該人間16の近傍に存在する物品(本)24の情報だけを物品辞書DB122から抽出して物品ローカル辞書に登録する。音声認識ローカル辞書データ504bに対応する音声認識ローカル辞書は、後述するように、音声認識辞書DB126から抽出された内容が登録される辞書である。サーバ20は、ロボット12が人間16を認識して物品ローカル辞書を作成すると、当該物品ローカル辞書に登録されている単語を音声認識するために必要な情報を音声認識辞書DB126から抽出して音声認識ローカル辞書に登録する。したがって、物品ローカル辞書および音声認識ローカル辞書は、人間16の位置の変化に応じて動的に書き換えられる。このように、音声認識辞書DB126に記憶された音声認識辞書から音声認識ローカル辞書を作成し、音声認識に使用する辞書を小さくすることによって音声認識の対象となる単語(音素記号列)の数を少なくし、音声認識の処理にかかる時間を短くするとともに正しく音声認識できる割合を高めることができる。
発話辞書データ504cに対応する発話辞書は、サーバ20がロボット12に、人間16に対して発話させる音声の内容を決定するために必要な情報を記憶している。また、個人正誤情報データ504dに対応する個人正誤情報は、システム10が、人間16が指示した物品(本)24を特定することに最終的に成功したか否かを示す情報(音声認識の成功率)を、人間16の識別情報(ユーザID)別に記憶している。
次に、図5を参照して、物品辞書DB122に記憶される物品辞書は、たとえばユーコード(Ucode)のようなIDをそれぞれの物品の1つに割り当て、物品毎にその名称および属性などの必要な情報を登録している。なお、ユーコードは、具体的には、128ビットの数字からなり、340兆の1兆倍のさらに1兆倍の数の物品を個別に識別できるものである。ただし、この物品辞書DB122に使うIDは必ずしもこのようなユーコードである必要はなく、適宜の数字や記号の組み合わせからなるものであってよい。
このような物品辞書は、システム10(ロボット12およびサーバ20)が識別すべき対象物となるすべての、たとえば家庭内の物品をIDと文字列とで登録するものであり、いわばグローバル辞書に相当する。
物品辞書には、1つの物品(本)24についての情報が1つのレコードとして登録されている。そして、上述したように、たとえば、1つのレコードには、本のID以外に「名称」および「属性」が記憶される。
なお、図示は省略するが、本24についての情報として、「著者」および「出版社」などがさらに記憶されてもよい。
「名称」は、対応する本24の表題(題号)である。また、「属性」は、本24に関連する情報であり、この実施例では、本24を補足的に説明する内容である。この実施例では、「属性」の項目には、本24の種類(漫画、小説、雑誌など)、カバーの色および厚み(厚い、薄い)の情報が記憶されている。図5では分かり易く示すために、名称および属性の両方について、テキスト形式の文字列で記載してあるが、実際には、属性については、ローマ字で表記した文字列が記述されている。
次に、音声認識辞書DB126について説明する。一般的に、音声認識辞書には、単語辞書と文法辞書とが存在するが、音声認識辞書DB126は単語辞書についてのデータを記憶する。文法辞書についての説明は省略する。図示は省略するが、音声認識辞書DB126には、物品の名称(この実施例では、本24の名称)についてのテキスト形式の単語(または物品の識別情報)の各々に対応して、テキスト形式の単語に対応する音素記号形式(音素記号列)が記述されたテーブルのデータ(音声認識辞書データ)が記憶される。
音声認識の処理では、入力された音声を音素に分解し、分解した各音素について当該音素を表す記号を生成する。これによって、入力された音声の単語に相当する音素記号列が生成される。次に、入力された音声の単語に相当する音素記号列が、音声認識辞書DB126(実際には、後述する音声認識ローカル辞書)に記憶されている音素記号列と比較される。そして、入力された音声の単語に相当する音素記号列ともっとも近い音素記号列を音声認識辞書DB126(音声認識ローカル辞書)内で特定し、この特定した音素記号列に対応して記述されている単語を音声認識結果として出力する。
上述したように、このシステム10では、人間16が音声と視線および指差しによって物品(本)24を指示すると、ロボット12とサーバ20とが協働して、人間16が指示した物品(本)24を特定し、その特定した物品(本)24をロボット12が人間16のところに運搬などする。以下において、この人間16とシステム10とのやり取りをコミュニケーションと呼ぶことがある。
より詳細に述べると、このシステム10では、人間16がロボット12に近づくと、ロボット12が人間16を無線タグ18によって認識する。サーバ20には、システム10が対象とする物品(本)24のすべてが登録された物品辞書DB122、および音声認識によって物品(本)24を特定するための単語が登録された音声認識辞書DB126が接続されている。ロボット12は、人間16を認識すると、当該人間16の識別情報(ユーザID)をサーバ20に送信するとともに、サーバ20に対して物品辞書DB122および音声認識辞書DB126のローカル辞書(物品ローカル辞書、音声認識ローカル辞書)の作成を指示する。
ローカル辞書の作成の指示を受けると、サーバ20では、ロボット12が認識した人間16の位置を特定し、特定した当該人間16から所定の範囲内、たとえば、半径5m以内にある物品(本)24のレコードのみを物品辞書DB122から抽出して物品ローカル辞書を作成する。次に、音声認識辞書DB126から、物品ローカル辞書に登録されている物品(本)24を音声認識するため必要な情報のみを抽出して音声認識ローカル辞書を作成する。
その後、ロボット12は、認識した人間16に対して、たとえば、「何か本を持ってきましょうか?」という発話を行う。この発話に対し、人間16は、持ってきてほしい物品(本)24に視線を向けつつ当該物品(本)24を指差しながら、「漫画Aを持ってきて」などと答える。
すると、ロボット12は、「漫画Aを持ってきて」という人間16の声を音声認識し、人間16の視線を推定し、指差した指が向かっている方向を推定することによって、人間16が指示している物品(本)24を特定する。
人間16が指示している物品(本)24を特定すると、サーバ20は、人間16に特定した物品(本)24を確認するためにロボット12が発話する音声の内容、たとえば、「赤色の漫画ですか?」を決定し、ロボット12が当該物品(本)24(名称「漫画A」)を指し示しながらこれを発話する。つまり、ロボット12は、特定した物品(本)24を確認するための行動(確認行動)を行う。
このとき、サーバ20は、発話の内容を、ロボット12が認識した人間16の近傍や特定した物品(本)24の近傍に存在する他の物品とは異なる特徴(属性)を用いるとともに、音声認識し易い言葉で、物品(本)24を確認するための発話内容を生成する。
ここで、音声認識し易い言葉を選択するようにしてあるのは、人間はロボットの発話内容を真似する傾向があるとの知見に基づき、次回以降に、人間が音声で指示した物品(本)24を特定し易くするためである。ただし、発話内容が短すぎる場合には、音声認識を失敗する可能性が高くなり、一方、発話内容が長過ぎる場合には、人間によって真似されない可能性が高くなるため、この実施例では、2〜3個の属性の単語を用いて発話内容を生成するようにしてある。
ただし、これは単なる一例であり、発話内容は、属性の単語が長い場合には、1つの属性の単語のみを用いて決定しても良いし、属性の単語が短い場合には、さらに多くの属性を物品辞書に登録しておくことにより、4つ以上を用いて決定してもよい。
また、システム10が特定した物品(本)24を確認するために、ロボット12がたとえば「赤色の漫画ですか?」と発話すると、人間16は、「そうです」あるいは「ちがいます」などと発話し、ロボット12に返答する。サーバ20は、この人間16の返答における音声を音声認識し、システム10が特定した物品(本)24が、人間16が指示したものであるか否かを判断する。システム10が特定した物品(本)24が、人間16が指示したものでなかった場合には、次の候補である物品(本)24が、人間16が指示したものであるか否かを確認する。一方、システム10が特定した物品(本)24が、人間16が指示したものであった場合には、ロボット12が当該物品(本)24を人間16のところにまで運搬する。
また、サーバ20は、特定した物品(本)24を確認した結果(正誤の情報)を累積的に記録する。サーバ20は、この累積的に記録した正誤の情報を成功率(音声認識の成功率)として、発話内容を生成する際に参照する。
なお、発話内容を生成する際に単語(発話に使用する単語)を選択する方法が異なる以外は、出願人が先に出願し既に出願公開された特開平2009−223171号に開示された内容とほぼ同じであり、また、本願発明の本質的な内容ではないため、この実施例においては、単語を決定する方法についてのみ、詳細に説明してある。
まず、特定した物品(本)24(以下、「物品X」という。)の属性Fcがすべて取得される。たとえば、名称「漫画A」である物品(本)24が特定された場合には、属性Fcとして{漫画、赤、薄い}が取得される。次に、属性についての組(属性組)が生成される。この実施例では、属性Fcのべき集合(Power set)が計算され、属性組として生成される。以下、同様である。ただし、属性Fcのべき集合Power(Fc)は、{{漫画}、{赤}、{薄い}、{漫画、赤}、{赤、薄い}、{漫画、薄い}、{漫画、赤、薄い}}である。
次に、特定した物品Xの近傍(たとえば、30cm以内)に存在する他の物品が検出され、検出された他の物品についての属性が取得される。他の物品が複数存在する場合には、他の物品毎に属性組が生成(べき集合が計算)される。
たとえば、物品Xの近傍に、名称「漫画B」の本24(以下、「物品1」という。)と、名称「雑誌B」の本24(以下、「物品2」という。)が存在する場合には、これら他の物品1および物品2のそれぞれについて属性が取得され、それぞれについてべき集合が計算され、それぞれの属性組が生成される。ここで、物品1の属性は{漫画、青、薄い}であり、物品2の属性は{雑誌、赤、厚い}である。したがって、物品1のべき集合Power(F1)は、{{漫画}、{青}、{薄い}、{漫画、青}、{青、薄い}、{漫画、薄い}、{漫画、青、薄い}}である。また、物品2のべき集合Power(F2)は、{{雑誌}、{赤}、{厚い}、{雑誌、赤}、{赤、厚い}、{雑誌、厚い}、{雑誌、赤、厚い}}である。
次に、特定した物品24の属性組と、近傍の他の物品24の属性組とで共通する要素(共通要素)が抽出され、特定した物品24の属性組から共通要素が削除される。具体的には、物品Xの属性組と物品1の属性組とから共通要素E1が抽出されるとともに、物品Xの属性組と物品2の属性組とから共通要素E2が抽出される。
この実施例においては、共通要素E1は、{{漫画}、{薄い}、{漫画、薄い}}である。また、共通要素E2は、{赤}である。したがって、共通要素の集合Sは、共通要素E1と共通要素E2との和であり、具体的には、{{漫画}、{赤}、{薄い}、{漫画、薄い}}である。したがって、特定した物品Xのべき集合Power(Fc)の要素から集合Sの要素が削除(Power(Fc)−S)されると、{{漫画、赤}、{赤、薄い}、{漫画、赤、薄い}}となる。
次に、Power(Fc)−Sの要素のうち、単語数が最小となるものを抽出する。この演算子をたとえばmin()と定義する。したがって、min(Power(Fc)−S)は、{{漫画、赤}、{赤、薄い}}となる。
このように、単語数が最小となる要素を選択するのは、上述したように、発話内容を、音声認識を容易にする長さであり、かつ、人間に真似される程度の長さにするためである。
そして、min()の要素のうち、1つの要素が発話内容に使用される単語として選択される。この実施例では、特定した物品24の近傍に存在する他の物品24の属性との類似性が最も低い要素(非類似性が最も高い要素)が選択される。ただし、ここでの類似性は、音声で発音する場合に対比する単語が似ている度合を意味する。
具体的には、要素に含まれる属性を示す単語(文字列)についてのレーベンシュタイン距離の和を算出し、和が最大となる要素に含まれる属性を示す単語が発話内容に使用する単語として選択される。レーベンシュタイン距離(編集距離)は、2つの文字列がどの程度異なっているかを示す数値である。具体的には、文字の挿入や削除、置換によって、1つの文字列を別の文字列に変形するのに必要な手順の最小回数として与えられる。
ただし、この実施例では、正しく音声認識するようにするために、レーベンシュタイン距離を算出する場合には、ローマ字で示された文字列を用いるようにしてある。このローマ字で示された文字列は、物品辞書(物品ローカル辞書)に登録されている。ただし、属性に含まれる種類、色および厚みのそれぞれについて(同じ属性同士で)レーベンシュタイン距離が算出され、合計される。
図8(A)に示すように、上記のように選出された{漫画、赤}についてレーベンシュタイン距離を算出する場合には、属性のうち、{種類、色}が対比される。したがって、特定した物品Xと物品1では、種類については“manga”ですべて一致し、色については“aka”と“ao“とで2文字の置き換えが必要であるため、レーベンシュタイン距離LDは「2」となる。また、特定した物品Xと物品2とでは、種類については“manga”と“zasshi”で4文字の置き換えと1文字の追加が必要であり、色については“aka”ですべて一致するため、レーベンシュタイン距離LDは「5」となる。したがって、発話内容として{種類、色}である{漫画、赤}を用いる場合のレーベンシュタイン距離LDの合計は「7」となる。
一方、図8(B)に示すように、上記のように選出された{赤、薄い}についてレーベンシュタイン距離を算出する場合には、属性のうち、{色、厚み}が対比される。したがって、特定した物品Xと物品1とでは、色については“aka”と“ao”で2文字の置き換えが必要であり、厚みについては“usui”ですべて一致するため、レーベンシュタイン距離LDは「2」となる。また、特定した物品Xと物品2とでは、色については“aka”ですべて一致し、厚みについては“usui”と“atsui”で1文字の追加と1文字の置き換えが必要であるため、レーベンシュタイン距離は「2」となる。したがって、発話内容として{色、厚み}である{赤、薄い}を用いる場合のレーベンシュタイン距離LDの合計は「4」となる。
以上より、発話内容としては、レーベンシュタイン距離LDの合計が大きい{漫画、赤}が選択される。
次に、特定した物品(本)24の近傍に他の物品(本)24が存在しない場合についての発話内容に使用する単語の選択方法につい説明する。
特定した物品(本)24の近傍に他の物品(本)24が存在しない場合には、特定した物品(本)24のすべての属性が取得される。特定した物品(本)24の近傍に他の物品(本)24が存在しない場合には、基本的には、属性のうち、種類、色および厚みの文字列のいずれを用いても、当該特定の物品(本)24を確認することができるからである。
ただし、人間16の近傍に他の物品(本)24が存在する場合には、当該他の物品(本)24の属性の文字列とのレーベンシュタイン距離の和が最大となる属性の単語を発話内容に使用する単語として選択(決定)する。ここでは、他の物品との間で、属性の種類、色、厚みのそれぞれについてレーベンシュタイン距離LDを算出し、種類、色、厚みについてのレーベンシュタイン距離LDの和を算出する。そして、最も和の大きい単語(種類、色、厚みについての単語)を、発話内容に使用する単語として選択する。
なお、レーベンシュタイン距離LDを求める方法は、図8(A)および(B)を用いて説明したとおりであり、重複した説明は省略する。
図9は図4に示したメモリ204(RAM)のメモリマップ500の一例を示す図解図である。図9に示すように、RAMは、プログラム記憶領域502およびデータ記憶領域504を含む。
プログラム領域502には、サーバ20の全体制御を実行するための情報処理プログラムが記憶され、この情報処理プログラムは、動作制御プログラム502a、音声認識プログラム502bおよび発話内容生成プログラム502cなどによって構成される。これらのプログラムは、一度に全部または必要に応じて部分的に、HDDから読み出され、RAMのプログラム記憶領域502に記憶される。ただし、プログラムは、図示しないROMに記憶しておき、そこから読み出してもよい。
動作制御プログラム502aは、ロボット12の指差し動作をなどの身体動作についての制御情報を算出し、ロボット12に指示するためのプログラムである。音声認識プログラム502bは、ロボット12から送信される音声信号に対応する音声を認識するためのプログラムである。発話内容生成プログラム502cは、確認行動における発話内容を生成するためのプログラムである。
図示は省略するが、プログラム記憶領域502には、人間の視線方向を検出するためのプログラムなどの他のプログラムも記憶される。
また、データ記憶領域504には、物品ローカル辞書データ504a、音声認識ローカル辞書データ504b、発話辞書データ504cおよび個人正誤情報データ504dなどが記憶される。さらに、データ記憶領域504には、辞書登録フラグ504eが設けられる。
物品ローカル辞書データ504aは、物品辞書DB122に記憶されたオリジナルの物品辞書(グローバル辞書)から、ロボット12から送信されたユーザIDで特定される人間16を中心として所定の範囲内に存在する物品(本)24のレコードを抽出した一部の物品辞書のデータである。音声認識ローカル辞書データ504bは、音声認識辞書DB126に記憶されたオリジナルの音声認識辞書(グローバル辞書)から、物品ローカル辞書データ504aに対応する一部の物品辞書に登録された物品等を認識するために抽出した一部の音声認識辞書のデータである。
発話辞書データ504cは、サーバ20がロボット12に、人間16に対して発話させる音声の内容すなわち発話内容を生成するために必要な情報についてのデータである。
この実施例では、物品の属性として、種類、色および厚みを含むようにしてあるため、発話内容は、次のような定型の文章で決定されている。たとえば、色と種類についての単語を使用する場合には、「○○の△△ですか?」という発話内容に決定されている。ただし、「○○」のところには、特定した物品Xの属性に記述された色(赤色、青色、黄色、茶色、白色、黒色など)についての単語が入り、「△△」のところには、特定した物品Xの属性に記述された種類(漫画、小説、雑誌など)の単語が入る。以下、同じ。
また、厚みと種類についての単語が使用される場合には、「××△△ですか?」という発話内容に決定されている。ただし、「××」のところには、特定した物品Xの属性に記述された厚み(厚い、薄い)の単語が入る。以下、同じ。
さらに、色と厚みについての単語が使用される場合には、「○○の××本ですか?」という発話内容に決定されている。ただし、この実施例では、物品として本24を用いてを説明してあるため、「本」を発話するようにしてあるが、他の物品を用いる場合には、その普通名詞が用いられる。
個人正誤情報データ504dは、ユーザIDに対応して音声認識の成功率が記述されたテーブルについてのデータである。たとえば、音声認識の正誤は、コミュニケーションの回数(累計)における音声認識を成功した回数(特定した物品(本)24が正しかった回数)の割合(パーセンテージ)で表される。
辞書登録フラグ504eは、確認行動における発話で使用することが決定され、物品Xを指示するための1つの属性についての単語と物品Xの普通名詞についての単語とで構成される語または複数の属性についての単語で構成される語(以下、これらを「特定語」という。)を音声認識辞書に登録するか否かを判断するためのフラグである。辞書登録フラグ504eは、1ビットのレジスタで構成されて、当該フラグがオンであれば、レジスタにデータ値「1」が設定され、当該フラグがオフであれば、レジスタにデータ値「0」が設定される。ただし、特定語を音声認識辞書に登録する場合に、辞書登録フラグ504eはオンされ、それを音声認識辞書に登録しない場合には、辞書登録フラグ504eはオフされる。
たとえば、確認行動の発話において、物品Xの種類(ここでは、“漫画”)と色(ここでは、“赤”)の単語が使用される場合には、特定語として“赤色の漫画”が登録される。同様に、物品Xの種類と厚み(ここでは“厚い”)の単語が使用される場合には、特定語として“厚い漫画”が登録される。また、確認行動の発話において、物品Xの色と厚みの単語が使用される場合には、さらに物品Xの普通名詞の単語が用いられ、特定語として“赤色の厚い本”が登録される。説明は省略するが、他の種類、色および厚みの単語が使用される場合についても同様である。
なお、図示は省略するが、データ記憶領域504には、情報処理プログラムの実行に必要な他のデータが記憶され、必要に応じて、カウンタ(タイマ)や他のフラグ等も設けられる。
図10は、図4に示したCPU200の確認行動決定処理のフロー図である。図10に示すように、CPU200は、確認行動決定処理を開始すると、ステップS1で、ロボット12の位置と、特定した物品Xの位置とから指差し動作を生成する。
次のステップS3では、初対面のユーザであるかどうかを判断する。ここでは、CPU200は、ロボット12が認識した人間16とコミュニケーションをとるのがはじめてであるか否か、つまり、当該人間16の指示する物品(本)24を特定するのがはじめてであるか否かを判断する。具体的には、CPU200は、ロボット12から送信されたユーザIDが、個人正誤情報データ504dに登録されているかどうかを判断する。
ステップS3で“YES”であれば、つまり初対面のユーザであれば、ステップS5で、確認行動の発話内容に含む(発話に使用する)単語を、特定した物品Xの名称に決定して、ステップS13に進む。一方、ステップS3で“NO”であれば、つまり初対面のユーザでなければ、ステップS7で、当該ユーザについての音声認識の成功率が70%以上であるかどうかを判断する。ただし、CPU200は、個人正誤情報データ504dを参照して、ロボット12から送信されたユーザIDに対応して記述された成功率を取得する。
なお、ステップS7では、音声認識の成功率が高いか低いかを判断する閾値として70%を設定してあるが、これに限定される必要はなく、閾値はこのシステム10を適用する環境や使用形態等によって自由に変更することができる。
ステップS7で“NO”であれば、つまり音声認識の成功率が70%未満であれば、ステップS5に進む。一方、ステップS7で“YES”であれば、つまり音声認識の成功率が70%以上であれば、ステップS9で、後述する単語選択処理(図11参照)を実行する。そして、ステップS11で、辞書登録フラグ504eをオンして、ステップS13に進む。図示および説明は省略したが、CPU200は、確認行動決定処理を開始したときに、辞書登録フラグ504eをオフする。
ステップS13では、発話内容を生成する。ここでは、CPU200は、発話辞書データ504cを参照して、確認行動における発話内容を生成する。このとき、ステップS5で選択された物品Xの名称を示す単語またはステップS9で選択された属性についての単語が用いられる。
次のステップS15では、辞書登録フラグ504eがオンであるかどうかを判断する。ステップS15で“NO”であれば、つまり辞書登録フラグ504eがオフであれば、そのままステップS19に進む。一方、ステップS15で“YES”であれば、つまり辞書登録フラグ504eがオンであれば、ステップS17で、生成された発話内容に含まれる特定語を、物品Xに対応して当該ユーザIDとともに音声認識DB126内の音声認識辞書データに記憶(登録ないし追加)して、ステップS19に進む。
したがって、これ以降に、当該ユーザIDで特定されるユーザが当該物品Xを指示する場合に特定語を用いると、当該特定語を音声認識することにより、対応する当該物品Xを特定することができる。したがって、円滑なコミュニケーションを図ることができる。このような結果をもたらすのは、上述したように、ロボット12が発声した内容を人間が真似する傾向があるためである。
ステップS19では、ステップS1で生成した指差し動作と、ステップS13で決定した発話内容とをロボット12に送信して、確認行動決定処理を終了する。これに応じて、ロボット12では、サーバ20から指示された指差し動作を実行するとともに、サーバ20から指示された発話内容を発話(音声出力)する。つまり、ロボット12は、特定した物品Xについての確認行動を実行する。そして、図示は省略するが、その後のロボット12へのユーザの返答(“はい”または“いいえ”)に応じて、サーバ20は、この返答の内容を音声認識することにより、個人正誤情報データ504dを更新する。
なお、このような確認決定処理は、ロボット12からの要求がある場合に実行され、ロボット12からの要求が無い場合には、待機状態となっている。
図11は、図10のステップS9に示した単語選択処理のフロー図である。図11に示すように、CPU200は、単語選択処理を開始すると、ステップS31で、特定した物品Xの近傍に他の物品が在るかどうかを判断する。ここでは、CPU200は、物品Xに装着された無線タグ18から発信された電波を受信したアンテナ124と同じアンテナ124によって電波を受信された物品24が在るかどうかを判断する。
ステップS31で“YES”であれば、つまり物品Xの近傍に他の物品24が在る場合には、ステップS33で、後述する物品Xの属性組を生成する処理(図12参照)を実行し、ステップS35で、後述する物品Xの近傍にある他の物品の属性組を生成する処理(図13参照)を実行する。続いて、ステップS37で、後述する物品Xの属性組を低減する処理(図14参照)を実行し、ステップS39で、物品Xの属性組から単語数が最小の属性組を抽出する。そして、ステップS41で、後述する単語選択(1)処理(図15参照)を実行して、確認行動決定処理にリターンする。
また、ステップS31で“NO”であれば、つまり物品Xの近傍に他の物品24が無い場合には、ステップS43で、後述する物品Xの呼び名の候補を決定する処理(図16参照)を実行する。次のステップS45では、ユーザ16の近傍に他の物品24が在るかどうかを判断する。ここでは、CPU200は、特定されたユーザIDが示すユーザ16に装着された無線タグ18から発信された電波を受信したアンテナ124と同じアンテナ124によって電波を受信された物品24が在るかどうかを判断する。
ステップS45で“NO”であれば、つまりユーザの近傍に他の物品24が無ければ、ステップS53で、候補の呼び名から1つの単語を所定のルールで選択して、確認行動決定処理にリターンする。たとえば、CPU200は、ステップS53では、呼び名の候補から1の単語をランダムに選択したり、予めシステム10ないしサーバ20の管理者等が決定した1の属性についての単語を選択したりする。
一方、ステップS45で“YES”であれば、つまりユーザの近傍に他の物品24が在れば、ステップS47で、物品ローカル辞書データ504aを参照して、近傍の他の物品24の属性を検索する。ここでは、CPU200は、他の物品24の物品IDを検索する。続くステップS49では、検索した物品IDに対応して記載されたレコードから、当該他の物品24の属性を取得する。以下、物品24の属性を検索したり、属性を取得したりする場合について同様である。そして、ステップS51で、後述する単語選択(2)処理(図17参照)を実行して、確認行動決定処理にリターンする。
図12に示すように、CPU200は、図11のステップS33に示した物品Xの属性組を生成する処理を開始すると、ステップS61で、物品Xの属性を検索する。続くステップS63では、物品Xの属性を取得する。
続いて、ステップS65では、属性のべき集合を計算する。ここでは、上述したように、物品Xの属性Fcについてのべき集合Power(Fc)が計算される。そして、ステップS67で、べき集合Power(Fc)を物品Xの属性組として生成して、単語選択処理にリターンする。
図13に示すように、CPU200は、図11のステップS35に示した近傍の他の物品の属性組を生成する処理を開始すると、ステップS71で、他の物品K(Kは他の物品を識別するための自然数である。以下、同じ。)の属性を検索し、ステップS73で、他の物品Kの属性を取得する。次のステップS75では、属性のべき集合Power(FK)を計算する。そして、ステップS77で、べき集合Power(FK)を他の物品Kの属性組として生成し、単語選択処理にリターンする。
なお、図13に示す近傍の他の物品の属性組の生成処理は、他の物品毎に実行される。
図14に示すように、CPU200は、図11のステップS37に示した物品Xの属性組を低減する処理を開始すると、ステップS81で、物品Xの属性組のべき集合Power(Fc)と、他の物品Kの属性組のべき集合Power(K)の共通要素を抽出する。ただし、他の物品Kが複数存在する場合には、他の物品K毎に共通要素が抽出される。次のステップS83では、物品Xの属性組から共通要素を削除して、単語選択処理にリターンする。
図15に示すように、CPU200は、図11に示すステップS41に示した単語選択(1)処理を開始すると、物品Xの属性組の文字列と、他の物品Kの属性組の文字列のレーベンシュタイン距離LDの和を算出する。次のステップS91では、レーベンシュタイン距離LDの和が最大となる属性組を確認行動で使用する単語として選択して、単語選択処理にリターンする。
なお、物品Xの属性組の低減処理の結果、物品Xの属性組が一組しか残っていない場合には、単語選択(1)処理を実行するまでもなく、当該一組の属性組が確認行動で使用する単語として選択される。
図16に示すように、CPU200は、図11に示すステップS43に示した物品Xの呼び名の候補を生成する処理を開始すると、ステップS101で、物品Xの属性を検索する。次のステップS103では、物品Xの属性(この実施例では、種類、色、厚みについての単語)を取得する。そして、ステップS105で、各属性を確認行動で使用する単語の候補として決定し、単語選択処理にリターンする。
図17に示すように、CPU200は、図11に示すステップS51に示した単語選択(2)処理を開始すると、ステップS111で、候補の属性の文字列と、ユーザの位置近傍の他の物品毎の属性の文字列のレーベンシュタイン距離LDの和を計算する。ただし、他の物品X毎に、種類、色および厚みのそれぞれについてのレーベンシュタイン距離LDが求められ、その和が計算される。そして、ステップS113では、レーベンシュタイン距離LDの和が最大となる属性(種類、色または厚み)を確認行動で使用する単語として選択し、単語選択処理にリターンする。
この実施例によれば、特定した物品の近傍に存在する他の物品とは異なる属性組を抽出し、さらに、他の物品の属性組とレーベンシュタイン距離が最大の属性組を確認行動で使用する単語として選択するので、予め音声認識率を検出する必要が無く、確認行動で使用する単語を簡単に決定することができる。したがって、確認行動における発話内容を簡単に生成することができる。
また、この実施例によれば、抽出された属性組のうち、単語数が最小となる属性組を抽出するので、人間にとって真似し易い言葉を発話内容に含めることができる。
さらに、この実施例によれば、他の物品とは異なる属性組を発話内容に含めるとともに、当該属性組で決定される言葉(特定語)を、音声認識辞書にユーザに対応して追加的に登録するので、それ以降において、特定語が使用されたとしても、音声認識により特定語が指示する物品を特定することができる。したがって、当該ユーザとのコミュニケーションを円滑に行うことができる。
なお、この実施例では、サーバが音声認識処理および確認行動決定処理を実行するようにしたが、これらの処理をロボットで実行するようにしてもよい。かかる場合には、音声認識辞書データ(音声認識ローカル辞書データ)、物品辞書データ(物品ローカル辞書データ)、発話辞書データおよび個人正誤情報データをロボット内部のメモリやロボットがアクセス可能な外部メモリに記憶する必要がある。