図1を参照して、この実施例のコミュニケーションロボットシステム(以下、単に「システム」という。)10は、コミュニケーションロボット(以下、単に「ロボット」という。)12を含む。このロボット12は、たとえば人間14のようなコミュニケーションの対象とコミュニケーションすることを目的とした相互作用指向のものであり、身振り(手振り)および発話(音声)の少なくとも一方を用いたコミュニケーションの行動(以下、「コミュニケーション行動」ということがある。)を行う機能を備えている。
ロボット12は、人間のような身体を有し、その身体を用いてコミュニケーションのために必要な複雑な身体動作を生成する。具体的には、図2を参照して、ロボット12は台車32を含み、この台車32の下面には、このロボット12を自律移動させる車輪34が設けられる。この車輪34は、車輪モータ(ロボット12の内部構成を示す図3において参照番号「36」で示す。)によって駆動され、台車32すなわちロボット12を前後左右任意の方向に動かすことができる。
なお、図2では示さないが、この台車32の前面には、衝突センサ(図3において参照番号「38」で示す。)が取り付けられ、この衝突センサ38は、台車32への人や他の障害物の接触を検知する。そして、ロボット12の移動中に障害物との接触を検知すると、直ちに車輪34の駆動を停止してロボット12の移動を急停止させる。
また、ロボット12の背の高さは、この実施例では、人、特に子供に威圧感を与えることがないように、100cm程度とされている。ただし、この背の高さは任意に変更可能である。
台車32の上には、多角形柱のセンサ取付パネル40が設けられ、このセンサ取付パネル40の各面には、超音波距離センサ42が取り付けられる。この超音波距離センサ42は、取付パネル40すなわちロボット12の周囲の主として人との間の距離を計測するものである。
台車32の上には、さらに、ロボット12の胴体が、その下部が上述の取付パネル40に囲まれて、直立するように取り付けられる。この胴体は下部胴体44と上部胴体46とから構成され、これら下部胴体44および上部胴体46は、連結部48によって連結される。連結部48には、図示しないが、昇降機構が内蔵されていて、この昇降機構を用いることによって、上部胴体46の高さすなわちロボット12の高さを変化させることができる。昇降機構は、後述のように、腰モータ(図3において参照番号「50」で示す。)によって駆動される。上で述べたロボット12の身長100cmは、上部胴体46をそれの最下位置にしたときの値である。したがって、ロボット12の身長は100cm以上にすることができる。
上部胴体46のほぼ中央には、1つの全方位カメラ52と、1つのマイク16とが設けられる。全方位カメラ52は、ロボット12の周囲を撮影するもので、後述の眼カメラ54と区別される。マイク16は、周囲の音、とりわけ人の声を取り込む。
上部胴体46の両肩には、それぞれ、肩関節56Rおよび56Lによって、上腕58Rおよび58Lが取り付けられる。肩関節56Rおよび56Lは、それぞれ3軸の自由度を有する。すなわち、右肩関節56Rは、X軸,Y軸およびZ軸の各軸廻りにおいて上腕58Rの角度を制御できる。Y軸は、上腕58Rの長手方向(または軸)に平行な軸であり、X軸およびZ軸は、そのY軸に、それぞれ異なる方向から直交する軸である。左肩関節56Lは、A軸,B軸およびC軸の各軸廻りにおいて上腕58Lの角度を制御できる。B軸は、上腕58Lの長手方向(または軸)に平行な軸であり、A軸およびC軸は、そのB軸に、それぞれ異なる方向から直交する軸である。
上腕58Rおよび58Lのそれぞれの先端には、肘関節60Rおよび60Lを介して、前腕62Rおよび62Lが取り付けられる。肘関節60Rおよび60Lは、それぞれ、W軸およびD軸の軸廻りにおいて、前腕62Rおよび62Lの角度を制御できる。
なお、上腕58Rおよび58Lならびに前腕62Rおよび62L(いずれも図2)の変位を制御するX,Y,Z,W軸およびA,B,C,D軸では、「0度」がホームポジションであり、このホームポジションでは、上腕58Rおよび58Lならびに前腕62Rおよび62Lは下方向に向けられる。
また、図2では示さないが、上部胴体46の肩関節56Rおよび56Lを含む肩の部分や上述の上腕58Rおよび58Lならびに前腕62Rおよび62Lを含む腕の部分には、それぞれ、タッチセンサ(図3において参照番号64で包括的に示す。)が設けられていて、これらのタッチセンサ64は、人がロボット12のこれらの部位に接触したかどうかを検知する。
前腕62Rおよび62Lのそれぞれの先端には、手に相当する球体66Rおよび66Lがそれぞれ固定的に取り付けられる。ただし、指の機能(握る、掴む、摘むなど)が必要な場合には、球体66Rおよび66Lに代えて、人の手の形をした「手」を用いることも可能である。
上部胴体46の中央上方には、首関節68を介して、頭部70が取り付けられる。この首関節68は、3軸の自由度を有し、S軸,T軸およびU軸の各軸廻りに角度制御可能である。S軸は首から真上に向かう軸であり、T軸およびU軸は、それぞれ、このS軸に対して異なる方向で直交する軸である。頭部70には、人の口に相当する位置に、スピーカ72が設けられる。スピーカ72は、ロボット12が、それの周囲の人に対して音声または声によってコミュニケーションを図るために用いられる。ただし、スピーカ72は、ロボット12の他の部位たとえば胴体に設けられてもよい。
また、頭部70には、目に相当する位置に眼球部74Rおよび74Lが設けられる。眼球部74Rおよび74Lは、それぞれ眼カメラ54Rおよび54Lを含む。なお、右の眼球部74Rおよび左の眼球部74Lをまとめて眼球部74といい、右の眼カメラ54Rおよび左の眼カメラ54Lをまとめて眼カメラ54ということもある。眼カメラ54は、ロボット12に接近した人の顔や他の部分ないし物体等を撮影してその映像信号を取り込む。
なお、上述の全方位カメラ52および眼カメラ54のいずれも、たとえばCCDやCMOSのような固体撮像素子を用いるカメラであってよい。
たとえば、眼カメラ54は眼球部74内に固定され、眼球部74は眼球支持部(図示せず)を介して頭部70内の所定位置に取り付けられる。眼球支持部は、2軸の自由度を有し、α軸およびβ軸の各軸廻りに角度制御可能である。α軸およびβ軸は頭部70に対して設定される軸であり、α軸は頭部70の上へ向かう方向の軸であり、β軸はα軸に直交しかつ頭部70の正面側(顔)が向く方向に直交する方向の軸である。この実施例では、頭部70がホームポジションにあるとき、α軸はS軸に平行し、β軸はU軸に平行するように設定されている。このような頭部70において、眼球支持部がα軸およびβ軸の各軸廻りに回転されることによって、眼球部74ないし眼カメラ54の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。
なお、眼カメラ54の変位を制御するα軸およびβ軸では、「0度」がホームポジションであり、このホームポジションでは、図2に示すように、眼カメラ54のカメラ軸は頭部70の正面側(顔)が向く方向に向けられ、視線は正視状態となる。
図3には、ロボット12の内部構成を示すブロック図が示される。この図3に示すように、ロボット12は、全体の制御のためにマイクロコンピュータまたはCPU76を含み、このCPU76には、バス78を通して、メモリ80,モータ制御ボード82,センサ入力/出力ボード84および音声入力/出力ボード86が接続される。
メモリ80は、図示しないが、ROMやHDD、RAM等を含み、ROMまたはHDDにはこのロボット12の制御プログラムおよびデータ等が予め格納されている。CPU76は、このプログラムに従って処理を実行する。具体的には、ロボット12の身体動作を制御するための複数のプログラム(行動モジュールと呼ばれる。)が記憶される。たとえば、行動モジュールが示す身体動作としては、「握手」、「抱っこ」、「指差し」…などがある。行動モジュールが示す身体動作が「握手」である場合には、当該行動モジュールを実行すると、ロボット12は、たとえば、右手を前に差し出す。また、行動モジュールが示す身体動作が「抱っこ」である場合には、当該行動モジュールを実行すると、ロボット12は、たとえば、両手を前に差し出す。さらに、行動モジュールが示す身体動作が「指差し」である場合には、当該行動モジュールを実行すると、ロボット12は、たとえば、右手(右腕)または左手(左腕)で所望の方向を指示する。また、RAMは、一時記憶メモリとして用いられるとともに、ワーキングメモリとして利用され得る。
モータ制御ボード82は、たとえばDSP(Digital Signal Processor)で構成され、右腕、左腕、頭および眼等の身体部位を駆動するためのモータを制御する。すなわち、モータ制御ボード82は、CPU76からの制御データを受け、右肩関節56RのX,YおよびZ軸のそれぞれの角度を制御する3つのモータと右肘関節60Rの軸Wの角度を制御する1つのモータを含む計4つのモータ(図3ではまとめて、「右腕モータ」として示す。)88の回転角度を調節する。また、モータ制御ボード82は、左肩関節56LのA,BおよびC軸のそれぞれの角度を制御する3つのモータと左肘関節60LのD軸の角度を制御する1つのモータとを含む計4つのモータ(図3ではまとめて、「左腕モータ」として示す。)90の回転角度を調節する。モータ制御ボード82は、また、首関節68のS,TおよびU軸のそれぞれの角度を制御する3つのモータ(図3ではまとめて、「頭部モータ」として示す。)92の回転角度を調節する。モータ制御ボード82は、また、腰モータ50、および車輪34を駆動する2つのモータ(図3ではまとめて、「車輪モータ」として示す。)36を制御する。さらに、モータ制御ボード82は、右眼球部74Rのα軸およびβ軸のそれぞれの角度を制御する2つのモータ(図3ではまとめて、「右眼球モータ」として示す。)94の回転角度を調節し、また、左眼球部74Lのα軸およびβ軸のそれぞれの角度を制御する2つのモータ(図3ではまとめて、「左眼球モータ」として示す。)96の回転角度を調節する。
なお、この実施例の上述のモータは、車輪モータ36を除いて、制御を簡単化するためにそれぞれステッピングモータまたはパルスモータであるが、車輪モータ36と同様に、直流モータであってよい。
センサ入力/出力ボード84も、同様に、DSPで構成され、各センサやカメラからの信号を取り込んでCPU76に与える。すなわち、超音波距離センサ42の各々からの反射時間に関するデータがこのセンサ入力/出力ボード84を通して、CPU76に入力される。また、全方位カメラ52からの映像信号が、必要に応じてこのセンサ入力/出力ボード84で所定の処理が施された後、CPU76に入力される。眼カメラ54からの映像信号も、同様にして、CPU76に与えられる。また、タッチセンサ64からの信号がセンサ入力/出力ボード84を介してCPU76に与えられる。
スピーカ72には音声入力/出力ボード86を介して、CPU76から、合成音声データが与えられ、それに応じて、スピーカ72からはそのデータに従った音声または声が出力される。また、マイク24からの音声入力が、音声入力/出力ボード86を介してCPU76に取り込まれる。
また、CPU76には、バス78を通して、通信LANボード98が接続される。この通信LANボード98も、同様に、DSPで構成され、CPU76から与えられた送信データを無線通信装置100に与え、無線通信装置100から送信データを送信させる。また、通信LANボード98は無線通信装置100を介してデータを受信し、受信データをCPU76に与える。
図1に戻って、システム10はモーションキャプチャシステム20を含む。モーションキャプチャシステム(3次元動作計測装置)20としては、公知のモーションキャプチャシステムが適用される。たとえば、VICON社(http://www.vicon.com/)の光学式のモーションキャプチャシステムを用いることができる。図示は省略するが、モーションキャプチャシステム20は、PC或いはWSのようなコンピュータを含み、このコンピュータとロボット20とが、有線または無線LAN(図示せず)によって互いに接続される。
図4を用いて具体的に説明すると、モーションキャプチャシステム20においては、複数(少なくとも3つ)の赤外線照射機能を有するカメラ20aが、空間ないし環境に存在するロボット12、人間14、オブジェクトOBに対して異なる方向に配置される。ロボット12および人間14には、複数(この実施例では、3個)の赤外線反射マーカ30が取り付けられる。具体的には、図4からも分かるように、赤外線反射マーカ30は、ロボット12および人間14共に、頭頂および眼の上(額)に取り付けられる。これは、この実施例では、ロボット12および人間14の位置(3次元位置)および顔(視線)方向を検出するためである。ただし、位置や視線方向を正確に検出するために、さらに他の部位に赤外線反射マーカ30を取り付けるようにしてもよい。また、ロボット12および人間14が存在する環境(空間)に存在する物(オブジェクトOB)にも赤外線反射マーカ30が取り付けられる。これは、オブジェクトOBの位置(3次元位置)もモーションキャプチャシステム20によって検出するようにしてあるためである。ただし、オブジェクトOBをステレオカメラ等の他のセンサによって検出する場合には、赤外線反射マーカ30を取り付ける必要はない。たとえば、ステレオカメラとしては、上述したロボット12の眼カメラ54を用いることができる。かかる場合には、ロボット12が同じ場所で360°旋回し、そのとき取得される画像データに基づいて、ロボット12を中心とするオブジェクトOBの相対位置(距離)を検出(算出)することができる。
モーションキャプチャシステム20のコンピュータは、カメラ20aから画像データをたとえば60Hz(1秒間に60フレーム)で取得し、画像データを画像処理することによって、その計測時の全ての画像データにおける各マーカ30の2次元位置を抽出する。そして、コンピュータは、画像データにおける各マーカ30の2次元位置に基づいて、実空間における各マーカ30の3次元位置を算出し、算出した3次元位置の座標データ(数値データ)を、ロボット12(CPU76)からの要求に応じてロボット12に送信する。
ロボット12は、モーションキャプチャシステム20から送信される座標データを取得し、自身、人間14および環境内に存在するすべてのオブジェクトOBについての3次元位置を取得する。そして、ロボット12は、自身を中心(原点)とした場合(ロボット座標)における、人間14の位置(距離)および各オブジェクトOBの位置(距離)を検出(算出)する。また、このとき、ロボット12は、人間14と各オブジェクトOBとの距離も検出(算出)する。
このような構成のロボット12は、上述したように、人間14との間でコミュニケーションする場合には、身振り(ジェスチャ)および音声(発話)の少なくとも一方を用いたコミュニケーション行動を行う。たとえば、ロボット12は、自身に対する人間14のジェスチャや発話を検出して、そのようなコミュニケーション行動を決定する。
ここで、人間同士が環境内の物体(オブジェクト)について話すとき、指差し動作とともに、「これ」、「それ」、「あれ」といったような指示語を使用(発話)し、相手の注意(たとえば、視線や意識)をそのオブジェクトに向けている(誘導している)。このような指示動作を含む発話は、少ない語句で瞬時に相手の注意を誘導できるという点で、人間同士の自然なインタラクションにおいて重要な役割を担っていると言える。この指示語の役割は、ロボット12と人間14との間のインタラクションにおいても同様に重要であると考えられる。
しかし、従来のロボットでは、人間との間でインタラクションを行う場合には、単に指示語を発話するだけである。したがって、たとえば、ロボット、人間、オブジェクトがそれぞれ1つ存在するような単純な環境においては、指示語の発話だけで、人間の注意を当該オブジェクトに誘導することはできるが、オブジェクトが複数存在し、環境が複雑化すると、指示すべき1のオブジェクトを特定(判別)することができない。
これを回避するため、この実施例では、上述したような指差し動作を加えるようにしてある。ただし、オブジェクトOBが複数存在する複雑な環境下では、オブジェクトOB同士が接近し過ぎた場合に、単なる指差し動作と指示語の発話とでは、1のオブジェクトOBを判別するのが困難である。
そこで、この実施例では、指差し動作と指示語のみでは所望のオブジェクトOBを判別できなくなる距離を限界距離dLIMとして定義し、当該限界距離dLIM以上所望のオブジェクトOBに接近する他のオブジェクトOBが存在する場合には、所望のオブジェクトの属性(色(色彩,模様など)、形状、大きさなど)などの言葉を指示語に加えて発話することにより、人間14の注意を所望のオブジェクトOBに確実に誘導するようにしてある。
簡単に説明すると、(1)注意を誘導する物体(オブジェクトOB)から限界距離dLIM以内に他のオブジェクトOBが存在しない場合には、指差し動作と指示語の発話とにより注意の誘導を行う。(2)限界距離dLIM以内に他のオブジェクトOBが存在し、注意を誘導すべきオブジェクトOB(注目オブジェクトOB)と他のオブジェクトOBとの属性が異なる場合には、指差し動作と指示語に加えて注目オブジェクトOBの属性を発話して注意の誘導を行う。なお、他のオブジェクOBが2以上存在する場合には、異なる属性を2つ以上発話する必要がある場合もある。(3)ただし、この実施例では、上記(1)および(2)の両方に当てはまらない場合には、指差し動作とその注目オブジェクトOBを一意に決定(判別)できる言葉を発話して注意の誘導を行う。ここで、注目オブジェクトOBを一意に決定できる言葉は、たとえば、各オブジェクトOBに予め付された記号(文字,数字)または図形或いはそれらの組み合わせによる図記号を表現する言葉である。また、ロボット12や人間14からの距離や他のオブジェクトOBとの位置関係などを表現する言葉などで一意に決定できる場合もある。
図5は、この実施例における指示語を決定するためのモデル(指示語決定モデル)150の一例を示す図解図である。この図5において、白丸は指示者ないし話し手(この実施例では、ロボット12(R))を示し、黒丸は被指示者ないし受け手(この実施例では、人間14(H))を示している。ただし、図5に示す指示語決定モデル150は、話し手、聞き手、オブジェクトが単体で(1つずつ)存在する単純な環境において、指示語(この実施例では、「これ」、「それ」、「あれ」)が変化する境界を発明者等の実験により得られた結果から決定し、モデル化したものである。
この図5を参照して分かるように、指示語決定モデル150は、ロボット12が発話する指示語として「これ」が決定される領域(以下、「これ領域」という。)152およびロボット12が発話する指示語として「それ」が決定される領域(以下、「それ領域」という。)154を含む。これ領域152およびそれ領域154は、それぞれ、ほぼ楕円形の曲線で規定される(仕切られる)。以下、これ領域152を規定する曲線を「これ・それ境界曲線」といい、それ領域154を規定する曲線を「それ・あれ境界曲線」という場合がある。
また、図5に示すように、指示語決定モデル150は、ロボット12が発話する指示語として「あれ」が決定される領域(以下、「あれ領域」という。)156を含む。このあれ領域156は、上述したこれ領域152やそれ領域154とは異なり、四角形の直線で仕切られるが、これは環境(実験環境)の外枠であり、当該形状に限定されるべきではない。実際には、あれ領域156は、これ領域152およびそれ領域154以外の領域であり、それ領域154の外側の領域である。
また、図5に示すように、指示者と被指示者とを横方向に並べて記載した場合には、これ・それ境界曲線(これ領域152)は、指示者を中心とし、縦方向が長軸で横方向が短軸となる楕円形のような形状となる。一方、それ・あれ境界曲線(それ領域154)は、指示者と被指示者とを結ぶ線分の中点を中心とし、横方向が長軸で縦方向が短軸となる楕円形のような形状となる。
ただし、図5に示す指示語決定モデル150は、指示者と被指示者とがコミュニケーションする際に、一般的に取り得る距離(約1.2m〜1.5m)である場合の例であり、指示者と被指示者との距離に応じて適宜変化される(図6(A)、図6(B)参照)。
具体的には、図6(A)に示すように、指示者と被指示者とが近い(2者間の距離dSLが小)場合には、これ領域152を規定する楕円の短軸が短くされる。また、それ領域154を規定する楕円の長軸も短くされる。つまり、かかる場合には、これ領域152およびそれ領域が小さくされる。
逆に、図6(B)に示すように、指示者と被指示者とが遠い(2者間の距離dSLが大)場合には、これ領域152を規定する楕円の短軸が長くされる。また、それ領域154を規定する楕円の長軸が長くされる。ただし、指示者から遠くなるにつれて、短軸の長さが短くされる。また、指示者から見て被指示者とは反対側の曲線は変化されない。
このように、これ領域152およびそれ領域154を規定する楕円形の形状は、主として、指示者と被指示者との距離dSLに応じて変化される。このこともまた、発明者等の実験により得られた結果や経験則に基づいて決定し、後述するように、算出可能(図12〜図15に示す指示語決定処理のフロー図を参照)にしてある。
また、図6(A)では表現することができないが(後述する図6(B)においても同じ。)、これ領域152およびそれ領域154では、その楕円の軸の長さを変化させるのみならず、指示者および被指示者の顔(視線)方向に応じて、楕円を形成する曲線の曲がり具合(歪曲)も変化させるようにしてある。これは、指示語を決定する際には、指示者および被指示者の顔(視線)方向も重要な要素と考えられるからである。
具体的には、指示者(話し手)側についての楕円形の近似式(極座標)は極座標を(x,θ)とすると、数1で表される。
ここで、rは仮想円(図7(A)参照)の半径であり、max_subtractは最大減算値(θ=0°のとき最大)の変数であり、curve_adjustは楕円曲線の歪曲調整値の変数である。また、数1を概念図で示すと図7(A)のように示される。つまり、指示者(ロボット12)側では、これ領域152を規定する楕円の曲線およびそれ領域154を規定する楕円の曲線が数1に従って変化されるのである。
ただし、数1におけるmax_subtract × |cosθ|curve_adjustは、θ=0°の時に変数max_subtractそのものの値となり、θ=90°の時に0になる。これにより、仮想円の半径rから減算する値を角度毎に変化させて、楕円のような曲線を描く。なお、|・|は絶対値を意味する。
また、図7(B)に示すように、変数curve_adjustの値によって、上述した楕円のような曲線の歪曲が変化(調整)される。これは、上述したように、指示者と被指示者と接近している場合には、指示者と被指示者との間における、これ・それ境界曲線を厳格に決定する必要があるからである。図7(B)から分かるように、変数curve_adjustの値が大きくなれば、境界曲線(図7(B)では楕円の一部)の曲がり具合(歪曲)は緩やかになる。
また、被指示側(人間14側)では、楕円形の近似式(極座標)は、極座標を(x,θ)とすると、数2のように示される。
ここで、rは仮想円(図8参照)の半径であり、max_additionは最大加算値(θ=90°の時最大)の変数であり、curve_adjustは楕円曲線の歪曲調整値の変数である。また、数2を概念図で示すと図8のように示される。つまり、被指示者(人間14)側では、これ領域152を規定する楕円の曲線およびそれ領域154を規定する楕円の曲線が数2に従って変化されるのである。
ただし、数2におけるmax_addition × (sinθ)curve_adjustは、θ=90°の時に変数max_additionそのものの値となり、θ=0°の時に0になる。これにより、仮想円の半径rから加算する値を角度毎に変えて、楕円のような曲線を描く。図示は省略するが、変数curve_adjustについては、図7(B)を用いて説明した内容と同じである。
このようにして、指示語決定モデル150における、これ領域152およびそれ領域154が設定され、さらには、あれ領域156も設定される。そして、指示語決定モデル150上における注目オブジェクトOBの位置に応じて、指示語が決定される。
また、限界距離dLIMは、図9に示すように定義される。具体的には、オブジェクトOB1およびオブジェクトOB2が存在し、オブジェクトOB2を注目オブジェクトとした場合、指差しの方向Lから角度θPの範囲にオブジェクトOB1の端がかかった場合、人間はいずれのオブジェクト(OB1またはOB2)を指差ししているかを判断することができない。すなわち、角度θPの範囲に他のオブジェクト(ここでは、OB1)の中心から端までの距離を指差しで判断することができない限界距離dLIMとして定義している。
上述したように、注目オブジェクトOBと他のオブジェクトOBとが、限界距離dLIMを超えて接近した場合には、注目オブジェクトOBの属性を現す言葉を指示語に付加して発話することで判別するようにしてある。この実施例では、オブジェクトOBの属性は、画像を解析することにより、取得するようにしてある。したがって、注目オブジェクトOBの色が緑色であり、他のオブジェクトOBの色が白色である場合には、つまり属性としての色彩が異なる場合には、たとえば、「その緑色を見て」のような言葉を発することができる。このようにして、注目オブジェクトOBが判別可能に指示されるのである。
具体的には、ロボット12(CPU76)が人間14の注意を誘導するためのコミュニケーション行動すなわち誘導動作を図10および図11に示すフロー図に従って処理する。図10に示すように、CPU76は、誘導動作の処理を開始すると、ステップS1で、初期化する。具体的には、メモリ80の作業領域やバッファ領域をクリアする。次のステップS3では、自身に対する人間14の位置(距離dSL)、自身に対するすべてのオブジェクトOBの位置(角度θSOおよび距離dSO)を検出する。ただし、ロボット12が中心(原点)である。また、このとき、自身と人間14とを結ぶ基線に対する、自身の視線方向(θS)および人間14の視線方向(θL)も検出する。さらに、各オブジェクトOBと人間14との位置関係(角度θLOおよび距離dLO)も把握(検出)する。続くステップS5では、後述するオブジェクトOBの指示語決定処理(図12〜図15参照)を実行する。ただし、この指示語決定処理は、すべてのオブジェクトOBについて個別に実行される。
次のステップS7では、注目オブジェクトOB(注意を誘導すべきオブジェクトOB)を決定する。たとえば、注目オブジェクトOBは、人間14とのインタラクションにおいて決定されたり、CPU76がランダムに(所定のルールに従って)決定したりする。ここで、人間14とのインタラクションで注目オブジェクトOBを決定する方法としては、人間14がロボット12に対して発話する際に、指差ししたオブジェクトOBを注目オブジェクトOBとして決定することができる。かかる場合には、人間14の動作を検出する必要がある。したがって、たとえば、人間14の手(指)、肘、肩、胸のような特徴部位(特徴点)にもマーカ30を装着しておき、モーションキャプチャシステム20の出力に基づいて、当該人間14の動作(ジェスチャ)を検出するようにしておけばよい。
続くステップS9では、指差しするための腕の角度を算出する。つまり、ロボット12と注目オブジェクトOBとの位置と、ロボット12から見た注目オブジェクトOBの方向とに基づいて、ロボット12の右腕モータ88または左腕モータ90の回転(回転数もしくは回転角度)を算出する。次に、ステップS11で、注目オブジェクトOBと他のオブジェクトOBとの距離を算出する。ただし、注目オブジェクトOB以外のオブジェクトOBがロボット12の存在する空間に存在しない場合やロボット12の視野範囲内に注目オブジェクトOB以外のオブジェクトOBが存在しない場合には、ステップS11の処理を実行せずに、そのままステップS13に進む。なお、ロボット12の開発者ないしプログラマ等が当該ロボット12の視野範囲を予め設定してメモリ80に記憶しておけば、注目オブジェクトOBを決定したときに、当該注目オブジェクトOBを中心とする視野範囲に他のオブジェクトOBが存在するか否かを、オブジェクトOBの位置に基づいて容易に知ることができる。
ステップS13では、限界距離dLIM以内に他のオブジェクトOBが存在するかどうかを判断する。ステップS13で“NO”であれば、つまり限界距離dLIM以内に他のオブジェクトOBが存在しなければ、そのままステップS19に進む。一方、ステップS13で“YES”であれば、つまり限界距離dLIM以内に他のオブジェクトOBが存在すれば、ステップS15で、当該他のオブジェクトOBは1つであり、かつ注目オブジェクトOBよりも遠方に存在するかどうかを判断する。
ステップS15で“NO”であれば、つまり限界距離dLIM以内に存在する他のオブジェクトOBが2つ以上存在したり、他のオブジェクトOBが注目オブジェクトOBよりも手前に(ロボット12側に)存在したりする場合には、発話内容は指示語のみでは足りないと判断して、図11に示すステップS21に進む。しかし、ステップS15で“YES”であれば、つまり当該他のオブジェクトOBが1つであり、かつ注目オブジェクトOBよりも遠方に存在する場合には、ステップS17で、指差し角度を下方に修正して、ステップS19で、指差し動作を実行するとともに、指示語を発話して、誘導動作の処理を終了する。具体的には、ステップS9において算出した腕の角度またはステップS17で修正された腕の角度になるように、右腕モータ88または左腕モータ90を駆動制御する。つまり、腕の角度に応じた駆動パルスがCPU76からモータ制御ボードを介して右腕モータ88または左腕モータ90に与えられる。以下、指差し動作を実行する場合において同じ。また、ステップS3において注目オブジェクトOBに対して決定された指示語を発話する。つまり、CPU76は、メモリ80に記憶された指示語(「これ」、「それ」または「あれ」)に対応する音声合成データを読み出し、音声入力/出力ボード86を介してスピーカ72から出力する。以下、指示語を発話する場合において同じ。
なお、ステップS17において、指差し角度を下方に修正するので、発話内容は指示語のみで足り、したがって、ステップS15で“YES”と判断されるのである。
図11に示すように、ステップS21では、注目オブジェクトOBを判別可能な属性があるかどうかを判断する。たとえば、注目オブジェクトOBと他のオブジェクトOBとの間で、色、形状または大きさに違いがあるかどうかを判断する。ここで、注目オブジェクトOBは、眼カメラ54で取得された画像データを解析することにより得られる。ステップS21で“YES”であれば、つまり注目オブジェクトOBを判別可能な属性があれば、ステップS23で、指差し動作を実行するとともに、指示語に当該属性を加えて発話して、誘導動作の処理を終了する。しかし、ステップS21で“NO”であれば、つまり注目オブジェクトOBを判別可能な属性がなければ、ステップS25で、指差し動作を実行するとともに、注目オブジェクトを一意に決定できる言葉を発話して、誘導動作の処理を終了する。たとえば、上述したように、各オブジェクトOBに記号(文字,数字)を付しておき、画像解析により特定して、記号(文字,数字)を発話するようにすればよい。ただし、記号(文字,数字)は必ずしも画像を解析することにより特定する必要はない。たとえば、各オブジェクト0Bに、自身の識別情報(識別番号)を送信できるタグ(周波数タグ,赤外タグなど)を設けるとともに、異なる配置パターンで複数の赤外線反射マーカ30を装着しておく。一方、ロボット12にタグの受信機を設けておき、また、ロボット12内部に、或いはロボット12と通信可能なデータベースに、タグの識別情報(識別番号)に対応して、各オブジェクト0Bについての赤外線マーカ30の配列パターンおよび各オブクトOBについて自身を一意に決定できる言葉を記憶しておく。このようにすれば、ロボット12しておけば、モーションキャプチャシステム22の出力から注目オブジェクトOBの位置を認識するとともに、受信したタグの識別情報と赤外線マーカ30の配列パターンとに基づいて、データベースから当該注目オブジェクトOBを一意に決定できる言葉を取得することができる。
図12〜図15は、図10に示したステップS5の指示語決定処理を示すフロー図である。上述したように、指示語決定処理は、オブジェクトOBのそれぞれについて実行される。ただし、ここでは、簡単のため、該当する1のオブジェクトOBについての指示語決定処理について説明することにする。
また、以下に説明する数式に使用される記号ないし変数は、図16で示されるように、指示者(ロボット12(R))と被指示者(人間14(H))とオブジェクトOBとの位置関係(距離、方向)を定義したものである。なお、一部の変数については、上述したとおりである。図16に示すように、dSLは指示者(ロボット12(R))と被指示者(人間14(H))との距離であり、dSOは指示者とオブジェクトOB(O)との距離であり、dLOは被指示者とオブジェクトOBとの距離である。また、θSOは、指示者と被指示者とを結ぶ線分(以下、「基線」という。)に対して、指示者とオブジェクトOBとを結ぶ線分(直線)がなす角度である。一方、θLOは、基線に対して、被指示者とオブジェクトOBとを結ぶ線分(直線)がなす角度である。さらに、θSは、基線に対して指示者の視線方向がなす角度である。また、θLは、基線に対して被指示者の視線方向がなす角度である。
図12に戻って、CPU76は、指示語決定処理を開始すると、ステップS31で、オブジェクトOBが話し手(ここでは、ロボット12自身)に近いかどうかを判断する。つまり、このオブジェクトOBとロボット12との距離dSOが、当該オブジェクトOBと人間14との距離dLO以下(dSO≦dLO)であるかどうかを判断する。ステップS31で“NO”であれば、つまり距離dSOが距離dLOよりも長ければ(dSO>dLO)、オブジェクトOBは聞き手(ここでは、人間14)に近いと判断して、図14に示すステップS61にそのまま進む。一方、ステップS31で“YES”であれば、つまり距離dSOが距離dLO以下であれば、オブジェクトOBは話し手(ロボット12)に近いと判断し、ステップS33で、角度θSOが90°以上であるかどうかを判断する。つまり、オブジェクトOBが話し手の後ろ側にあるかどうかを判断する。
ステップS33で“NO”であれば、つまり角度θSOが90°未満であれば、オブジェクトOBが話し手の前にあると判断して、図13に示すステップS53に進む。一方、ステップS33で“YES”であれば、つまり角度θSOが90°以上であれば、オブジェクトOBが話し手の後ろ側にあると判断して、ステップS35で、これ・それ境界KSborderと、それ・あれ境界SAborderとを数3に従って算出する。
ただし、変数max_subtractおよび変数curve_adjustは、後述する数4または数5に従って算出される。
次のステップS37では、距離dSLが1m以上であるかどうかを判断する。つまり、話し手(ロボット12)と聞き手(人間14)との距離が或る程度離れているかどうかを判断するのである。ステップS37で“YES”であれば、つまり距離dSLが1m以上であれば、ロボット12と人間14とが或る程度離れていると判断して、ステップS39で、数4に従って、変数max_subtractおよび変数curve_adjustを算出して、ステップS43に進む。一方、ステップS37で“NO”であれば、つまり距離dSLが1m未満であれば、ロボット12と人間14とは比較的接近していると判断して、ステップS41で、数5に従って、変数max_subtractおよび変数curve_adjustを算出して、ステップS43に進む。
ステップS43では、これ・それ境界KSborderの内側にオブジェクトOBが存在するかどうかを判断する。具体的には、距離dSOがこれ・それ境界KSborder以下(dSO≦KSborder)であるかどうかを判断する。ステップS43で“YES”であれば、つまり距離dSOがこれ・それ境界KSborder以下(dSO≦KSborder)であれば、これ・それ境界KSborderの内側にオブジェクトOBが存在すると判断して、指示語を「これ」に決定して、指示語決定処理をリターンする。つまり、ステップS45では、今回指示語決定処理を実行したオブジェクトOBに関連付けて、決定された指示語(「これ」)がメモリ80のバッファ領域等に記憶される。以下、指示語を決定する場合において同様である。
一方、ステップS43で“NO”であれば、つまり距離dSOがこれ・それ境界KSborderを超えていれば(dSO>KSborder)、これ・それ境界KSborderの外側にオブジェクトOBが存在すると判断して、ステップS47で、それ・あれ境界SAborderの内側にオブジェクトOBが存在するかどうかを判断する。具体的には、距離dSOがそれ・あれ境界SAborder以下(dSO≦SAborder)であるかどうかを判断する。ステップS47で“YES”であれば、つまり距離dSOがそれ・あれ境界SAborder以下(dSO≦SAborder)であれば、それ・あれ境界SAborderの内側にオブジェクトOBが存在すると判断して、ステップS49で、指示語を「それ」に決定して、指示語決定処理をリターンする。一方、ステップS47で“NO”であれば、つまり距離dSOがそれ・あれ境界SAborderを超えていれば(dSO>SAborder)、それ・あれ境界SAborderの外側にオブジェクトOBが存在すると判断して、ステップS51で、指示語を「あれ」に決定して、指示語決定処理をリターンする。
また、上述したように、ステップS33で“NO”と判断されると、図13のステップS53で、数6に従って、これ・それ境界KSborderとそれ・あれ境界SAborderとを算出する。
続くステップS55では、距離dSLが1m以上あるかどうかを判断する。このステップS55の処理は、上述したステップS37の処理と同じであるため、簡単に説明することにする。以下、ステップS65およびステップS79についても同様である。ステップS55で“YES”であれば、ステップS57で、数7に従って、変数max_subtractおよび変数curve_adjustを算出して、図12に示したステップS43に進む。一方、ステップS55で“NO”であれば、ステップS59で、数8に従って、変数max_subtractおよび変数curve_adjustを算出して、ステップS43に進む。
また、上述したように、ステップS31で“NO”と判断すると、図14に示すように、ステップS61で、角度θLOが90°以上であるかどうかを判断する。つまり、オブジェクトOBが聞き手(人間14)の後ろ側にあるかどうかを判断する。ステップ61で“NO”であれば、つまり角度θLOが90°未満であれば、オブジェクトOBが聞き手の前側にあると判断して、図15に示すステップS77に進む。一方、ステップS61で“YES”であれば、つまり角度θLOが90°以上であれば、オブジェクトOBが聞き手の後ろ側にあると判断して、ステップS63で、数9に従って、それ・あれ境界SAborderを算出する。
次のステップS65では、距離dSLが1m以上であるかどうかを判断する。ステップS65で“YES”であれば、ステップS67で、数10に従って、変数r、変数max_additionおよび変数curve_adjustを算出して、ステップS71に進む。しかし、ステップS65で“NO”であれば、ステップS69で、数11に従って、変数r、変数max_additionおよび変数curve_adjustを算出して、ステップS71に進む。
ステップS71では、それ・あれ境界SAborderの内側にオブジェクトOBが存在するかどうかを判断する。このステップS71の処理は、上述したステップS47の処理と同じであるため、簡単に説明することにする。ステップS71で“YES”であれば、ステップS73で、指示語を「それ」に決定し、指示語決定処理をリターンする。一方、ステップS71で“NO”であれば、ステップS75で、指示語を「あれ」に決定し、指示語決定処理をリターンする。
また、上述したように、ステップS61で“NO”であれば、図15に示すステップS77で、それ・あれ境界SAborderを数12に従って算出する。
次のステップS79では、距離dSLが1m以上であるかどうかを判断する。ステップS79で“YES”であれば、ステップS81で、数13に従って、変数r、変数max_additionおよび変数curve_adjustを算出して、図14に示したステップS71に進む。しかし、ステップS79で“NO”であれば、ステップS83で、数14に従って、変数r、変数max_additionおよび変数curve_adjustを算出して、ステップS71に進む。
なお、この実施例では、指示者と被指示者との距離dSLが0.5m〜2.0mの範囲である場合を想定して、これ領域152(これ・それ境界)およびそれ領域154(それ・あれ境界)を算出するようにした。ただし、数13からよく分かるように、距離dSLが大きくなり過ぎると、変数(半径)rの値が負となり、適切ではない。したがって、距離dSLが上述した範囲外である場合には、これ領域152(これ・それ境界)およびそれ領域154(それ・あれ境界)を算出する方法(数式)を適宜検討する必要がある。
この実施例によれば、指差し動作と指示語の発話とを実行するので、指示語を用いて人間同士のような自然なコミュニケーションを実現することができる。
また、この実施例によれば、指差し動作と指示語の発話のみではオブジェクトの判別ができない場合には、オブジェクトの属性を指示語に加えて発話するので、所望のオブジェクトに確実に人間の注意を誘導することができる。
さらに、この実施例によれば、ロボットと人間との距離のみならず、両者の視線方向をも考慮して指示語決定モデルを設定するようにしてあるので、的確な指示語を決定することができる。つまり、不自然な指示語が発話されるのを防止することができる。
他の実施例のシステム10は、ロボット12が指差し動作をできない場合を考慮した以外は、上述の実施例と同じであるため、重複した説明は省略する。具体的には、上述した誘導動作の処理の一部が異なる。他の実施例における誘導動作の処理のフロー図は、図17および図18のように示される。以下に、他の実施例における誘導動作の処理について説明するが、上述の実施例で図10および図11を用いて説明した内容と同じ内容については、簡単に説明することにする。
図17に示すように、CPU76は、誘導動作の処理を開始すると、ステップS91で、初期化する。続くステップS93では、自身に対する人間14の位置(距離dSL)、自身に対するすべてのオブジェクトOBの位置(角度θSOおよび距離dSO)を検出する。また、このとき、自身と人間14とを結ぶ基線に対する、自身の視線方向(θS)および人間14の視線方向(θL)も検出する。さらに、各オブジェクトOBと人間14との位置関係(角度θLOおよび距離dLO)も検出する。次のステップS95では、オブジェクトOBの指示語決定処理を実行する。この指示語決定処理は、上述の実施例で図12〜図15を用いて説明した内容と同じである。したがって、その詳細な説明は省略する。
続いて、ステップS97では、注目オブジェクトOB(注意を誘導すべきオブジェクトOB)を決定し、ステップS99では、指差しするための腕の角度を算出し、ステップS101では、注目オブジェクトOBと他のオブジェクトOBとの距離を算出する。
次のステップS103では、現在指差し可能な状況であるかどうかを判断する。たとえば、ロボット12が何らかのオブジェクトOBを手に持っている場合や障害物の存在により手を動かすことができない場合には、指差し動作することができない。ステップS103で“NO”であれば、つまり指差し不能であれば、図18に示すステップS109に進む。一方、ステップS103で“YES”であれば、つまり指差し可能であれば、ステップS105で、限界距離dLIM以内に他のオブジェクトOBが存在するかどうかを判断する。つまり、ステップS101で算出した距離が限界距離dLIM以内となる他のオブジェクトOBが存在するかどうかを判断する。
ステップS105で“YES”であれば、つまり限界距離dLIM以内の他のオブジェクトOBが存在すれば、指差し動作と指示語の発話のみでは注目オブジェクトOBを指示(誘導)できないと判断して、ステップS108で、指差し動作するとともに、指示語と属性とを発話して、誘導動作の処理を終了する。一方、ステップS105で“NO”であれば、つまり限界距離dLIM以内の他のオブジェクトOBが存在しなければ、指差し動作と指示語の発話のみで注目オブジェクトOBを指示(誘導)できると判断して、ステップS107で、指差し動作を実行するとともに、指示語を発話して、誘導動作の処理を終了する。
図18に示すように、ステップS109では、注目オブジェクトOBと同じ指示語が決定された他のオブジェクトOBが存在するかどうかを判断する。ステップS109で“YES”であれば、つまり注目オブジェクトOBと同じ指示語が決定された他のオブジェクトOBが存在すれば、ステップS115で、指示語と属性とを発話して、図17に示したように、誘導動作の処理を終了する。一方、ステップS109で“NO”であれば、つまり注目オブジェクトOBと同じ指示語が決定された他のオブジェクトOBが存在しなければ、ステップS111で、同じ指示語ではないが、指示語境界付近に存在するオブジェクトOBが有るかどうかを判断する。ステップS111で“YES”であれば、つまり同じ指示語ではないが、指示語境界付近に存在するオブジェクトOBが有れば、ステップS115に進む。一方、ステップS111で“NO”であれば、つまり同じ指示語ではないが、指示語境界付近に存在するオブジェクトOBが無ければ、ステップS113で、指示語を発話して、誘導処理を終了する。
他の実施例によれば、通常は所望のオブジェクトを指差し動作と指示語の発話とにより、人間の注意をそのオブジェクトに誘導するようにしてあるが、指差しできず、そのオブジェクトの判別が困難な場合には、指示語と属性とを発話するので、所望のオブジェクトに確実に注意を誘導することができる。また、指示語を用いて人間同士にような自然なコミュニケーションを実行できる点は、上述の実施例と同様である。
なお、これらの実施例では、モーションキャプチャシステムを用いて、ロボット、人間およびオブジェクトの3次元位置およびロボットおよび人間の視線方向を検出するようにしたが、これは他のセンサを用いて検出することも可能である。たとえば、カメラ(イメージセンサ)と超音波センサとをロボットに搭載する。そして、カメラで撮影された画像を処理することにより、人間とオブジェクトとを検出する。また、超音波センサの出力によってロボットに対する人間およびオブジェクトの位置(距離、方向)を検出することができる。かかる場には、ロボットの全方位カメラや眼カメラおよび超音波センサを用いることができる。