<第1実施例>
図1を参照して、この第1実施例のアンドロイドロボット制御システム(以下、単に「システム」ということがある。)10は、物理空間(または、現実空間)に存在するエージェントの一例であるアンドロイドロボット(以下、単に「ロボット」という)12を含む。ロボット12は、人間に酷似した姿形(外観など)を有する人型ロボットであり(図2(A)、(B)、(C)および図3参照)、人間に酷似した動作(振り、振る舞い、発話)を行う。
ロボット12は、インターネットや電話通信回線のようなネットワーク14を介してコンピュータ16に接続される。コンピュータ16は、PCまたはサーバのような汎用のコンピュータであり、このコンピュータ16には、複数の距離画像センサ18が接続される。
距離画像センサ18は、赤外光またはレーザなどの光を照射し、対象物から反射した光(反射光)をCCD(Charge Coupled Device)センサなどの光学センサによって捉える。距離画像センサ18は、光が戻るまでの時間を画素毎に計測することで、対象物までの実際の距離を測定する。また、距離画像センサ18は、対象物の形状(たとえば、人間のジェスチャ)を測定することが可能である。したがって、距離画像センサ18の出力に基づいて、人間の位置および人間の所定の部位(頭部および手)の位置を検出することができる。ただし、ロボット12が配置される場所ないし環境には、予め3次元の座標系が設定されており、所定の位置を原点として、人間の位置および人間の所定の部位の位置の3次元座標を検出することができる。ただし、この第1実施例では、人間の位置は、人間の足元の位置であるため、高さ方向の成分は無視される。このことは、ロボット12の位置についても同様である。
第1実施例の距離画像センサ18としては、ASUS(登録商標)製のXtion(登録商標)と言われる製品が採用されている。なお、他の例では、距離画像センサ18は、Microsoft(登録商標)製のKinect(登録商標)センサ、パナソニック(登録商標)製の3次元距離画像センサD-IMager(登録商標)などを使用することも可能である。この種のセンサは、3次元距離計測センサ、3Dスキャナなどと言われる場合もある。
なお、距離画像センサ18としては、たとえばLiDAR(たとえば、Velodine社製のイメージングユニットLiDAR(HDL-32e)(商品名))のような全方位レーザ距離計や、ステレオカメラなども利用可能である。
複数の距離画像センサ18の各々からの距離画像信号は、コンピュータ16に入力され、コンピュータ16では、その距離画像信号をディジタルデータとして、メモリ(たとえばHDDまたはRAMなど)に記憶する。コンピュータ16は、このメモリに記憶した距離画像データを処理した結果得られた、1または複数の人間の各々の位置(この第1実施例では、人間の位置と、頭部26および手の3次元位置)についてのデータ(以下、「人間データ」という)をロボット12に送信する。
なお、図1では省略するが、ネットワーク14を介してロボット12と通信可能に外部制御端末が設けられてもよい。外部制御端末は、ロボット12を遠隔操作するためのコンピュータである。たとえば、ロボット12が人間とコミュニケーションを行う場合において、ロボット12で対応できない事象が発生したときに、管理者等が外部制御端末を用いてロボット12を制御し、ロボット12が対応できない事象について対応する。管理者等は、ロボット12を通して人間と会話したり、ロボット12にコマンドを送信してコミュニケーション行動を実行させたりする。
図2(A)、図2(B)、図2(C)および図3は図1のロボット12の外観および構成の一例を示す。具体的には、図2(A)は図1に示すロボット12の瞼(28a、28b)および眼球を動かすアクチュエータA1、A2、A3、A4、A5を説明するための図であり、図2(B)は図1に示すロボット12の額、眉間および口角30を動かすアクチュエータA6、A7、A8、A9を説明するための図であり、図2(C)は図1に示すロボット12の唇を動かすアクチュエータA10、A11、A13を説明するための図である。また、図3は図1に示すロボット12の頭部26、肩32、腰34を動かすアクチュエータA14、A15、A16、A17、A18、A19を説明するための図である。以下、図2(A)~図2(C)および図3を用いて、ロボット12の外観および構成について簡単に説明する。
なお、図2(A)~図2(C)および図3に示すロボット12は一例であり、他の外観、構成を持つ任意のアンドロイドロボットが利用可能である。また、ロボット12は、アンドロイドロボットに限定される必要は無く、人間に似た外観を有するロボットであれば他のロボットを使用することもできる。一例として、身体動作または/および音声で、コミュニケーション対象である人間または他のロボットとコミュニケーションを取ることができるコミュニケーションロボットを使用することができる。具体的には、出願人が開発等を行うコミュニケーションロボットの一例であるロボビー(登録商標)を使用することができる。このロボビーは、人間とは異なり、車輪で移動可能に構成されるが、頭部、胴体、両腕を有し、人間と似た外観を有している。
ロボット12は、胴体部24およびその胴体部24の上に設けられた頭部26を含む。頭部26には、目(眼球)の上下に、上瞼28aおよび下瞼28bが形成され、それらの上瞼28aおよび下瞼28bの上下動を制御することによって、目を開けたり閉じたりする動作が可能となる。頭部26にはさらに口唇が形成され、それの両端が口角30となる。口角30も同様に上下動可能である。
胴体部24の上端(頭部の下方)が肩32であり、胴体部24の中ほどが腰34である。肩32は上下動可能であり、腰34は左右にひねる(回動する)ことができ、また、前屈および後傾が可能である。
ロボット12の上述の各部分を動かすための以下に説明するアクチュエータは、この第1実施例では、いずれもパルス電力によって駆動されるステッピングモータであり、ステッピングモータの回転量はパルス数で決まる。パルス数が指令値として与えられる。なお、各対象部位は、平常状態において、アクチュエータに初期値が与えられ、変位させる場合に、その方向と大きさに応じたパルス数の指令値が該当するアクチュエータに与えられる。この第1実施例では、各アクチュエータは、「0-255」の指令値で動作され、「0-255」のいずれかの値が初期値として与えられる。
アクチュエータA1は、上瞼28aの上下動を制御するための制御するためのアクチュエータである。アクチュエータA2、A3およびA4は眼球を左右上下に動かすためのアクチュエータである。アクチュエータA5は、下瞼28bの上下動を制御するアクチュエータである。したがって、アクチュエータA1およびA5によって、目が開閉される。
アクチュエータA6は額を動かすためのアクチュエータであり、アクチュエータA7は眉間を動かすためのアクチュエータである。
アクチュエータA8は、口角30を上げるためのアクチュエータである。アクチュエータA9は舌を上下方に動かすためのアクチュエータである。アクチュエータA10は口唇を左右に広げるアクチュエータであり、アクチュエータA11は口唇を前に突き出すためのアクチュエータである。
アクチュエータA13は顎を突き出したり引いたりするためのアクチュエータである。このアクチュエータA13によって、口が開閉される。
アクチュエータA14は頭部26を左右に傾動させるためのアクチュエータであり、アクチュエータA15は頭部26を俯仰させるためのアクチュエータであり、そして、アクチュエータA16は頭部を左右に回動させるためのアクチュエータである。
アクチュエータA17は肩32を上下動するためのアクチュエータである。アクチュエータA18は腰34を前屈させまたは後傾させるためのアクチュエータであり、アクチュエータA19は腰34を左右に回動(ひねる)ためのアクチュエータである。
ロボット12は、図4に示すように、ロボット12の全体制御を司るプロセッサ(この第1実施例では、CPU)50を備える。CPU50は、バス52を通して通信モジュール56に接続され、したがって、CPU50は通信モジュール56を介して、ネットワーク14すなわちコンピュータ16と、有線で、または無線で、通信可能に接続される。
CPU50はまた、バス52を通してRAM54にアクセスでき、このRAM54に記憶されているプログラムやデータ(図6参照)に従って、バス52を通してアクチュエータ制御回路58に指令値を与え、各アクチュエータA1-Anの動作を制御する。
RAM54は、CPU50のバッファ領域およびワーク領域として用いられる。ただし、RAM54に代えて、HDDを用いることもできる。アクチュエータ制御回路58は、CPU50から与えられる指令値に応じた数のパルス電力を生成し、それを該当するステッピングモータに与えることによって、各アクチュエータA1-Anを駆動する。
ただし、アクチュエータとしてはこのようなステッピングモータを用いるものの他、サーボモータを用いるアクチュエータ、流体アクチュエータなど任意のアクチュエータが利用可能である。
センサI/F(インタフェース)62は、バス52を介して、CPU50に接続され、触覚センサ64および眼カメラ66からのそれぞれの出力を受ける。
触覚センサ64ないし皮膚センサは、たとえばタッチセンサであり、ロボット12の触覚の一部を構成する。つまり、触覚センサ64は、人間や他の物体等がロボット12に触れたか否かを検出するために用いられる。触覚センサ64からの出力(検出データ)は、センサI/F60を介してCPU50に与えられる。したがって、CPU50は、人間や他の物体等がロボット12に触れたこと(およびその強弱)を検出することができる。
眼カメラ66は、イメージセンサであり、ロボット12の視覚の一部を構成する。つまり、眼カメラ66は、ロボット12の眼から見た映像ないし画像を検出するために用いられる。この第1実施例では、眼カメラ66の撮影映像(動画ないし静止画)に対応するデータ(画像データ)は、センサI/F60を介してCPU50に与えられる。CPU50は、その画像データを、RAM54に記憶したり、通信モジュール56およびネットワーク14(図1)を介して外部のコンピュータ(たとえば、外部制御端末)に送信したりする。
また、スピーカ68およびマイク70は、入出力I/F62に接続される。スピーカ68は、ロボット12が発話を行う際に音声を出力する。マイク70は、音センサであり、ロボット12の聴覚の一部を構成する。このマイク70は、指向性を有し、主として、ロボット12と対話(コミュニケーション)するコミュニケーション対象である人間の音声を検出するために用いられる。
このような構成のシステム10は、或る会社や或るイベント会場などに適用され、ロボット12は、人間の代役として働く。たとえば、ロボット12は、会社やイベント会場の受付として機能する。ロボット12は、人間からの話し掛けに応じて、人間と会話したり、人間を道案内したりするなどのコミュニケーション行動(または動作)を行う。このとき、ロボット12は、音声を発するのみならず、頭部26、肩32および腰34の少なくとも1つを動かす。
なお、詳細な説明は省略するが、コミュニケーション行動を実行する場合において、音声を発するときには、口が開閉され、さらに、額、眉間および口角30が動かされることにより、顔の表情が変化される。このような口、額、眉間、口角30などの動きもコミュニケーション行動に含まれる。以下、コミュニケーション行動を実行する場合について同様である。
たとえば、ロボット12は、人間と会話する場合において、人間の話を聞くときに、単に聞くまたは同意するときの音声(たとえば、「はい」)を発しながら、相槌を打つように、首を縦に振る(頷く)、または、同意しないときの音声(たとえば、「いいえ」)を発しながら、首を横に振るまたは首を傾げる。また、ロボット12は、人間から話しかけられると、挨拶したり、自己紹介したり、要件を聞いたりする。挨拶する場合には、「おはようございます」または「こんにちは」と発しながら、お辞儀する、つまり、上体を少し前傾する。
また、ロボット12は、道案内する場合には、道順の音声を発しながら、頭部26を動かし、道順に従う進行方向を向くように視線を向けるとともに、肩32を動かし、進行方向に手を伸ばす(指さす)。ただし、この第1実施例では、ロボット12の視線は、ロボット12の左右の目の中心を結ぶ線分の垂直二等分線であって、顔の正面側に延びる直線を意味する。
このように、人間と会話したり、道案内のような所定のサービスを提供したりするためのコミュニケーション行動(後述する「反応動作」に対して「通常動作」という)は、コミュニケーション対象としての人間がロボット12に話し掛けた(問い掛けた)ことに応じて、反応動作を実行した後に、実行される。ただし、人間がロボット12に話し掛ける(問い掛ける)場合には、人間は或る程度の距離(たとえば、60~70cm)までロボット12に近づく必要がある。これは、ロボット12が、人間の音声を検出し、検出した音声を正しく音声認識するためである。
また、ロボット12は、所定の入力(または、刺激)に反応して実行するコミュニケーション行動(反応動作)を実行する。所定の入力は、ロボット12が備える各種のセンサの入力である。具体的には、所定の入力は、距離画像センサ18の出力に基づいて一定範囲(たとえば、ロボット12の位置を中心とする半径60~70cmの円内)内に物または人間が存在することを検出したことである。ただし、距離のみならず、眼カメラ66の撮影画像に基づいて、さらに、ロボット12の前方に物または人間が存在することを知ることもできる。また、所定の入力は、触覚センサ64によって、ロボット12が物または人間に衝突または触れられたことを検出したことである。さらに、所定の入力は、マイク70によって、一定レベル以上の音量の音声を検出したことである。
この第1実施例では、反応動作は、ロボット12は、人間がロボット12に近づき、この人間がロボット12の視野内に居て(または存在し)、この人間に属する所定の部位(この第1実施例では「手」)がロボット12の所定の部位(たとえば「顔」)に触れようとしたときに、触れようとしたことに気付いて行うコミュニケーション行動(動作)、人間がロボット12に近づき、この人間がロボット12の視野内に居ないで、この人間がロボット12に触れたときに、触れたことに気づいて行う動作、または人間がロボット12に話し掛けたことに対して行う動作を意味する。
また、この第1実施例では、反応動作として、ロボット12は、ロボット12に話し掛けること無く、ロボット12自身の顔(頭部26)に触れようとした人間の顔を見る動作(コミュニケーション行動)が実行される。このため、何かに集中していて、近づく人間に気づいていなかったロボット12が、当該人間がロボット12の顔に触れようとしたことに気づいて反応するように動作することができる。
具体的には、CPU50は、コンピュータ16からの出力(人間データ)を検出し、人間がロボット12を基準とする一定範囲内に居るかどうかを判断する。ロボット12は、自身が配置されている位置の座標を予め記憶しており、その座標と人間データに含まれる人間の位置の座標から人間との距離を算出することができる。算出した距離が一定範囲を規定する長さよりも短い場合に、人間がロボット12を基準とする一定範囲内に居ると判断し、算出した距離が一定範囲を規定する長さ以上である場合に、人間がロボット12を基準とする一定範囲内に居ないと判断する。
人間がロボット12を基準とする一定範囲内に居る場合には、CPU50は、当該人間がロボット12の視野内に居るかどうかを判断する。つまり、CPU50は、ロボット12の現在の顔の向きを基準の方向(つまり、視線の方向)とした場合に、上記の一定範囲内に居る人間がロボット12の視野角内に居るかどうかを判断する。
ただし、ロボット12の視野角は、一般的な人間の視野角に合わせて、水平方向が約200度(ただし、視線を基準(中心)に、左右のそれぞれに100度である)で設定され、垂直方向が約125度(ただし、視線を基準に、下向きが75度で、上向きが50度である)に設定される。ただし、この第1実施例では、ロボット12が見ている方向に人間が居るかどうかを判断するだけであるため、垂直方向については無視される。
ロボット12は、自身の視線が向く方向(垂直方向の成分を除く)に大きさが1のベクトル(視線ベクトル)を算出するとともに、ロボット12の位置から人間の位置に向かうベクトルを算出し、この2つのベクトルが成す角度が100度以内であるかどうかを判断する。2つのベクトルが成す角度が100度以内であれば、人間がロボット12の視野内に居ることが判断される。一方、2つのベクトルが成す角度が100度を超えている場合には、人間がロボット12の視野外に居ることが判断される。
なお、この第1実施例では、視野角は固定的に設定されるが、可変的に設定されてもよい。たとえば、人間がロボット12に近づくに連れて視野角は小さくされてもよい。
人間がロボット12の視野内に居ることが判断されると、ロボット12は、自身の顔を当該人間の顔の方に向ける。そして、CPU50は、当該人間の手がロボット12の顔周辺の所定距離(第1閾値)以内に有るかどうかを判断する。具体的には、この第1実施例では、人間の手と、ロボット12の頭部26の表面との距離が所定距離以内であるかどうかが判断される。人間の手がロボット12の顔周辺の所定距離以内に有る場合に、つまり、人間の手が所定距離を超えてロボット12の顔に近づいた場合に、人間がロボット12の顔に触れようとしていることが判断される。一方、人間の手がロボット12の顔周辺の所定距離を超えて離れている場合には、人間がロボット12の顔に触れようとしていることが判断されない。
後述するように、所定距離は、人間毎に、予め測定された値について基づいて設定される。人間毎の所定距離が記載されたテーブル(後述する「閾値テーブル」)は、データベースに登録されており、ロボット12のコミュニケーション対象である人間に応じた所定距離を閾値テーブルから参照して用いることにより、上記の判断が行われる。一例として、データベースは、コンピュータ16の内部メモリまたはコンピュータ16がアクセス可能な外部のメモリである。また、所定距離は、ロボット12のようなエージェントが、人間に触れられる前に反応する距離(以下、「対接触前距離」という)である。
このように、対接触前距離は、コミュニケーション対象の人間毎に設定されるため、個別に人間を識別する必要がある。したがって、この第1実施例では、人間に固有の識別情報(ユーザID)を記憶したICタグを装着し、ロボット12は、コミュニケーション対象の人間に装着されたICタグから識別情報を読み出して、人間を個別に識別する。つまり、ロボット12は、ICタグのリーダをさらに備える。
ただし、これは一例であり、他の方法で人間を識別することもできる。たとえば、生態情報(たとえば、網膜または声紋)に基づいて人間を識別することもできる。かかる場合には、予め生態情報をユーザIDに対応付けて記憶しておき、取得した生態情報と一致またはほぼ一致することが判断されたユーザIDを取得することにより、人間を個別に識別する。
また、人間を個別に識別するために使用されるセンサ等は、ロボット12に設ける必要はなく、ロボット12が存在する環境に設けておき、センサ等の出力をロボット12に入力するようにしても良い。さらには、ロボット12と通信可能なコンピュータ(たとえば、コンピュータ16)が、ロボット12が存在する環境に設けたセンサ等の出力に基づいて人間を個別に識別し、識別した結果をロボット12に送信するようにしてもよい。
詳細な説明は省略するが、上記の一定範囲(最大の接触前距離のよりも長い距離の半径を有する円)内に、複数の人間が居る場合には、各人間について、ロボット12の視野内に居るかどうかが判断される。さらに、複数の人間がロボット12の視野内に居る場合には、ロボット12に最も近い人間について、当該人間の手がロボット12の顔周辺の対接触前距離以内に有るかどうかが判断される。ただし、複数の人間がロボット12の視野内に居る場合には、いずれかの人間の手がロボット12の顔周辺の対接触前距離以内に有るかどうかが判断されてもよい。
この第1実施例では、上述したように、人間がロボット12の顔に触れようとしていることが判断されると、つまり、人間の手が対接触前距離を超えてロボット12に近づいたことが判断されると、ロボット12は、反応動作として、ロボット12自身の視線をその人間の方に向ける。コンピュータ16から送信される人間データに基づいて、人間の位置を検出し、この位置において実空間の高さ方向に延びる直線とロボット12の視線が交わるように、アクチュエータA14、A15およびA16の少なくとも1つが制御され、ロボット12の頭部26の向きが変化される。ただし、ロボット12の視線は人間の顔の位置よりも高い位置には向けられない。
また、対接触前距離が比較的近い人間については、つまり、後述するように、「近い」距離のグループに分類された人間については、上記の反応動作の前に、さらに、ロボット12は、首を少し後ろに傾ける動作も実行する。ロボット12は、一定範囲内であり、視野内に人間が居るときに、ロボット12自身の顔を当該人間の顔の方に向けているため、首を少し後ろに傾けることにより、近づいた当該人間の顔の方に顔を向けることができる。つまり、対接触前距離が比較的近い人間に対しては、ロボット12は、視線のみならず、自身の顔を人間の顔の方向に向ける。このように、「近い」距離のグループに分類された人間については、ロボット12の反応動作が変化される。
また、第1実施例では、人間がロボット12の視野内に居ない(または存在しない)場合には、ロボット12は人間にいずれかの部位を触れられると、わずかな反応動作を実行した後に、当該人間の方に顔を向ける。ただし、わずかな反応動作とは、触れられたことに気づく動作を意味し、より具体的には、ぴくりとするように、少し上体を後傾する動作を意味する。つまり、CPU50は、人間に触られると、触れた手が伸びる方向(この第1実施例では、2次元の方向すなわち水平方向)と同じ方向に、ロボット12の上体を少し傾ける(たとえば、3次元の物理空間における高さ方向に対して5~10度程度傾ける)ように、アクチュエータA18またはA19を制御する。
また、詳細な説明は省略するが、人間がロボット12に話し掛ける(問い掛ける)と、反応動作として、“挨拶”の動作を実行したり、“返事”の動作を実行したりする。詳細な説明は省略するが、“挨拶”の動作では、ロボット12は、“こんにちは”と発話した後に、お辞儀する。また、“返事”の動作では、ロボット12は、“はい”と発話した後に、人間の方を見る。
また、上述したように、この第1実施例では、対接触前距離(または、第1閾値)は、下記の実験1を行ったときに測定された距離に基づいて算出(または、設定)される。
人間が他者の接触に対してどの程度の距離で反応するかを検証するために、お互いを知らない他人の被験者同士によるデータ収集の実験1を行った。具体的には、図5に示すように、まず評価者T1である被験者が椅子に座って正面を見ている状況で、接触者T2となる被験者が評価者T1の顔へゆっくりと手を近づけ、評価者T1がそれ以上手を近づけてほしくないと感じる距離でボタンを押すことでその距離を計測する、というデータ収集の実験1が行われた。距離の計測には、2台の距離画像センサ18(実験1では、Kinect V2を使用)が用いられた。また、図5に示すように、接触者T2の立ち位置は、9か所(0~8)用意し、それぞれの立ち位置から様々な角度で評価者T1の顔へ手を近づけてもらうタスクを繰り返し行った。接触者T2と評価者T1の性別を考慮し、4通りの組み合わせで、それぞれ10ペア(合計40ペア;男性評価者・女性接触者、女性評価者・男性接触者、男性評価者・男性評価者、女性評価者・女性評価者)についてデータ収集が行われた。
上記の実験1により、約12000回分の距離のデータが収集され、収集されたデータなどを分析した結果、全体の距離の平均値は約20cmであり、この全体の平均値の距離で、評価者T1がそれ以上手を近づけてほしくないと感じることが示された。また、接触者T2と評価者T1の性別による有意な影響は見られておらず、手を近づける角度による有意な影響も見られなかった。
なお、実験1等の詳細については、発明者等が発表した非特許文献1に開示されているため、その内容についての説明は省略する。
また、被験者の対接触前距離は、それぞれ点でグラフ上に表し、その分布を視覚化したところ、全員の平均(以下、「全体平均」ということがある)である平均値(約20cm)を境に、2つのグループへと分離していることが示唆された。そこで、これらのデータが全体平均未満および以上の2種類のクラスタに分類できると仮定し、クラスタ数2のk-means法によるクラスタリングを行ったところ、全体平均未満および以上のグループで属するクラスタが異なる結果となった。
ただし、被験者の対接触前距離は、実験1で当該被験者について測定した距離の平均値である。また、全体平均未満のグループに属する全被験者の対接触前距離の平均値は約14cmであり、全体平均以上のグループに属する全被験者の対接触前距離の平均値は約27cmである。
全体平均を基準として、人間(または、人間の対接触前距離)は、全体平均の平均値未満のグループ(この第1実施例では、「近い」距離のグループ)と、全体平均の平均値以上のグループ(この第1実施例では、「遠い」距離のグループ)に分類される。
ただし、全体平均を基準として、人間は、全体平均の平均値以下の「近い」距離のグループと、全体平均の平均値よりも大きい「遠い」距離のグループに分類されるようにしてもよい。このことは、後述する第1推定処理および第2推定処理においても同様である。
上記のように、実験1では、人間が他人に触れられようとしたときに、それ以上手を近づけて欲しくないと感じる距離を測定するようにしてある。このため、測定した距離に基づいて対接触前距離を設定し、人間がロボット12に触れようとするときに、人間の手と、ロボット12の頭部26の表面との距離がその対接触前距離以内であるかどうかを判断して、ロボット12に反応動作を実行させるようにすると、人間は、実験1の時とは、接触側と被接触側で逆の立場である。
そこで、被験者がロボット12を触ろうとしたときに、ロボット12が反応動作を行うかどうかを判断する対接触前距離を変化させて、対接触前距離で反応するロボット12の動作が自然であるかどうかを被験者が評価する実験2をさらに行った。
この実験2では、対接触前距離を、「近い」距離のグループの被験者の平均値(ここでは、「近い距離」という)、被験者全部の平均値(ここでは、「全体平均の距離」という)および「遠い」距離のグループの被験者の平均値(ここでは、「遠い距離」という)の3つで変化させた。それぞれの平均値は上述した通りであるが、実験2では、近い距離を14cmに設定し、全体平均の距離を20cmに設定し、遠い距離を27cmに設定した。
また、反応動作としては、ロボット12は、自身の視線を被験者の方向に向ける動作を行った。
被験者が評価した結果を考察すると、被験者は、自身が属するグループの対接触前距離の平均値で反応するロボット12の方が、他のグループの対接触前距離の平均値で反応するロボット12よりも自然であると感じる傾向がみられた。
以上より、この第1実施例では、実験1において、被験者(つまり、人間)単位で計測された距離の平均値が当該人間の対接触前距離として設定される。
図6は、閾値テーブルの一例を示す図である。図6に示すように、ユーザIDに対応して、閾値およびカテゴリが記載される。ユーザIDは、ユーザ(すなわち、人間)毎に割り当てられた固有の識別情報である。図6に示す例では、ユーザIDを1文字のアルファベットで示してあるが、これに限定される必要はない。アルファベットに代えて数字で示してもよいし、アルファベットまたは/および数字を用いて2文字以上で示しても良い。
閾値は、上記のようにして設定された対接触前距離(または、第1閾値)についての数値である。この第1実施例では、小数点以下の数値も記載してあるが、四捨五入するなどにより、整数で示してもよい。カテゴリは、上記のように分類されたグループの種類である。この第1実施例では、「近い」または「遠い」が記載される。
詳細な説明は省略するが、閾値テーブルのデータ(後述する、「閾値テーブルデータ304d」)は、上記のデータベースに記憶されており、コンピュータ16が閾値テーブルデータ304dをデータベースから取得し、ロボット12に送信する。したがって、ロボット12では、閾値テーブルデータ304dがRAM54に書き込まれ、反応動作を実行するかどうかを判断する場合に参照される。
また、上記のように、通常動作および反応動作では、ロボット12が、所定の振り、振る舞いのような身体動作または/および発話動作を行う。したがって、この第1実施例では、通常動作および反応動作のようなコミュニケーション行動を実行するための制御情報は、アクチュエータ(A1~A11、A13~A19)を駆動制御するための制御データまたは/および発話内容についての合成音声の音声データを含み、各コミュニケーション行動に付された名称(コマンド名)に対応して記憶される。ただし、身体動作には、自然の動作(無意識動作)も含まれる。無意識動作の代表的な例としては、瞬きや呼吸が該当する。また、このような生理的な動作のみならず、人間の癖による動作も無意識動作に含まれる。たとえば、癖による動作としては、たとえば、髪の毛を触る動作、顔を触る動作や爪を噛む動作などが該当する。また、制御情報は、身体動作とは別に、口の動きおよび顔の表情を表現するための制御データも含む。
図4では省略したが、コミュニケーション行動についての制御情報は、HDDのような不揮発性のメモリに記憶され、必要に応じて、HDDから読み出され、RAM54に書き込まれる。
上記のとおり、ロボット12は、一定範囲内であり、かつ、視野内に居る人間のユーザIDに対応する閾値(この第1実施例では、第1閾値)すなわち対接触前距離を閾値テーブルから取得するが、このユーザIDおよびそれに対応する閾値が閾値テーブルに登録(または、記載)されていない場合もある。したがって、かかる場合には、第1実施例では、ロボット12に、第1閾値を推定するコミュニケーション行動(以下、「推定行動」)を実行させ、その推定行動に対する人間の反応に基づいて当該人間の対接触前距離を推定し、推定した対接触前距離を使用してロボット12が反応動作を実行するかどうかを判断するようにしてある。
この第1実施例では、2種類の推定行動のいずれか一方が実行される。一方の推定行動を実行して、対接触前距離(第1閾値)を推定する処理を「第1推定処理」と呼び、他方の推定行動を実行して、対接触前距離を推定する処理を「第2推定処理」と呼ぶことにする。
第1推定処理では、対接触前距離を推定するために、推定行動として、「手を近づけますので、気になる距離になったら私を見てください」との発話とともに、人間の方向に顔を向けて、手を伸ばす動作を実行する。つまり、ロボット12は、対接触前距離を推定するための発話と身体動作を実行する。この第1実施例では、発話の後に身体動作が実行されるが、発話の途中で身体動作が開始されても良い。
そして、人間がロボット12に顔を向けた、または、人間の顔とロボット12の手の距離が第2閾値(9cm)以下になった場合には、ロボット12は手を伸ばす動作を停止する。
人間の顔とロボット12の手の距離が第2閾値以下になる前に、人間がロボット12に顔を向けた場合には、ロボット12が手を伸ばす動作を停止させたときの人間の顔とロボット12の手の距離を測定し、測定した距離が対接触前距離として推定される。また、人間がロボット12に顔を向けないで、人間の顔とロボット12の手の距離が第2閾値以下になった場合には、第2閾値が対接触前距離として推定される。
また、人間の対接触前距離を推定すると、推定した対接触前距離が第3閾値(20cm)未満であるかどうかに応じて、カテゴリが設定される。つまり、推定した対接触前距離が全体平均以上か未満かに応じて、対象者である人間が「近い」距離のグループまたは「遠い」距離のグループに分類される。推定した対接触前距離が第3閾値未満である場合には、対象者である人間のカテゴリが「近い」に設定される。一方、推定した対接触前距離が第3閾値以上である場合には、対象者である人間のカテゴリが「遠い」に設定される。
第2推定処理では、対接触前距離を推定するために、推定行動として、「私の顔に手を近づけてみてください」との発話を実行する。つまり、ロボット12は、対接触前距離を推定するための発話を実行する。
その後、人間の手とロボット12の顔の距離を計測するとともに、人間の手の移動速度を計測し、人間が手を近づける速度が遅くなった、または、人間の手とロボット12の顔の距離が第4閾値(14cm)以下になった場合に、対接触前距離を推定する。
人間の手とロボット12の顔の距離が第4閾値以下になる前に、人間の手の移動速度が遅くなった場合には、そのときに計測された人間の手とロボット12の顔の距離が対接触前距離として推定される。また、人間の手の移動速度が遅くならないで、人間の手とロボット12の顔の距離が第4閾値以下になった場合には、第4閾値が対接触前距離として推定される。
また、人間の対接触前距離を推定すると、推定した対接触前距離が第5閾値(20cm)未満であるかどうかに応じて、カテゴリが設定される。つまり、推定した対接触前距離が全体平均以上か未満かに応じて、対象者である人間が「近い」距離のグループまたは「遠い」距離のグループに分類される。推定した対接触前距離が第5閾値未満である場合には、対象者である人間のカテゴリが「近い」に設定される。一方、推定した対接触前距離が第5閾値以上である場合には、対象者である人間のカテゴリが「遠い」に設定される。
図7は図4に示したRAM54のメモリマップ300の一例を示す図である。図7に示すように、RAM54は、プログラム記憶領域302およびデータ記憶領域304を含む。
プログラム記憶領域302には、通信プログラム302a、距離検出プログラム302b、動作制御プログラム302c、音声処理プログラム302d、閾値設定プログラム302eおよび推定プログラム302fが記憶される。
通信プログラム302aは、他のロボットまたはコンピュータ(たとえば、コンピュータ16)と通信するためのプログラムである。距離検出プログラム302bは、コンピュータ16から送信される人間データに基づいて、一人または複数の人間の各々との距離についてのデータ(以下、「距離データ」という)を検出または取得するためのプログラムである。
動作制御プログラム302cは、ロボット12の動作を制御するためのプログラムであって、頭部制御プログラム3020、口唇動作制御プログラム3022、表情制御プログラム3024、上半身(肩)制御プログラム3026および下半身(腰)制御プログラム3028を含む。
頭部制御プログラム3020は、ロボット12の頭部26(図2)を通常動作または反応動作に適合するように、図3に示すアクチュエータA14-A16を制御するためのプログラムである。
口唇動作制御プログラム3022は、ロボット12がスピーカ68から発話するとき、その発話音声(合成音声)に適合する口唇形状となるように、たとえば図2(C)に示すアクチュエータA10-A11を制御するためのプログラムである。
表情制御プログラム3024は、通常動作または反応動作に合わせてロボット12の目または/および口の表情を表現するように、図2(A)~図2(C)に示すアクチュエータA1~A11およびA13を制御するためのプログラムである。
上半身(肩)制御プログラム3026は、通常動作または反応動作に合わせてロボット12の上半身(肩)32の動作を行うように、図3に示すアクチュエータA17を制御するためのプログラムである。
下半身(腰)制御プログラム3028は、通常動作または反応動作に合わせてロボット12の下半身(腰)34の動作を行うために、図3に示すアクチュエータA18およびA19を制御するためのプログラムである。
音声処理プログラム302dは、音声認識プログラムおよび音声合成プログラムを含む。音声認識プログラムは、マイク70を通して入力される、人間がロボット12に対して発話した内容をCPU50が認識するためのプログラムであり、CPU50は、たとえばDPマッチングや隠れマルコフ法(Hidden Markov Model:HMM)により、人間の発話内容を音声認識する。また、CPU50は、音声合成プログラムを実行することにより、音声合成データに従って合成した音声をスピーカ68に出力する。
閾値設定プログラム302eは、ロボット12の一定範囲内であり、かつ、視野内に居る人間に応じて第1閾値を設定するためのプログラムである。具体的には、閾値設定プログラム302eは、ロボット12の一定範囲内であり、かつ、視野内に居る人間のユーザIDを取得し、閾値テーブルを参照して、取得したユーザIDに対応して記載された第1閾値を設定する。また、閾値設定プログラム302eは、ユーザIDおよび閾値が閾値テーブルに登録(または、記載)されていない場合には、後述する推定プログラム302fに従って推定した第1閾値を設定する。推定処理では、推定行動が実行されるが、この推定行動は、動作制御プログラム302cおよび音声処理プログラム302dに従って実行される。
推定プログラム302fは、閾値テーブルに登録されていないユーザについての第1閾値およびカテゴリを推定するためのプログラムである。上述したように、推定プログラム302fに従って、CPU50(または、ロボット12)は、第1推定処理または第2推定処理を実行し、第1閾値を推定し、カテゴリを決定する。
図示は省略するが、プログラム記憶領域302には、ロボット12を制御するための他のプログラムが記憶される。
RAM54のデータ記憶領域304には、種々のデータが記憶される。音声データ304aは、マイク70から入力される音声データであり、一時的に記憶される。辞書データ304bは、音声認識のために必要な辞書などのデータである。距離データ304cは、距離検出プログラム302bに従って検出された距離データであり、一時的に記憶される。ただし、複数の人間がロボット12の周囲に存在する場合には、各人間についての距離データが検出される。閾値テーブルデータ304dは、図6に示したような閾値テーブルについてのデータである。推定データ304eは、推定プログラム302fに従って推定された第1閾値およびカテゴリについてのデータである。
図示は省略するが、データ記憶領域304には、ロボット12の制御に必要なコミュニケーション行動を実行するための制御情報などの他のデータが記憶され、また、CPU50の動作に必要な、タイマ、レジスタ、フラグなどが設けられる。
図8は第1実施例における図4に示すCPU50のロボット制御処理の一例を示すフロー図である。図8に示すように、CPU50は、ロボット制御処理を開始すると、ステップS1で、ロボット12の顔の向きを初期の方向に設定する。この第1実施例では、初期の方向は、ロボット12の顔の向きが正面を向いている方向であり、アクチュエータA14、A15およびA16の指令値がすべての初期値に設定される。
次のステップS3では、一定時間(たとえば、数秒から十数秒)待機する。第1実施例では、ロボット12が一点を見つめるように動作させることにより、何かに集中していることが表現される。たとえば、口を閉じて、少し下向きで机の上の資料を見つめ、瞬きするように、瞼(28aおよび28b)が動作される。つまり、CPU50は、アクチュエータA1およびA5を制御したり、アクチュエータA13を制御したり、アクチュエータA15を制御したりする。
続いて、ステップS5では、人間が一定範囲(たとえば、ロボット12の位置を中心とする60~70cmの円)内に居るかどうかを判断する。ここでは、CPU50は、コンピュータ16からの人間データを受信し、受信した人間データに基づいて、人間との距離を算出し、人間が一定範囲内に居るかどうかを判断する。
ステップS5で“NO”であれば、つまり、人間が一定範囲内に居なければ、ステップS1に戻る。一方、ステップS5で“YES”であれば、つまり、人間が一定範囲内に居れば、ステップS7で、当該人間がロボット12の視野内に居るかどうかを判断する。ここでは、CPU50は、人間データに基づいて、人間がロボット12の視野角内に居るかどうかを判断する。
ステップS7で“YES”であれば、つまり、人間がロボット12の視野内に居れば、図9に示すステップS15に進む。一方、ステップS7で“NO”であれば、つまり、人間がロボット12の視野内に居なければ、ステップS9で、人間の手がロボット12に触れたかどうかを判断する。ここでは、CPU50は、人間データから取得した人間の手の3次元位置がロボット12の頭部26、胴体または手(腕を含む)の表面の位置であり、触覚センサ64の検出データが触れられたことを示すかどうかを判断する。
ステップS9で“NO”であれば、つまり、人間の手がロボット12に触れていなければ、ステップS3に戻る。一方、ステップS9で“YES”であれば、つまり、人間の手がロボット12に触れれば、ステップS11で、わずかな反応動作を実行する。このステップS11では、触れられたことに気づく動作が実行される。たとえば、ロボット12は、人間に触れられると、触れられた状態を解除または回避するように、上体を移動させる。
続くステップS13では、ロボット12の顔を人間の顔の方に向けて、図9に示すステップS31に進む。ステップS13では、CPU50は、人間データから人間の顔の3次元位置を取得し、この3次元位置を視線が通るように、頭部26を動作させる。
図9に示すように、ステップS15では、ロボット12の顔を人間の顔の方に向けて、ステップS17に進む。なお、ステップS15の処理は、ステップS13の処理と同じであるため、重複した説明は省略する。
ステップS17では、人間のユーザIDが閾値テーブルに登録されているかどうかを判断する。つまり、CPU50は、閾値テーブルデータ304dを参照して、人間のユーザIDが閾値テーブルに記載されているかどうかを判断する。
ステップS17で“YES”であれば、つまり、人間のユーザIDが閾値テーブルに登録されていれば、ステップS19で、第1閾値を閾値テーブルに基づいて設定して、ステップS25に進む。
一方、ステップS17で“NO”であれば、つまり、人間のユーザIDが閾値テーブルに登録されていなければ、ステップS21で、後述する推定処理(図10および図11に示す第1推定処理、または、図12および図13に示す第2推定処理)を実行し、ステップS23で、ステップS21で推定した第1閾値を設定して、ステップS25に進む。ただし、ステップS23では、CPU50は、推定データ304eを参照して、推定した第1閾値を設定する。
ステップS25では、人間の手がロボット12の顔周辺の第1閾値以内に有るかどうかを判断する。ここでは、CPU50は、人間データに基づいて、人間の手がロボット12の顔(頭部26)から第1閾値以内に位置するかどうかを判断する。つまり、人間がロボット12の顔を触ろうとしているかどうかが判断される。
ステップS25で“NO”であれば、つまり、人間の手がロボット12の顔周辺の第1閾値以内に無ければ、ステップS15に戻る。一方、ステップS25で“YES”であれば、つまり、人間の手がロボット12の顔周辺の第1閾値以内に有れば、ステップS27で、人間のカテゴリが「近い」であるかどうかを判断する。ここでは、CPU50は、閾値テーブルデータ304dを参照して、ユーザIDに対応して記載されたカテゴリが「近い」を示すかどうかを判断する。
ステップS27で“NO”であれば、つまり、人間のカテゴリが「近い」でなければ、ステップS31に進む。一方、ステップS27で“YES”であれば、つまり、人間のカテゴリが「近い」であれば、ステップS29で、首を少し後ろに傾ける動作を実行する。
続いて、ステップS31で、視線を人間に向けて、ステップS33で、「何か御用ですか?」と発話する。
したがって、接触前距離が近い人間の場合および遠い人間の場合の両方の場合において、ロボット12は、人間がロボット12自身の顔を触ろうとしていることを察知して、この人間の方を見るように動作される。また、接触前距離が近い人間の場合には、ロボット12は、さらに、自身の顔を人間の顔に向けるように動作される。このように、人間が、他の人間に近づいて、この他の人間の顔に触れようとした場合に、他の人間が行う動作と同様の動作をロボット12に実行させることができる。つまり、ロボット12は自然な反応動作を行うため、ロボット12の顔を触れようとした人間が違和感を覚えるのを出来る限り防止することができる。
そして、ステップS35では、終了かどうかを判断する。つまり、CPU50は、ユーザから終了の指示が与えられたかどうかを判断する。ステップS35で“NO”であれば、つまり、終了でなければ、図8に示したステップS1に戻る。一方、ステップS35で“YES”であれば、つまり、終了であれば、ロボット制御処理を終了する。
なお、図8および図9では省略するが、図示は省略するが、上述したように、一定範囲内に居る人間がロボット12に話し掛けると、反応動作を実行した後に、ロボット12は通常動作を実行する。
図10および図11は、図9に示したステップS21の推定処理に対応する第1推定処理を示すフロー図である。以下、第1推定処理について説明するが、既に説明した処理と同じ処理については簡単に説明することにする。
図10に示すように、CPU50は、第1推定処理を開始すると、ステップS51で、ロボット12の顔の向きを初期の方向に設定する。次のステップS53では、一定時間(たとえば、数秒から十数秒)待機する。続いて、ステップS55では、人間が一定範囲(たとえば、ロボット12の位置を中心とする60~70cmの円)内に居るかどうかを判断する。
なお、第1推定処理(後述する第2推定処理のS91-S95も同様)では、ステップS51-S55の処理を実行するようにしてあるが、ステップS1-S3の処理によって、既に、人間が一定範囲内に存在することは判断されているため、省略してもよい。
ステップS55で“NO”であれば、ステップS51に戻る。一方、ステップS55で“YES”であれば、ステップS57で、推定のための発話を実行する。上述したように、ここでは、CPU50は、「手を近づけますので、気になる距離になったら私を見てください」の合成音声をスピーカ68から出力する。
次のステップS59では、人間の方向に顔を向けた状態で、その方向に手を伸ばす動作を実行して、図11に示すステップS61で、人間が顔を向けたかどうかを判断する。CPU50は、眼カメラ66で撮影された画像から人間の顔を認識したかどうかを判断する。
ステップS61で“NO”であれば、つまり、人間が顔を向けていなければ、ステップS63で、距離を計測する。ここでは、CPU50は、人間データに基づいて、ロボット12の手と人間の顔との距離を計測(または、算出)する。
続いて、ステップS65では、人間の顔とロボット12自身の手の距離が第2閾値(第1実施例では、14cm)以下であるかどうかを判断する。ステップS65で“NO”であれば、つまり、人間の顔とロボット12自身の手の距離が第2閾値よりも大きい場合には、ステップS61に戻る。
一方、ステップS65で“YES”であれば、つまり、人間の顔とロボット12自身の手の距離が第2閾値以下である場合には、ステップS67で、手を伸ばす動作を止めて、ステップS69で、人間(つまり、対象者)のカテゴリを「近い」に設定し、第1推定処理を終了して、図8および図9に示したロボット制御処理にリターンする。
また、ステップS61で“YES”であれば、つまり、人間が顔を向ければ、ステップS71で、手を伸ばす動作を停止し、ステップS75で、人間の顔とロボット12自身の手の距離が第3閾値(第1実施例では、20cm)未満であるかどうかを判断する。
ステップS75で“YES”であれば、つまり、人間の顔とロボット12自身の手の距離が第3閾値未満であれば、ステップS69に進む。一方、ステップS75で“NO”であれば、つまり、人間の顔とロボット12自身の手の距離が第3閾値以上であれば、ステップS77で、人間(対象者)のカテゴリを「遠い」に設定し、第1推定処理を終了して、ロボット制御処理にリターンする。
なお、説明は省略したが、第1推定処理では、ステップS63またはステップS73で計測された距離すなわち推定された対接触前距離のデータと、ステップS69またはステップS77で設定されたカテゴリのデータが推定データ304eとしてRAM54に記憶される。
図12および図13は、図9に示したステップS21の推定処理に対応する第2推定処理を示すフロー図である。以下、第2推定処理について説明するが、既に説明した処理と同じ処理については簡単に説明することにする。
図12に示すように、CPU50は、第2推定処理を開始すると、ステップS91で、ロボット12の顔の向きを初期の方向に設定する。次のステップS93では、一定時間(たとえば、数秒から十数秒)待機する。続いて、ステップS95では、人間が一定範囲(たとえば、ロボット12の位置を中心とする60~70cmの円)内に居るかどうかを判断する。
ステップS95で“NO”であれば、ステップS91に戻る。一方、ステップS95で“YES”であれば、ステップS97で、推定のための発話を実行する。上述したように、ここでは、CPU50は、「私の顔に手を近づけてみてください」の合成音声をスピーカ68から出力する。
次のステップS99では、人間の手の移動速度を計測する。ここでは、CPU50は、人間データに基づいて、単位時間当たりの手の移動距離から移動速度を算出し、図示等は省略したが、時系列に従ってRAM54のデータ記憶領域304に記憶する。ただし、人間の手がロボット12に近づいていない場合には、移動速度は算出されない。人間の手がロボット12に近づいていない場合には、人間の手が止まっている場合と、人間の手がロボット12に近づく方向に動いていない場合を含む。
図13に示すように、次のステップS101では、距離を計測する。次のステップS103では、人間の手を近づける速度が遅くなったかどうかどうかを判断する。ここでは、CPU50は、前回の移動速度と今回の移動速度を比較し、今回の移動速度が前回の移動速度よりも小さいかどうかを判断する。
ステップS103で“NO”であれば、つまり、人間の手を近づける速度が遅くなっていなければ、ステップS105で、人間の手とロボット12自身の顔の距離が第4閾値(第1実施例では、14cm)以下であるかどうかを判断する。ステップS105で“NO”であれば、つまり、人間の手とロボット12自身の顔の距離が第4閾値よりも大きい場合には、図12に示したステップS99に戻る。
一方、ステップS105で“YES”であれば、つまり、人間の手とロボット12自身の顔の距離が第4閾値以下である場合には、ステップS107で、人間(つまり、対象者)のカテゴリを「近い」に設定し、第2推定処理を終了して、図8および図9に示したロボット制御処理にリターンする。
また、ステップS103で“YES”であれば、つまり、人間の手を近づける速度が遅くなっていれば、ステップS109で、人間の手とロボット12自身の顔の距離が第5閾値(第1実施例では、20cm)未満であるかどうかを判断する。
ステップS109で“YES”であれば、つまり、人間の手とロボット12自身の顔の距離が第5閾値未満であれば、ステップS107に進む。一方、ステップS109で“NO”であれば、つまり、人間の手とロボット12自身の顔の距離が第5閾値以上であれば、ステップS111で、人間(対象者)のカテゴリを「遠い」に設定し、第2推定処理を終了して、ロボット制御処理にリターンする。
なお、説明は省略したが、第2推定処理では、ステップS101で計測された距離すなわち推定された対接触前距離のデータと、ステップS107またはステップS111で設定されたカテゴリのデータが推定データ304eとしてRAM54に記憶される。
この第1実施例によれば、ロボットが人間に触れようとしたときに、これ以上近づけて欲しくない距離を人間毎に測定し、これを用いて、人間がロボットに触れようとしたときにロボットが反応動作を実行するかどうかを判断するので、ロボットに触れようとした人間が違和感を覚えるのを出来る限り防止することができる。つまり、コミュニケーション対象の人間の各々に対して、物理空間に存在するロボットのようなエージェントに自然な反応動作を実行させることができる。
また、この第1実施例によれば、接触前距離が記憶されていない人間については、推定行動を実行して推定した接触前距離を用いて反応動作を実行するので、接触前距離が記憶されていない人間に対しても、物理空間に存在するロボットのようなエージェントに自然な反応動作を実行させることができる。
なお、この第1実施例では、人間の手がロボットの顔に触れようとした場合について説明したが、これに限定される必要はない。たとえば、人間が手に物を持っている場合には、当該手に持った物がロボットの顔に触れようとしたかどうかを判断するようにしてもよい。また、ロボット12の特定の部位は顔に限定される必要は無く、人間がロボットの他の部位(手または肩など)に触れようとしたかどうかを判断するようにしてもよい。ただし、他の部位に触れようとしたかどうかを判断する場合には、上記のような実験を行うことにより、他の部位に応じた第1閾値が人間毎に決定される。
また、この第1実施例では、人間が「近い」距離のグループである場合には、ロボット12の視線を当該人間の方に向ける動作に加えて、ロボット12の首を後ろに傾けるようにしてあるが、これに限定される必要はない。ロボット12の首を後ろに傾けることに代えて、または、傾けることに加えて、他の動作(たとえば、両手を広げる動作)を行っても良い。
また、人間が「近い」距離のグループである場合のみならず、「遠い」距離のグループである場合にも、ロボット12の視線を当該人間の方に向ける動作に加えて、他の動作(たとえば、右手を挙げる動作)を行っても良い。
さらに、この第1実施例では、人間を2つの距離のグループに分類するようにしたが、これに限定される必要はない。3つ以上の距離のグループに分類することも可能である。
<第2実施例>
第2実施例は、バーチャルリアリティ空間(以下、「VR空間」という)内で活動するアバターまたは自律的に行動するエージェントであるキャラクタオブジェクトを制御するシステム500であり、キャラクタオブジェクトの制御装置として機能するコンピュータ502を含む。
コンピュータ502は、汎用のPCまたはワークステーションであり、CPU502aおよびRAM502bなどのコンポーネントを備えている。第2実施例では、3次元モデル、VR空間およびキャラクタオブジェクトの動作(アニメーション)などは、ユニティ・テクノロジーズ社が提供するゲーム開発プラットフォームであるUnityを用いて作成した。また、後述するように、近づいてくるキャラクタオブジェクトの手の停止操作、対人距離の測定およびHMD506との連携などもUnityで実装した。
システム500は、入力装置504およびヘッドマウントディスプレイ(以下、「HMD」という)506をさらに含み、入力装置504およびHMD506は、それぞれ、コンピュータ502に接続される。
第2実施例では、入力装置504として、Oculus(登録商標)社が開発および販売しているバーチャルリアリティ向けヘッドマウントディスプレイのOculus(登録商標) Touchコントローラが用いられる。詳細な説明は省略するが、このコントローラを用いることにより、コンピュータ502は、VR空間内に、人間の手を配置し、その動きをリアルタイムにシミュレーション表示させる。
また、VR環境を構築するために、HMD506として、Oculus(登録商標)社が開発および販売しているバーチャルリアリティ向けヘッドマウントディスプレイのOculus Rift(登録商標)が用いられる。ただし、これは一例であり、他の汎用のヘッドマウントディスプレイを用いるようにしてもよい。Unityと連携することにより、HMD506またはこれを装着した人間(または、ユーザ)の頭部の位置および向きがVR空間に反映され、人間の視野の画像がHMD506に表示される。したがって、HMD506を装着した人間は、そのVR空間内に居るかのように感じる(没入感を得る)ことができる。
なお、HMD506に表示される画像を描画する方法は、既に周知であり、本願発明の本質的な内容ではないため、その説明は省略することにする。
第2実施例では、VR空間において、対接触前距離を用いて、キャラクタオブジェクトに、第1実施例のロボット12と同様に、所定の入力(または、刺激)に反応して反応動作を実行させる。
ただし、第2実施例では、対接触前距離は、VR空間において、キャラクタオブジェクトがVR空間内の人間に触れられる前に反応する距離である。
また、所定の入力は、VR空間において、キャラクタオブジェクトの一定範囲(たとえば、キャラクタオブジェクトの位置を中心とする半径60~70cmの円内)内に、人間が存在することを検出したことである。一定範囲内かどうかは、VR空間内における人間とキャラクタオブジェクトの距離をそれぞれの位置座標に基づいて算出することにより、知ることができる。また、他の例では、所定の入力は、VR空間内において、所定のイベントが発生したことである。たとえば、VR空間内の所定のオブジェクトから一定レベル以上の音量の音が発生したこと、または、特定のオブジェクトがVR空間内に出現したことなどが所定のイベントの発生に該当する。
ただし、第2実施例では、キャラクタオブジェクトは、VR空間に存在するため、所定の動作を実行する場合には、所定の動作を行うアニメーションが再生され、所定の音声を発する場合には、予め用意された音声データが再生される。ただし、音声データを再生することに代えて、または、音声データを再生するとともに、予め用意された発話内容が字幕または吹き出しで表示されてもよい。これらのことについては、第2実施例において、キャラクタオブジェクトが動作ないし行動を実行する場合について同様である。
この第2実施例では、反応動作は、VR空間において、キャラクタオブジェクトは、人間がキャラクタオブジェクトに近づき、この人間がキャラクタオブジェクトの視野内に居て(または存在し)、この人間に属する所定の部位(この第2実施例では「手」)がキャラクタオブジェクトの所定の部位(たとえば「顔」)に触れようとしたときに、触れようとしたことに気付いて行う動作、人間がキャラクタオブジェクトに近づき、この人間がキャラクタオブジェクトの視野内に居ないで、この人間がキャラクタオブジェクトに触れたときに、触れたことに気づいて行う動作を意味する。
図15(A)は、キャラクタオブジェクトが反応動作を行う前にHMD506に表示される画像の一例であり、図15(B)はキャラクタオブジェクトが反応動作を行ったときにHMD506に表示される画像の一例である。
図15(A)および図15(B)に示すように、HMD560に表示される画像は、VR空間内に存在するキャラクタオブジェクト600および人間の右手に相当する画像(以下、「右手画像」という)602を含む。なお、背景画像は省略してある。
物理空間において、人間が右手を胴体の横から少し前に出すと、図15(A)に示すように、右手画像602が表示される。このとき、キャラクタオブジェクト600は、VR空間内の人間以外の方向を向いている。そして、人間がキャラクタオブジェクト600に右手を近づけるように手を移動させると、右手画像602がキャラクタオブジェクト600の方に向けて移動し、対接触前距離以上近づいたときに、反応動作を実行する。
図15(B)に示すように、この第2実施例では、反応動作として、キャラクタオブジェクト600は、キャラクタオブジェクト600自身の顔(または、頭部)に触れようとした人間の顔を見る動作を実行する。
このため、何かに集中していて、近づく人間に気づいていなかったキャラクタオブジェクト600に、当該人間がキャラクタオブジェクト600の顔に触れようとしたことに気づいて反応するように動作させることができる。
なお、図15(A)および図15(B)は、キャラクタオブジェクト600の反応動作を分かり易く説明するための画像であり、後述するオブジェクト制御処理における動作とは少し異なる。
第2実施例では、CPU502aは、VR空間内において、人間がキャラクタオブジェクト600を基準とする一定範囲内に居るかどうかを判断する。CPU502aは、VR空間において、人間の位置の座標およびキャラクタオブジェクト600の位置の座標を記憶しており、それらの位置の座標から人間とキャラクタオブジェクト600の距離を算出することができる。算出した距離が一定範囲を規定する長さよりも短い場合に、人間がキャラクタオブジェクト600を基準とする一定範囲内に居ると判断し、算出した距離が一定範囲を規定する長さ以上である場合に、人間がキャラクタオブジェクト600を基準とする一定範囲内に居ないと判断する。
人間がキャラクタオブジェクト600を基準とする一定範囲内に居る場合には、CPU502aは、当該人間がキャラクタオブジェクト600の視野内に居るかどうかを判断する。つまり、CPU502aは、キャラクタオブジェクト600の現在の顔の向きを基準の方向(つまり、視線の方向)とした場合に、上記の一定範囲内に居る人間がキャラクタオブジェクト600の視野角内に居るかどうかを判断する。
ただし、キャラクタオブジェクト600の視野角は、一般的な人間の視野角に合わせて、水平方向が約200度(ただし、視線を基準(中心)に、左右のそれぞれに100度である)で設定され、垂直方向が約125度(ただし、視線を基準に、下向きが75度で、上向きが50度である)に設定される。ただし、この第2実施例では、キャラクタオブジェクト600が見ている方向に人間が居るかどうかを判断するだけであるため、垂直方向については無視される。
キャラクタオブジェクト600は、自身の視線が向く方向(垂直方向の成分を除く)に大きさが1のベクトル(視線ベクトル)を算出するとともに、キャラクタオブジェクト600の位置から人間の位置に向かうベクトルを算出し、この2つのベクトルが成す角度が100度以内であるかどうかを判断する。2つのベクトルが成す角度が100度以内であれば、人間がキャラクタオブジェクト600の視野内に居ることが判断される。一方、2つのベクトルが成す角度が100度を超えている場合には、人間がキャラクタオブジェクト600の視野外に居ることが判断される。
なお、この第2実施例では、視野角は固定的に設定されるが、可変的に設定されてもよい。たとえば、人間がキャラクタオブジェクト600に近づくに連れて視野角は小さくされてもよい。
VR空間において、人間がキャラクタオブジェクト600の視野内に居ることが判断されると、キャラクタオブジェクト600は、自身の顔を当該人間の方に向ける。そして、CPU502aは、VR空間において、当該人間の手がキャラクタオブジェクト600の顔周辺の対接触前距離(第6閾値)以内に有るかどうかを判断する。具体的には、この第2実施例では、人間の右手と、キャラクタオブジェクト600の頭部の表面との距離が対接触前距離以内であるかどうかが判断される。人間の手がキャラクタオブジェクト600の顔周辺の対接触前距離以内に有る場合に、人間がキャラクタオブジェクト600の顔に触れようとしていることが判断される。一方、人間の手がキャラクタオブジェクト600の顔周辺の対接触前距離を超えて離れている場合には、人間がキャラクタオブジェクト600の顔に触れようとしていることが判断されない。
後述するように、対接触前距離は、人間毎に、予め測定された値に基づいて設定される。人間毎の対接触前距離が記載された閾値テーブルがデータベースに登録されており、キャラクタオブジェクト600のコミュニケーション対象である人間に応じた対接触前距離を閾値テーブルから参照して用いることにより、上記の判断が行われる。一例としては、データベースは、コンピュータ502の内部メモリまたはコンピュータ502がアクセス可能な外部のメモリである。
このように、第2実施例においても、対接触前距離は、コミュニケーション対象の人間毎に設定されるため、個別に人間を識別する必要がある。したがって、この第2実施例では、人間に固有の識別情報(ユーザID)を割り当て、コンピュータ502の使用時(たとえば、ログイン時)などに当該ユーザIDを入力させる。
ただし、これは一例であり、他の方法で人間を識別することもできる。たとえば、コンピュータ502に接続したカメラで撮影した画像から取得した生態情報(たとえば、網膜または声紋)に基づいて人間を識別することもできる。かかる場合には、予め生態情報をユーザIDに対応付けて記憶しておき、取得した生態情報と一致またはほぼ一致することが判断されたユーザIDを取得することにより、人間を個別に識別する。
詳細な説明は省略するが、VR空間において、上記の一定範囲(最大の対接触前距離も長い距離の半径を有する円)内に、複数の人間が居る場合には、各人間について、キャラクタオブジェクト600の視野内に居るかどうかが判断される。さらに、VR空間において、複数の人間がキャラクタオブジェクト600の視野内に居る場合には、キャラクタオブジェクト600に最も近い人間について、当該人間の手がキャラクタオブジェクト600の顔周辺の対接触前距離以内に有るかどうかが判断される。ただし、VR空間において、複数の人間がキャラクタオブジェクト600の視野内に居る場合には、いずれかの人間の手がキャラクタオブジェクト600の顔周辺の対接触前距離以内に有るかどうかが判断されてもよい。
この第2実施例では、上述したように、VR空間において、人間がキャラクタオブジェクト600の顔に触れようとしていることが判断されると、つまり、人間の手が対接触前距離を超えてキャラクタオブジェクト600に近づいたことが判断されると、キャラクタオブジェクト600は、反応動作として、キャラクタオブジェクト600自身の視線をその人間の方に向ける。たとえば、VR空間における人間の頭部に相当する位置に仮想カメラが配置されるため、仮想カメラが配置される位置においてVR空間の高さ方向に延びる直線とキャラクタオブジェクト600の視線が交わるようにキャラクタオブジェクト600の視線の向きが変化される。ただし、キャラクタオブジェクト600の視線は、人間の顔の位置よりも高い位置には向けられない。
また、対接触前距離が比較的近い人間については、つまり、後述するように、「近い」距離のグループに分類された人間については、上記の反応動作の前に、さらに、キャラクタオブジェクト600は、首を少し後ろに傾ける動作も実行する。キャラクタオブジェクト600は、一定範囲内であり、視野内に人間が居る時、キャラクタオブジェクト600自身の顔を当該人間の方に向けているため、首を少し後ろに傾けることにより、近づいた人間の顔の方に顔を向けことができる。つまり、対接触前距離が比較的近い人間に対しては、キャラクタオブジェクト600は、視線のみならず、自身の顔を人間の顔の方向に向ける。このように、「近い」距離のグループに分類された人間については、キャラクタオブジェクト600の反応動作が変化される。
また、第2実施例では、人間がキャラクタオブジェクト600の視野内に居ない(または存在しない)場合には、キャラクタオブジェクト600は人間にいずれかの部位を触れられると、わずかな反応動作を実行した後に、当該人間の方に顔を向ける。ただし、わずかな反応動作とは、触れられたことに気づく動作を意味し、より具体的には、ぴくりとするように、少し上体を後傾する動作を意味する。つまり、CPU502aは、キャラクタオブジェクト600が人間に触られると、触れた手が伸びる方向(この第2実施例では、2次元の方向すなわちVR空間内の水平方向)と同じ方向に、キャラクタオブジェクト600の上体を少し傾ける(たとえば、3次元のVR空間における高さ方向に対して5~10度程度傾ける)ように、動作させる。
また、詳細な説明は省略するが、人間がキャラクタオブジェクト600に話し掛ける(問い掛ける)と、反応動作として、“挨拶”の動作を実行したり、“返事”の動作を実行したりする。詳細な説明は省略するが、“挨拶”の動作では、キャラクタオブジェクト600は、“こんにちは”と発話した後に、お辞儀する。また、“返事”の動作では、キャラクタオブジェクト600は、“はい”と発話した後に、人間の方を見る。
また、上述したように、この第2実施例では、対接触前距離(または、第6閾値)は、下記のデータ収集の実験3を行ったときに測定された距離に基づいて算出(または、設定)される。
実験3では、人間がVR空間上でキャラクタオブジェクト600から顔に向かって手を近づけられた時に、どの程度の距離で不快感を受け始めるのかを測定する。距離の測定方法は,対人距離計測に最も多く利用されている停止距離法に基づいて設計した。キャラクタオブジェクト600が自身の手を被験者の顔に徐々に近づけ、被験者が不快だと感じた際の距離を計測した。
なお、VR空間上の対接触前距離は、本研究においては、キャラクタオブジェクト600の右手中指の付け根と、ユーザの視点(仮想カメラまたはVR空間におけるHMD506の座標)との距離として定義した。
また、停止距離法については、参考文献1(L. Takayama, and C. Pantofaru, "Influences on proxemic behaviors in human-robot interaction," in Intelligent robots and systems, 2009. IROS 2009. IEEE/RSJ international conference on, pp. 5495-5502, 2009.)、参考文献2(J. Mumm, and B. Mutlu, "Human-robot proxemics: physical and psychological distancing in human-robot interaction," in Proceedings of the 6th international conference on Human-robot interaction, pp. 331-338, 2011.)、参考文献3(M. Obaid, E. B. Sandoval, J. Z?otowski, E. Moltchanova, C. A. Basedow, and C. Bartneck, "Stop! That is close enough. How body postures influence human-robot proximity," in Robot and Human Interactive Communication (RO-MAN), 2016 25th IEEE International Symposium on, pp. 354-361, 2016.)、参考文献4(S. Rossi, M. Staffa, L. Bove, R. Capasso, and G. Ercolano, "User's Personality and Activity Influence on HRI Comfortable Distances," in International Conference on Social Robotics, pp. 167-177, 2017.)、参考文献5(Y. H. a. A. Ito, "Influence of the Size Factor of a Mobile Robot Moving Toward a Human on Subjective Acceptable Distance, ," Mobile Robots - Current Trends, Zoran Gacovski (Ed.),, 2011.)および参考文献6(Y. Kim, S. S. Kwak, and M.-s. Kim, "Am I acceptable to you? Effect of a robot's verbal language forms on people's social distance from robots," Computers in Human Behavior, vol. 29, no. 3, pp. 1091-1101, 2013.)に開示されているため、その説明については省略する。
また、人間に触れるキャラクタオブジェクト600の性別がもたらす影響も検証するため、男女らしい外見を備えた2種類のキャラクタオブジェクト600を用いて対接触前距離を計測した。被験者は、18~24歳の男性10名、女性10名の合計20名であった。
図示は省略するが、実験3は、被験者が椅子に座った状態でヘッドマウントディスプレイを装着し、コントローラを握った状態で行われた。データ収集において、自身の顔に近づいてくるキャラクタオブジェクト600の手を停止するために、被験者はコントローラのボタンを押す。被験者は任意のタイミングでボタンを押すことが可能であり、そのタイミングで対接触前距離を計測した.ただし、データ収集においては、上記のOculus(登録商標) Touchコントローラに代えて、Microsoft(登録商標)社が販売する家庭用ゲーム機Xbox(登録商標)用のコントローラを用いた。
対接触前距離を測るためのキャラクタオブジェクト600として、Unity assetで購入可能な、アニメ調の男女の3Dモデルを用いた。ただし、第2実施例に示すキャラクタオブジェクト600は、アニメ調の男性型の3Dモデルを模して記載したオブジェクトであり、実際の3Dモデルとは異なる。男女のキャラクタオブジェクト600は同様の関節部位を備えており、データ収集において必要となる、人間の顔に触れる動作を行うことが可能である。
なお、女性型の3Dモデルを模したキャラクタオブジェクトについては省略するが、服装などによって一目で女性であることが分かるように表現されている。
データ収集のための接触動作として、椅子に座った状態の被験者に対し、VR空間上で立ったキャラクタオブジェクト600が右手を近づける動作を実装した。データ収集のために用いた画像の一例が図16に示される。上記のとおり、キャラクタオブジェクト600は立った状態で右手を前方に延ばすように動作される。
キャラクタオブジェクト600が手を近づける角度は、被験者の顔正面方向に対して縦方向が-45度から45度までを5度刻みで19通り、横方向が-30度から30度までを5度刻みの13通りで、合計247通りの角度からランダムな順番で設定した。
キャラクタオブジェクト600の手は全ての角度において被験者の顔から70cm離れたところに現れ、5秒間で顔に到達する速さで接近するように調整した。また、キャラクタオブジェクト600の手のひらが、最も被験者の顔部分に近くなるように角度を調整して触れる動作を行うように設計した。キャラクタオブジェクト600の出現、接近および停止タイミングは、被験者のコントローラによるボタン操作で自動的に切り替わるように設定した。
被験者はHMD506の装着および調整を行い、実験3を開始した後、被験者がコントローラのボタンを押すと、キャラクタオブジェクト600が右手を出して停止した状態で表示される。被験者はキャラクタオブジェクト600の右手の位置を確認した後、任意のタイミングでボタンを押してキャラクタオブジェクト600の動作を開始させることが可能である。被験者が不快と感じ始めた距離でもう一度ボタンを押すことで、キャラクタオブジェクト600の手を停止させることが可能である。システム500(コンピュータ502)は、キャラクタオブジェクト600の手を停止させるボタン操作が行われた時点での距離を計測した。これらの計測手順を全ての対象角度に対して行った後、3分程度の小休止を挟み、キャラクタオブジェクト600のモデルを切り替えて再度計測が行われた。
ここで、VR空間上で計測した対接触前距離データの処理方法とデータ分析結果を説明する。その分析結果をもとに、VR空間上のキャラクタオブジェクト600が顔に手を近づけられた時に反応動作を実行すべき距離の基準を決定する。
被験者がコントローラ操作によって、近づいてくるキャラクタオブジェクト600の手を停止した時、被験者の視点の座標とキャラクタオブジェクト600の右手中指の付け根部分との距離を計測し、角度情報やキャラクタオブジェクト600の性別情報などと共に記録した。被験者がボタンを連打するなど、操作ミスによって意図しない距離でキャラクタオブジェクト600の手を停止させた試行については、分析の対象外とした。
取得したデータにおいて分析対象となったデータ点数は、10名の男性被験者で4934点(男性型のキャラクタオブジェクト600:2467点、女性型のキャラクタオブジェクト600:2467点)、10名の女性被験者4918点(男性型のキャラクタオブジェクト600:2457点、女性型のキャラクタオブジェクト600:2461点)であった。全20名の被験者における対接触前距離の平均値は17.93cm(標準誤差1.98cm)であった。
収集したデータに対して、被験者の性別(男性・女性)、キャラクタオブジェクト600の性別(男性・女性)、上下方向(被験者の顔正面を含む上方向・下方向)、および左右方向(被験者の顔正面を含む左方向・右方向)を考慮した4要因分散分析を行った。
なお、データ収集の実験3において、キャラクタオブジェクト600の触れる動作の速度は一定としたため、速度に関する分析は行っていない。
上記の分析においては、上下方向要因と左右方向要因の主効果、および上下方向要因とキャラクタオブジェクト600の性別要因の交互作用において有意な差がみられた。
なお、左右方向要因に関しては、左側から触れる方が右側から触れる場合よりも有意に大きな距離を示すことが明らかになった(右側:17.4cm、左側:18.4cm)。この理由としては、被験者の視界に提示されるキャラクタオブジェクト600の身体の割合の違いが影響したと考えられる。左側から触れる場合にはキャラクタオブジェクト600の身体が被験者の正面方向に存在するが、右側から触れる場合はその身体が視界外となる場合が多くなっており、提示される視覚刺激の違いが影響を及ぼした可能性がある。
上下方向要因とキャラクタオブジェクト600の性別要因の交互作用に関して、Bonferroni法による多重比較を行った結果、キャラクタオブジェクト600の性別が男性の場合に、下側から触れる方が上側から触れる場合よりも有意に大きな距離を示すことが明らかになった(有意確率p=0.010、上側:16.8cm、下側:19.3cm)。
これらの結果から、触れる方向およびキャラクタオブジェクト600の性別との組み合わせが対接触前距離に影響を及ぼすことが示された。一方、絶対値としての差は、1cm~2.5cm程度であることも明らかになった。
また、各被験者の平均対接触前距離は、それぞれ点でグラフ上に表し、その分布を視覚化したところ、全員の平均(以下、「全体平均」ということがある)である17.93cmを境に、二つのグループへと分離していることが示唆された。そこで、これらのデータが全体平均未満および以上の2種類のクラスタに分類できると仮定し、クラスタ数2のk-means法によるクラスタリングを行ったところ、全体平均未満および以上のグループで属するクラスタが異なる結果となった。
ただし、被験者の対接触前距離は、実験3で当該被験者について測定した距離の平均値である。また、全体平均未満のグループに属する全被験者の対接触前距離の平均値は9.24cmであり、全体平均以上のグループに属する全被験者の対接触前距離の平均値は25.03cmである。
全体平均を基準として、人間(または、人間の対接触前距離)は、全体平均の平均値未満のグループ(この第2実施例では、「近い」距離のグループ)と、全体平均の平均値以上のグループ(この第2実施例では、「遠い」距離のグループ)に分類される。
ただし、全体平均を基準として、人間は、全体平均の平均値以下の「近い」距離のグループと、全体平均の平均値よりも大きい「遠い」距離のグループに分類されるようにしてもよい。このことは、後述する第3推定処理および第4推定処理においても同様である。
これらの結果は、人間が好む対接触前距離は必ずしも一様ではないことを示唆していると考える。そこで、第2実施例では、全体平均を含む各グループの対接触前距離の平均値を用いてキャラクタオブジェクト600が人間からの接触に反応した場合に、どのような印象の違いをもたらすかの実験4をさらに行うこととした。
上記の第1実施例で示したように、物理空間において人間がロボット12に触れようとしている状況においては、ロボット12が人間の平均対接触前距離を用いて反応動作を実行することで、より自然な印象を与えることが分かっている(非特許文献1参照)。しかし、VR空間におけるキャラクタオブジェクト600に対しても同様に人間から収集した対接触前距離が有効であるかは明らかではない。
実験3で収集したデータの分析結果からは、上記のとおり、全員の対接触前距離の平均値を閾値として2つの異なる対接触前距離群(「近い」距離のグループと「遠い」距離のグループ)が存在することが示唆された。キャラクタオブジェクト600が、これら人間から収集したデータに基づく対接触前距離を用いて人間からの接触に対する反応動作を行う場合、物理空間における対人距離と同様に、より近い距離までの接近を許容することで、キャラクタオブジェクト600に対してより良い印象を与えたり、キャラクタオブジェクト600が自身に対してより良い印象を持っていると感じさせたりすることが期待できる。また、キャラクタオブジェクト600の対接触前距離が、触れようとする人間自身の好む対接触前距離と同じ場合に、そのキャラクタオブジェクト600をより好むことも期待できる。
実験4では、被験者内要因である対接触前距離条件(3要因)とキャラクタオブジェクト600性別要因(2要因:男性・女性)、および被験者間要因である被験者性別要因(2要因:男性・女性)と被験者の対接触前距離群(2要因:近い/遠い)の、4要因による比較を行う。以下に、対接触前距離条件における各要因の詳細を示す。
Near(近い)条件:キャラクタオブジェクト600の対接触前距離として、データ収集の実験3を行った被験者のうち「近い」距離のカテゴリに属する被験者の対折衝前距離の平均値である9.24cmを用いる。
Average(平均)条件:キャラクタオブジェクト600の対接触前距離として、データ収集の実験3を行った被験者全員の平均値である17.93cmを用いる。
Far(遠い)条件:キャラクタオブジェクト600の対接触前距離として、データ収集の実験3を行った被験者のうち「遠い」距離のカテゴリに属する被験者の対接触前距離の平均値である25.03cmを用いる。
この実験4では、被験者がキャラクタオブジェクト600の顔に手を近づける動作を行う。そこで、被験者の右手には、ワイヤレスコントローラすなわちOculus(登録商標) Touchコントローラを装着し、物理空間における被験者の手の位置が、VR空間上に反映されるよう設定した。
この実験4には、18~24歳の男女24名(男性:12名、女性:12名)が参加した。被験者はHMD506の装着および調整を行い、被験者の対接触前距離を簡易的に計測するため、上記のデータ収集を簡易版のプロセスによって実行した。具体的には、キャラクタオブジェクト600が手を近づける角度の解像度を5度単位から15度単位へと変更し、合計35通りの角度で対接触前距離を計測した。
簡易版のプロセスによってデータ収集を行った後、実験4を開始した。実験4では、VR空間には座席に座った男性または女性のキャラクタオブジェクト600が存在しており、被験者は任意のタイミングで右手をキャラクタオブジェクト600の顔へと近づけることが出来る。被験者に対して、事前に、キャラクタオブジェクト600は顔から一定の距離範囲内に被験者の手が近づくと被験者の顔を見る反応を示し、その動作は落ち着かない感じや不快感を示すものであることを説明した上で、その反応が見られた時点で手を近づける動作を止めるように依頼した。
各条件において、キャラクタオブジェクト600が被験者の顔に反応する距離は上記の条件に基づいて決定された。被験者は、異なる角度から合計9回(高さ方向(上、正面、下)と、横方向(右、正面、左)の組み合わせ)、自身の手をキャラクタオブジェクト600の顔に近づけ、その反応を観察した。このような実験4を全ての対接触前距離の条件に対して行った後、小休止を挟み、キャラクタオブジェクト600の外見を変更して再度計測を行った。
実験4の終了後、Near(近い)/Average(平均)/Far(遠い)条件のうちどの条件が最も好みであったかの聞き取り調査を行い、簡易データ収集を通じて得られた被験者の対接触前距離群(「近い」距離のグループまたは「遠い」距離のグループ)と一致する割合を計測した。
実験4の前に実施したデータ収集の実験3についての分析を行った結果、「近い」距離のグループは10名(男女5名ずつ)あり、「遠い」距離のグループは14名(男女7名ずつ)であった。
分析した結果、被験者は、自身が属するグループにおける対接触前距離の平均値で反応するキャラクタオブジェクト600の方が、他のグループにおける対接触前距離の平均値で反応するキャラクタオブジェクト600よりも好む傾向(まては、自然であると感じる傾向)があることが一部の被験者に見られた。
上記実験4の結果に基づいて、キャラクタオブジェクト600が人間の顔に触れようとしたときに不快感を受け始める距離を計測して得られた対接触前距離を用いて、人間がキャラクタオブジェクト600に触れようとしたときの当該キャラクタオブジェクト600が反応動作を制御しても、人間(ユーザ)に違和感を与えることはないと考えられる。
以上より、第2実施例においても、第1実施例と同様に、実験3において、被験者(つまり、人間)単位で測定された距離の平均値が当該人間の対接触前距離として設定される。
図17は、閾値テーブルの一例を示す図である。図17に示すように、ユーザIDに対応して、閾値およびカテゴリが記載される。ユーザIDは、ユーザ(すなわち、人間)毎に割り当てられた固有の識別情報である。図17に示す例では、ユーザIDを1つの数字で示してあるが、これに限定される必要はない。数字に代えてアルファベットで示してもよいし、数字または/およびアルファベットを用いて2つ以上で示しても良い。
閾値は、上記のようにして設定された対接触前距離(または、第6閾値)についての数値である。この第2実施例では、小数点以下の数値も記載してあるが、四捨五入するなどにより、整数で示してもよい。カテゴリは、上記のように分類されたグループの種類である。この第2実施例では、「近い」または「遠い」が記載される。
詳細な説明は省略するが、閾値テーブルのデータ(後述する、「閾値テーブルデータ704f」)は、上記のデータベースに記憶されており、コンピュータ16(または、CPU502a)は閾値テーブルデータ704fをデータベースから取得し、RAM502bに書き込れ、反応動作を実行するかどうかを判断する場合に参照される。
また、上記のように、通常動作および反応動作では、キャラクタオブジェクト600が、所定の振り、振る舞いのような身体動作または/および発話動作を行う。したがって、この第2実施例では、通常動作および反応動作のようなキャラクタオブジェクト600のアニメーションのデータを含む画像生成データ704cと、キャラクタオブジェクト600の発話内容についての音声データ704bは、コンピュータ502に内蔵されるHDDのような不揮発性のメモリから読み出され、RAM502bに記憶される。ただし、身体動作には、自然の動作(無意識動作)も含まれる。無意識動作の代表的な例としては、瞬きや呼吸が該当する。また、このような生理的な動作のみならず、人間の癖による動作も無意識動作に含まれる。たとえば、癖による動作としては、たとえば、髪の毛を触る動作、顔を触る動作や爪を噛む動作などが該当する。また、身体動作のアニメーションとは別に、口の動きおよび顔の表情を表現するアニメーションも画像生成データ704cに含まれる。
上記のとおり、キャラクタオブジェクト600は、一定範囲内であり、かつ、視野内に居る人間のユーザIDに対応する閾値(この第2実施例では、第6閾値)すなわち対接触前距離を閾値テーブルから取得するが、このユーザIDおよびそれに対応する閾値が閾値テーブルに登録(または、記載)されていない場合もある。したがって、かかる場合には、第2実施例では、キャラクタオブジェクト600に、第6閾値を推定するコミュニケーション行動(以下、「推定行動」)を実行させ、その推定行動に対する人間の反応に基づいて当該人間の対接触距離を推定し、推定した対接触距離を使用してキャラクタオブジェクト600に反動動作を実行させるかどうかを判断するようにしてある。
この第2実施例では、2種類の推定行動のいずれか一方が実行される。一方の推定行動を実行して、対接触前距離(第6閾値)を推定する処理を「第3推定処理」と呼び、他方の推定行動を実行して、対接触前距離を推定する処理を「第4推定処理」と呼ぶことにする。
第3推定処理では、対接触前距離を推定するために、推定行動として、「手を近づけますので、気になる距離になったら所定のボタンを押してください」との発話とともに、人間の方向に顔を向けて、右手を伸ばす動作を実行する。つまり、キャラクタオブジェクト600は、対接触前距離を推定するための発話と身体動作を実行する。この第2実施例では、発話の後に身体動作が実行されるが、発話の途中で身体動作が開始されても良い。ただし、キャラクタオブジェクト600の発話内容は、音声で出力することに代えて、また、音声で出力するとともに、字幕または吹き出し(バルーン)で表示されてもよい。以下、キャラクタオブジェクト600が発話する場合について同様である。
そして、人間が所定のボタンを押した、または、人間の顔とキャラクタオブジェクト600の手の距離が第7閾値(9.24cm)以下になった場合には、キャラクタオブジェクト600は手を伸ばす動作を停止する。
人間の顔とキャラクタオブジェクト600の手の距離が第7閾値以下になる前に、人間が所定のボタンを押した場合には、キャラクタオブジェクト600が手を伸ばす動作を停止させたときの人間の顔とキャラクタオブジェクト600の手の距離を測定し、測定した距離が対接触前距離として推定される。また、人間が所定のボタンを押さないで、人間の顔とキャラクタオブジェクト600の手の距離が第7閾値以下になった場合には、第7閾値が対接触前距離として推定される。
また、人間の対接触前距離を推定すると、推定した対接触前距離が第8閾値(17.93cm)未満であるかどうかに応じて、カテゴリが設定される。つまり、推定した対接触前距離が全体平均以上か未満かに応じて、対象者である人間が「近い」距離のグループまたは「遠い」距離のグループに分類される。推定した対接触前距離が第8閾値未満である場合には、対象者である人間のカテゴリが「近い」に設定される。一方、推定した対接触前距離が第8閾値以上である場合には、対象者である人間のカテゴリが「遠い」に設定される。
第4推定処理では、対接触前距離を推定するために、推定行動として、「私の顔に手を近づけてみてください」との発話を実行する。つまり、キャラクタオブジェクト600は、対接触前距離を推定するための発話を実行する。
その後、人間の手とキャラクタオブジェクト600の顔の距離を計測するとともに、人間の手の移動速度を計測し、人間が手を近づける速度が遅くなった、または、人間の手とキャラクタオブジェクト600の顔の距離が第9閾値(9.24cm)以下になった場合に、対接触前距離を推定する。
なお、人間の手の移動速度は、人間の手に装着されたコントローラから入力される加速度を時間で積分することに算出することができる。
人間の手とキャラクタオブジェクト600の顔の距離が第9閾値以下になる前に、人間の手の移動速度が遅くなった場合には、そのときに計測された人間の手とキャラクタオブジェクト600の顔の距離が対接触前距離として推定される。また、人間の手の移動速度が遅くならないで、人間の手とキャラクタオブジェクト600の顔の距離が第9閾値以下になった場合には、第9閾値が対接触前距離として推定される。
また、人間の対接触前距離を推定すると、推定した対接触前距離が第10閾値(17.93cm)未満であるかどうかに応じて、カテゴリが設定される。つまり、推定した対接触前距離が全体平均以上か未満かに応じて、対象者である人間が「近い」距離のグループまたは「遠い」距離のグループに分類される。推定した対接触前距離が第10閾値未満である場合には、対象者である人間のカテゴリが「近い」に設定される。一方、推定した対接触前距離が第10閾値以上である場合には、対象者である人間のカテゴリが「遠い」に設定される。
図18は図14に示したRAM502bのメモリマップ700の一例を示す図である。図18に示すように、RAM502bは、プログラム記憶領域702およびデータ記憶領域704を含む。
プログラム記憶領域702には、通信プログラム702a、操作検出プログラム702b、距離検出プログラム702c、動作制御プログラム702d、画像生成プログラム702e、画像表示プログラム702f、音声処理プログラム702g、閾値設定プログラム702h、推定プログラム702iおよび速度算出プログラム702jが記憶される。
通信プログラム702aは、他のコンピュータと直接またはネットワークを介して通信するためのプログラムである。操作検出プログラム702bは、コントローラのような入力装置504から入力される操作情報または操作データを検出し、RAM502bのデータ記憶領域704に記憶するためのプログラムである。
距離検出プログラム702cは、VR空間内における人間とキャラクタオブジェクト600の距離を算出するためのプログラムである。動作制御プログラム702dは、キャラクタオブジェクト600の動作を制御するためのプログラムであって、身体動作に応じたアニメーションを再生する。
画像生成プログラム702eは、画像生成データ704cを用いて、HMD506に画像を表示するための画像データを生成するためのプログラムである。画像表示プログラム702fは、画像生成プログラム702eに従って生成された画像データをHMD506に出力するためのプログラムである。
音声処理プログラム702gは、音声データ704bに従って合成した音声をHMD506に設けられたスピーカに出力する。
閾値設定プログラム702hは、VR空間において、キャラクタオブジェクト600の一定範囲内であり、かつ、視野内に居る人間に応じて第6閾値を設定するためのプログラムである。具体的には、閾値設定プログラム702hは、キャラクタオブジェクト600の一定範囲内であり、かつ、視野内に居る人間のユーザIDを取得し、閾値テーブルを参照して、取得したユーザIDに対応して記載された第6閾値を設定する。また、閾値設定プログラム702hは、ユーザIDおよび閾値が閾値テーブルに登録(または、記載)されていない場合には、後述する推定プログラム702iに従って推定した第6閾値を設定する。推定処理では、推定行動が実行されるが、この推定行動は、動作制御プログラム702dおよび音声処理プログラム702gに従って実行される。
推定プログラム702iは、閾値テーブルに登録されていないユーザについての第6閾値およびカテゴリを推定するためのプログラムである。上述したように、推定プログラム702iに従って、CPU502aは、第3推定処理または第4推定処理を実行し、第6閾値を推定し、カテゴリを決定する。
速度算出プログラム702jは、第4推定処理において、人間がキャラクタオブジェクト600に触れるために右手を移動させるときの移動速度をコントローラから入力される加速度に基づいて算出するためのプログラムである。
図示は省略するが、プログラム記憶領域702には、キャラクタオブジェクト600を制御するための他のプログラムが記憶される。
RAM502bのデータ記憶領域704には、種々のデータが記憶される。操作データ704aは、コントローラのような入力装置504から入力される操作入力についてのデータである。
音声データ704bは、キャラクタオブジェクト600の発話内容の合成音声についてのデータである。画像生成データ704cは、HMD506に表示する画像を生成するためのポリゴンデータおよびテクスチャデータを含む画像データである。
距離データ704dは、距離検出プログラム702cに従って検出された距離データであり、一時的に記憶される。速度データ704eは、速度算出プログラム702jに従って算出された移動速度についてのデータである。
閾値テーブルデータ704fは、図17に示したような閾値テーブルについてのデータである。推定データ704gは、推定プログラム702iに従って推定された第6閾値およびカテゴリについてのデータである。
図示は省略するが、データ記憶領域704には、キャラクタオブジェクト600の制御に必要なコミュニケーション行動を実行するための制御情報などの他のデータが記憶され、また、CPU502aの動作に必要な、タイマ、レジスタ、フラグなどが設けられる。
図19は第2実施例における図14に示すCPU502aのオブジェクト制御処理の一例を示すフロー図である。図19に示すように、CPU502aは、オブジェクト制御処理を開始すると、ステップS201で、キャラクタオブジェクト600の顔の向きを初期の方向に設定する。この第2実施例では、初期の方向は、キャラクタオブジェクト600の顔の向きがVR空間において所定の方向を向いている方向である。
次のステップS203では、一定時間(たとえば、数秒から十数秒)待機する。第2実施例では、キャラクタオブジェクト600が一点を見つめるように動作させることにより、何かに集中していることが表現される。たとえば、口を閉じて、少し下向きで机の上の資料を見つめ、瞬きするように、瞼が動作されるアニメーションが再生される。
続いて、ステップS205では、VR空間において、人間が一定範囲(たとえば、キャラクタオブジェクト600の位置を中心とする60~70cmの円)内に居るかどうかを判断する。ここでは、CPU502aは、VR空間において、人間とキャラクタオブジェクト600の距離を算出し、人間が一定範囲内に居るかどうかを判断する。
ステップS205で“NO”であれば、つまり、人間が一定範囲内に居なければ、ステップS201に戻る。一方、ステップS205で“YES”であれば、つまり、人間が一定範囲内に居れば、ステップS207で、VR空間において、当該人間がキャラクタオブジェクト600の視野内に居るかどうかを判断する。
ステップS207で“YES”であれば、つまり、人間がキャラクタオブジェクト600の視野内に居れば、図20に示すステップS215に進む。一方、ステップS207で“NO”であれば、つまり、人間がキャラクタオブジェクト600の視野内に居なければ、ステップS209で、VR空間において、人間の手がキャラクタオブジェクト600に触れたかどうかを判断する。ここでは、CPU502aは、VR空間における人間の手の3次元位置がキャラクタオブジェクト600の頭部、胴体または手(腕を含む)の表面上の位置であるかどうかを判断する。
ステップS209で“NO”であれば、つまり、人間の手がキャラクタオブジェクト600に触れていなければ、ステップS203に戻る。一方、ステップS209で“YES”であれば、つまり、人間の手がキャラクタオブジェクト600に触れれば、ステップS211で、わずかな反応動作を実行する。このステップS211では、触れられたことに気づく動作のアニメーションが再生される。たとえば、キャラクタオブジェクト600は、人間に触れられると、触れられた状態を解除または回避するように、上体を移動させる。
続くステップS213では、キャラクタオブジェクト600自身の顔を人間の顔の方に向けて、図20に示すステップS231に進む。ステップS213では、CPU502aは、VR空間において、キャラクタオブジェクト600の視線が、人間の顔の3次元位置を通るように、キャラクタオブジェクト600の頭部を動作させる。
図20に示すように、ステップS215では、キャラクタオブジェクト600の顔を人間の顔の方に向けて、ステップS217に進む。なお、ステップS215の処理は、ステップS213の処理と同じであるため、重複した説明は省略する。
ステップS217では、人間のユーザIDが閾値テーブルに登録されているかどうかを判断する。つまり、CPU502aは、閾値テーブルデータ704fを参照して、人間のユーザIDが閾値テーブルに記載されているかどうかを判断する。ただし、ユーザIDは、人間がコンピュータ502にログインしたときに取得される。
ステップS217で“YES”であれば、つまり、人間のユーザIDが閾値テーブルに登録されていれば、ステップS219で、第6閾値を閾値テーブルに基づいて設定して、ステップS225に進む。
一方、ステップS217で“NO”であれば、つまり、人間のユーザIDが閾値テーブルに登録されていなければ、ステップS221で、後述する推定処理(図21および図22に示す第3推定処理、または、図23および図24に示す第4推定処理)を実行し、ステップS223で、ステップS221で推定した第6閾値を設定して、ステップS225に進む。ただし、ステップS223では、CPU502aは、推定データ704gを参照して、推定した第6閾値を設定する。
ステップS225では、人間の手がキャラクタオブジェクト600の顔周辺の第6閾値以内に有るかどうかを判断する。ここでは、CPU502aは、VR空間において、人間の手がキャラクタオブジェクト600の顔(または、頭部)から第6閾値以内に位置するかどうかを判断する。つまり、人間がキャラクタオブジェクト600の顔を触ろうとしているかどうかが判断される。
ステップS225で“NO”であれば、つまり、人間の手がキャラクタオブジェクト600の顔周辺の第6閾値以内に無ければ、ステップS215に戻る。一方、ステップS225で“YES”であれば、つまり、人間の手がキャラクタオブジェクト600の顔周辺の第6閾値以内に有れば、ステップS227で、人間のカテゴリが「近い」であるかどうかを判断する。ここでは、CPU502aは、閾値テーブルデータ704fを参照して、ユーザIDに対応して記載されたカテゴリが「近い」を示すかどうかを判断する。
ステップS227で“NO”であれば、つまり、人間のカテゴリが「近い」でなければ、ステップS231に進む。一方、ステップS227で“YES”であれば、つまり、人間のカテゴリが「近い」であれば、ステップS229で、首を少し後ろに傾ける動作のアニメーションを再生する。
続いて、ステップS231で、視線を人間に向けるアニメーションを再生して、ステップS233で、「何か御用ですか?」と発話する。
したがって、接触前距離が近い人間の場合および遠い人間の場合の両方の場合において、キャラクタオブジェクト600は、人間がキャラクタオブジェクト600自身の顔を触ろうとしていることを察知して、この人間の顔を見るように動作される。また、接触前距離が近い人間の場合には、キャラクタオブジェクト600は、さらに、自身の顔を人間の顔に向けるように動作される。たとえば、物理空間において、人間が、他の人間に近づいて、この他の人間の顔に触れようとした場合に、他の人間が行う動作と同様の動作を、VR空間において、キャラクタオブジェクト600に実行させることができる。つまり、キャラクタオブジェクト600は自然な反応動作を行うため、キャラクタオブジェクト600の顔を触れようとした人間が違和感を覚えるのを出来る限り防止することができる。
そして、ステップS235では、終了かどうかを判断する。つまり、CPU502aは、ユーザから終了の指示が与えられたかどうかを判断する。ステップS235で“NO”であれば、つまり、終了でなければ、図19に示したステップS201に戻る。一方、ステップS235で“YES”であれば、つまり、終了であれば、オブジェクト制御処理を終了する。
なお、図19および図20では省略するが、図示は省略するが、上述したように、VR空間において、一定範囲内に居る人間がキャラクタオブジェクト600に話し掛けると、キャラクタオブジェクト600は、反応動作を実行した後に、通常動作を実行する。ただし、人間がキャラクタオブジェクト600に話し掛ける場合には、人間の音声がマイクを通して入力されても良いし、人間がコントローラの所定のボタンをオンすることにより、所定の音声が入力されても良い。
図21および図22は、図20に示したステップS221の推定処理に対応する第3推定処理を示すフロー図である。以下、第3推定処理について説明するが、既に説明した処理と同じ処理については簡単に説明することにする。
図21に示すように、CPU502aは、第3推定処理を開始すると、ステップS251で、キャラクタオブジェクト600の顔の向きを初期の方向に設定する。次のステップS253では、一定時間(たとえば、数秒から十数秒)待機する。続いて、ステップS255では、人間が一定範囲(たとえば、キャラクタオブジェクト600の位置を中心とする60~70cmの円)内に居るかどうかを判断する。
なお、第3推定処理(後述する第4推定処理のS291-S295も同様)では、ステップS251-S255の処理を実行するようにしてあるが、ステップS1-S3の処理によって、既に、人間が一定範囲内に存在することは判断されているため、省略してもよい。
ステップS255で“NO”であれば、ステップS251に戻る。一方、ステップS255で“YES”であれば、ステップS257で、推定のための発話を実行する。上述したように、ここでは、CPU502aは、「手を近づけますので、気になる距離になったら私を見てください」の合成音声のデータをHMD506に出力する。したがって、合成音声がHMD506のスピーカから出力される。
次のステップS259では、人間の方向に顔を向けた状態で、その方向に手を伸ばす動作のアニメーションの再生を開始して、図22に示すステップS261で、人間が顔を向けたかどうかを判断する。CPU502aは、仮想カメラの撮影方向の延長線上に、キャラクタオブジェクト600が存在するかどうかを判断する。
ステップS261で“NO”であれば、つまり、人間が顔を向けていなければ、ステップS263で、距離を計測する。ここでは、CPU502aは、キャラクタオブジェクト600の手と人間の顔すなわち仮想カメラとの距離を算出する。
続いて、ステップS265では、人間の顔とキャラクタオブジェクト600自身の手の距離が第7閾値(第2実施例では、9.24cm)以下であるかどうかを判断する。ステップS265で“NO”であれば、つまり、人間の顔とキャラクタオブジェクト600自身の手の距離が第7閾値よりも大きい場合には、ステップS261に戻る。
一方、ステップS265で“YES”であれば、つまり、人間の顔とキャラクタオブジェクト600自身の手の距離が第7閾値以下である場合には、ステップS267で、手を伸ばすアニメーションの再生を止めて、ステップS269で、人間(つまり、対象者)のカテゴリを「近い」に設定し、第3推定処理を終了して、図19および図20に示したオブジェクト制御処理にリターンする。
また、ステップS261で“YES”であれば、つまり、人間が顔を向ければ、ステップS271で、手を伸ばす動作を停止し、ステップS275で、人間の顔とキャラクタオブジェクト600自身の手の距離が第8閾値(第2実施例では、17.93cm)未満であるかどうかを判断する。
ステップS275で“YES”であれば、つまり、人間の顔とキャラクタオブジェクト600自身の手の距離が第8閾値未満であれば、ステップS269に進む。一方、ステップS275で“NO”であれば、つまり、人間の顔とキャラクタオブジェクト600自身の手の距離が第8閾値以上であれば、ステップS277で、人間(対象者)のカテゴリを「遠い」に設定し、第3推定処理を終了して、オブジェクト制御処理にリターンする。
なお、説明は省略したが、第3推定処理では、ステップS263またはステップS273で計測された距離(第6閾値)のデータと、ステップS269またはステップS277で設定されたカテゴリのデータが推定データ704gとしてRAM502bに記憶される。
図23および図24は、図20に示したステップS21の推定処理に対応する第4推定処理を示すフロー図である。以下、第4推定処理について説明するが、既に説明した処理と同じ処理については簡単に説明することにする。
図23に示すように、CPU502aは、第4推定処理を開始すると、ステップS291で、キャラクタオブジェクト600の顔の向きを初期の方向に設定する。次のステップS293では、一定時間(たとえば、数秒から十数秒)待機する。続いて、ステップS295では、人間が一定範囲(たとえば、キャラクタオブジェクト600の位置を中心とする60~70cmの円)内に居るかどうかを判断する。
ステップS295で“NO”であれば、ステップS291に戻る。一方、ステップS295で“YES”であれば、ステップS297で、推定のための発話を実行する。上述したように、ここでは、CPU502aは、「私の顔に手を近づけてみてください」の合成音声のデータをHMD506に出力する。
次のステップS299では、人間の手の移動速度を計測する。ここでは、CPU502aは、コントローラから入力される操作データに含まれる加速度データに基づいて人間の手の移動速度を算出する。ただし、人間の手がキャラクタオブジェクト600に近づいていない場合には、移動速度は算出されない。人間の手がキャラクタオブジェクト600に近づいていない場合には、人間の手が止まっている場合と、人間の手がキャラクタオブジェクト600に近づく方向に動いていない場合を含む。
図24に示すように、次のステップS301では、距離を計測する。次のステップS303では、人間の手を近づける速度が遅くなったかどうかどうかを判断する。ここでは、CPU502aは、前回の移動速度と今回の移動速度を比較し、今回の移動速度が前回の移動速度よりも小さいかどうかを判断する。
ステップS303で“NO”であれば、つまり、人間の手を近づける速度が遅くなっていなければ、ステップS305で、人間の手とキャラクタオブジェクト600自身の顔の距離が第9閾値(第2実施例では、9.24cm)以下であるかどうかを判断する。ステップS305で“NO”であれば、つまり、人間の手とキャラクタオブジェクト600自身の顔の距離が第9閾値よりも大きい場合には、図23に示したステップS299に戻る。
一方、ステップS305で“YES”であれば、つまり、人間の手とキャラクタオブジェクト600自身の顔の距離が第9閾値以下である場合には、ステップS307で、人間(つまり、対象者)のカテゴリを「近い」に設定し、第4推定処理を終了して、図19および図20に示したオブジェクト制御処理にリターンする。
また、ステップS303で“YES”であれば、つまり、人間の手を近づける速度が遅くなっていれば、ステップS309で、人間の手とキャラクタオブジェクト600自身の顔の距離が第10閾値(第2実施例では、17.93cm)未満であるかどうかを判断する。
ステップS309で“YES”であれば、つまり、人間の手とキャラクタオブジェクト600自身の顔の距離が第10閾値未満であれば、ステップS307に進む。一方、ステップS309で“NO”であれば、つまり、人間の手とキャラクタオブジェクト600自身の顔の距離が第10閾値以上であれば、ステップS311で、人間(対象者)のカテゴリを「遠い」に設定し、第4推定処理を終了して、オブジェクト制御処理にリターンする。
なお、説明は省略したが、第4推定処理では、ステップS301で計測された距離(第6閾値)のデータと、ステップS307またはステップS311で設定されたカテゴリのデータが推定データ704gとしてRAM502bに記憶される。
第2実施例によれば、VR空間において、キャラクタオブジェクトが人間に触れようとしたときに、これ以上近づけて欲しくない距離を人間毎に測定し、これを用いて、人間がキャラクタオブジェクトに触れようとしたときにキャラクタオブジェクトが反応動作を実行するかどうかを判断するので、キャラクタオブジェクトに触れようとした人間が違和感を覚えるのを出来る限り防止することができる。つまり、コミュニケーション対象の人間の各々に対して、VR空間に存在するキャラクタオブジェクトのようなエージェントに自然な反応動作を実行させることができる。
また、この第2実施例によれば、接触前距離が記憶されていない人間については、キャラクタオブジェクトに推定行動を実行させて推定した接触前距離を用いて反応動作を実行するので、接触前距離が記憶されていない人間に対しても、VR空間に存在するキャラクタオブジェクトのようなエージェントに自然な反応動作を実行させることができる。
なお、この第2実施例では、VR空間において、人間の手がキャラクタオブジェクトの顔に触れようとした場合について説明したが、これに限定される必要はない。たとえば、VR空間において、人間が手に物を持っている場合には、当該手に持った物がキャラクタオブジェクトの顔に触れようとしたかどうかを判断するようにしてもよい。また、キャラクタオブジェクトの特定の部位は顔に限定される必要は無く、人間がキャラクタオブジェクトの他の部位(手または肩など)に触れようとしたかどうかを判断するようにしてもよい。ただし、他の部位に触れようとしたかどうかを判断する場合には、上記のような実験を行うことにより、他の部位に応じた第6閾値が人間毎に決定される。
また、この第2実施例では、人間が「近い」距離のグループである場合には、キャラクタオブジェクト600の視線を当該人間の方に向ける動作に加えて、キャラクタオブジェクト600の首を後ろに傾けるようにしてあるが、これに限定される必要はない。キャラクタオブジェクト600の首を後ろに傾けることに代えて、または、傾けることに加えて、他の動作(たとえば、両手を広げる動作)を行っても良い。
また、人間が「近い」距離のグループである場合のみならず、「遠い」距離のグループである場合にも、キャラクタオブジェクト600の視線を当該人間の方に向ける動作に加えて、他の動作(たとえば、右手を挙げる動作)を行っても良い。
さらに、この第2実施例では、人間を2つの距離のグループに分類するようにしたが、これに限定される必要はない。3つ以上の距離のグループに分類することも可能である。
さらにまた、この第2実施例では、第1実施例のロボット12と同様のコミュニケーション行動を実行するキャラクタオブジェクト600について説明したが、コミュニケーション行動の内容はロボット12と異なっていてもよい。たとえば、キャラクタオブジェクト600が仮想のゲームに登場する場合には、仮想のゲームの内容または/仮想のゲームにおける役割に応じたコミュニケーション行動が実行される。
なお、上述の各実施例では、人間の手がロボットまたはキャラクタオブジェクトの顔周辺の対接触前距離(第1閾値または第6閾値)以内に有るかどうかどうかを判断して、反応動作を実行するようにしたが、これに限定される必要はない。人間の手の移動速度から予測して、数秒後に、人間の手がロボットまたはキャラクタオブジェクトの顔周辺の対接触前距離以内に有るかどうかを判断して、反応動作を実行するようにしてもよい。
また、上述の各実施例で示した具体的な数値は単なる例示であり、限定される必要は無く、実際の製品および製品が適用される環境などに応じて適宜変更可能である。
さらに、上述の実施例で示したロボット制御処理およびオブジェクト制御処理は、同じ結果が得られるのであれば、各ステップが処理される順番を変更してもよい。