<第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は顎を突き出したり引いたりするためのアクチュエータである。このアクチュエータ13によって、口が開閉される。
アクチュエータ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の視野外に居ることが判断される。
なお、この実施例では、視野角は固定的に設定されるが、可変的に設定されてもよい。たとえば、人間がロボット12に近づくに連れて視野角は小さくされてもよい。
人間がロボット12の視野内に居る場合には、CPU50は、当該人間の手がロボット12の顔周辺の所定距離(第1距離:たとえば20cm)以内に有るかどうかを判断する。具体的には、この第1実施例では、人間の手と、ロボット12の頭部26の表面との距離が所定距離以内であるかどうかが判断される。人間の手がロボット12の顔周辺の20cm以内に有る場合に、人間がロボット12の顔に触れようとしていることが判断される。一方、人間の手がロボット12の顔周辺の20cmを超えて離れている場合には、人間がロボット12の顔に触れようとしていることが判断されない。
詳細な説明は省略するが、上記の一定範囲内に、複数の人間が居る場合には、各人間について、ロボット12の視野内に居るかどうかが判断される。さらに、複数の人間がロボット12の視野内に居る場合には、ロボット12に最も近い人間について、当該人間の手がロボット12の顔周辺の第1距離以内に有るかどうかが判断される。ただし、複数の人間がロボット12の視野内に居る場合には、いずれかの人間の手がロボット12の顔周辺の第1距離以内に有るかどうかが判断されてもよい。
この第1実施例では、上述したように、人間がロボット12の顔に触れようとしていることが判断されると、ロボット12は、反応動作として、ロボット12自身の顔をその人間の顔の方に向ける。コンピュータ16から送信される人間データに基づいて、人間の顔の3次元位置を検出し、この3次元位置をロボット12の視線が通るように、アクチュエータA14、A15およびA16の少なくとも1つが制御され、ロボット12の頭部26の向きが変化される。
ただし、第1実施例では、人間がロボット12の視野内に居ない(または存在しない)場合には、ロボット12は人間にいずれかの部位を触れられると、わずかな反応動作を実行した後に、当該人間の方に顔を向ける。ただし、わずかな反応動作とは、触られたことに気づく動作を意味し、より具体的には、ぴくりとするように、少し上体を後傾する動作を意味する。つまり、CPU50は、人間に触られると、触れた手が伸びる方向(この第1実施例では、2次元の方向すなわち水平方向)と同じ方向に、ロボット12の上体を少し傾ける(たとえば、3次元空間における高さ方向に対して5~10度程度傾ける)ように、アクチュエータA18またはA19を制御する。
また、詳細な説明は省略するが、人間がロボット12に話し掛ける(問い掛ける)と、反応動作として、“挨拶”の動作を実行したり、“返事”の動作を実行したりする。詳細な説明は省略するが、“挨拶”の動作では、ロボット12は、“こんにちは”と発話した後に、お辞儀する。また、“返事”の動作では、ロボット12は、“はい”と発話した後に、人間の方を見る。
また、上述したように、この第1実施例では、第1距離は20cmに設定される。この第1距離の数値は、実験を行うことにより決定された数値である。
人間が他者の接触に対してどの程度の距離で反応するかを検証するために、お互いを知らない他人の被験者同士によるデータ収集実験を行った。具体的には、図5に示すように、まず評価者T1である被験者が椅子に座って正面を見ている状況で、接触者T2となる被験者が評価者T1の顔へゆっくりと手を近づけ、評価者T1がそれ以上手を近づけてほしくないと感じる距離でボタンを押すことでその距離を計測する、というデータ収集が行われた。距離の計測には、2台の距離画像センサ18(実験では、Kinect V2を使用)が用いられた。また、図5に示すように、接触者T2の立ち位置は、9か所(0~8)用意し、それぞれの立ち位置から様々な角度で評価者T1の顔へ手を近づけてもらうタスクを繰り返し行った。接触者T2と評価者T1の性別を考慮し、4通りの組み合わせで、それぞれ10ペア(合計40ペア;男性評価者・女性接触者、女性評価者・男性接触者、男性評価者・男性評価者、女性評価者・女性評価者)についてデータ収集を行い、約12000回の対接触前距離データを収集した。
収集したデータなどを分析した結果、平均約20cmの距離で、評価者T1がそれ以上手を近づけてほしくないと感じることが示された。また、接触者T2と評価者T1の性別による有意な影響は見られておらず、手を近づける角度による有意な影響も見られなかった。このようにして、ロボット12が反応動作を実行するかどうかを判断するための第1距離が決定された。
また、上記のように、通常動作および反応動作では、ロボット12が、所定の振り、振る舞いのような身体動作または/および発話動作を行う。したがって、この第1実施例では、通常動作および反応動作のようなコミュニケーション行動を実行するための制御情報は、アクチュエータ(A1~A11、A13~A19)を駆動制御するための制御データまたは/および発話内容についての合成音声の音声データを含み、各コミュニケーション行動に付された名称(コマンド名)に対応して記憶される。ただし、身体動作には、自然の動作(無意識動作)も含まれる。無意識動作の代表的な例としては、瞬きや呼吸が該当する。また、このような生理的な動作のみならず、人間の癖による動作も無意識動作に含まれる。たとえば、癖による動作としては、たとえば、髪の毛を触る動作、顔を触る動作や爪を噛む動作などが該当する。また、制御情報は、身体動作とは別に、口の動きおよび顔の表情を表現するための制御データも含む。
図4では省略したが、コミュニケーション行動についての制御情報は、HDDのような不揮発性のメモリに記憶され、必要に応じて、HDDから読み出され、RAM54に書き込まれる。
図6は図4に示したRAM54のメモリマップ300の一例を示す図である。図6に示すように、RAM54は、プログラム記憶領域302およびデータ記憶領域304を含む。
プログラム記憶領域302には、通信プログラム302a、距離検出プログラム302b、動作制御プログラム302cおよび音声処理プログラム302dが記憶される。
通信プログラム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に出力する。
図示は省略するが、プログラム記憶領域302には、ロボット12を制御するための他のプログラムが記憶される。
RAM54のデータ記憶領域304には、種々のデータが記憶される。音声データ304aは、マイク70から入力される音声データであり、一時的に記憶される。辞書データ304bは、音声認識のために必要な辞書などのデータである。距離データ304cは、距離検出プログラム302bに従って検出された距離データであり、一時的に記憶される。ただし、複数の人間がロボット12の周囲に存在する場合には、各人間についての距離データが検出される。
図示は省略するが、データ記憶領域304には、ロボット12の制御に必要なコミュニケーション行動を実行するための制御情報などの他のデータが記憶され、また、CPU50の動作に必要な、タイマ、レジスタ、フラグなどが設けられる。
図7は第1実施例における図4に示すCPU50のロボット制御処理の一例を示すフロー図である。図7に示すように、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の視野内に居れば、ステップS9で、人間の手がロボット12の顔周辺の第1距離以内に有るかどうかを判断する。ここでは、CPU50は、人間データに基づいて、人間の手がロボット12の顔(頭部26)から第1距離以内に位置するかどうかを判断する。つまり、人間がロボット12の顔を触ろうとしているかどうかを判断する。
ステップS9で“NO”であれば、つまり、人間の手がロボット12の顔周辺の第1距離以内に無ければ、ステップS1に戻る。一方、ステップS9で“YES”であれば、つまり、人間の手がロボット12の顔周辺の第1距離以内に有れば、ステップS11で、ロボット12の顔を人間の顔の方に向けて、ステップS19に進む。このステップS11では、CPU50は、人間データから人間の顔の3次元位置を取得し、この3次元位置を視線が通るように、頭部26を動作させる。
したがって、ロボット12は、人間がロボット12自身の顔を触ろうとしていることを察知して、この人間の顔を見るように動作される。たとえば、人間が、他の人間に近づいて、この他の人間の顔に触れようとした場合に、他の人間が行う動作と同様の動作をロボット12に実行させることができる。つまり、ロボット12は自然な反応動作を行うため、ロボット12の顔を触れようとした人間が違和感を覚えるのを出来る限り防止することができる。
また、ステップS7で“NO”であれば、つまり、人間がロボット12の視野内に居なければ、ステップS13で、人間の手がロボット12に触れたかどうかを判断する。ここでは、CPU50は、人間データから取得した人間の手の3次元位置がロボット12の頭部26、胴体または手(腕を含む)の表面の位置であり、触覚センサ64の検出データが触れられたことを示すかどうかを判断する。
ステップS13で“NO”であれば、つまり、人間の手がロボット12に触れていなければ、ステップS3に戻る。一方、ステップS13で“YES”であれば、つまり、人間の手がロボット12に触れれば、ステップS15で、わずかな反応動作を実行する。このステップS15では、触れられたことに気づく動作が実行される。たとえば、ロボット12は、人間に触れられると、触れられた状態を解除または回避するように、上体を移動させる。
続くステップS17では、ロボット12の顔を人間の顔の方に向けて、ステップS19に進む。なお、ステップS17の処理は、ステップS11の処理と同じであるため、重複した説明は省略する。
ステップS19では、終了かどうかを判断する。つまり、CPU50は、ユーザから終了の指示が与えられたかどうかを判断する。ステップS19で“NO”であれば、つまり、終了でなければ、ステップS1に戻る。一方、ステップS19で“YES”であれば、つまり、終了であれば、制御処理を終了する。
なお、図7では省略するが、図示は省略するが、上述したように、一定範囲内に居る人間がロボット12に話し掛けると、反応動作を実行した後に、ロボット12は通常動作を実行する。
この第1実施例によれば、人間がロボットに話し掛けないで、人間の手がロボットの顔に触れようとした場合に、ロボットがその人間の顔を見るように頭部の向きが制御されるため、より人間に近い反応動作を行うロボットを提供することができる。したがって、ロボットに触れようとした人間が違和感を覚えるのを出来る限り防止することができる。
なお、この第1実施例では、人間の手がロボットの顔に触れようとした場合について説明したが、これに限定される必要はない。たとえば、人間が手に物を持っている場合には、当該手に持った物がロボットの顔に触れようとしたかどうかを判断するようにしてもよい。また、ロボット12の特定の部位は顔に限定される必要は無く、人間がロボットの他の部位(手または肩など)に触れようとしたかどうかを判断するようにしてもよい。ただし、他の部位に触れようとしたかどうかを判断する場合には、上記のような実験を行うことにより、他の部位に応じた第1距離が決定される。
<第2実施例>
第2実施例のシステム10は、ロボット12が人間毎に設定されたパラメータに応じた反応動作を実行するようにした以外は、第1実施例のシステム10と同じであるため、異なる点について詳細に説明し、重複する点については、説明を省略する、または、簡単に説明することにする。
第2実施例では、ロボット12は、何かに集中している状態ではなく、辺りを見渡すなどの無意識動作を行っている状態において、人間が一定範囲内に近づくと、ロボット12は当該人間の方に顔を見る。その後、ロボット12は、人間の好意度に応じて異なる反応動作を実行する。
第2実施例では、ロボット12とコミュニケーションを行う各人間について、ロボット12から見た場合の好意度(または親密度)を設定および更新し、反応動作を実行する場合に、反応動作の対象である人間の好意度を参照し、好意度に応じた反応動作が実行される。一例として、好意度は、0から3までの数字で決定され、数字が大きい程、好意度が高い。人間がロボット12とコミュニケーションする前においては、好意度は0であり、当該人間とコミュニケーションする回数または/および時間(累積時間)の長さに応じて、つまり、当該人間に対してコミュニケーション行動を実行する頻度に応じて、好意度が増加される。また、好意度は、コミュニケーションしない時間が所定の長さ(たとえば、数か月)を超えると、低減される。
この第2実施例では、個別に人間を識別する必要があるため、人間に固有の識別情報を記憶したICタグを装着し、ロボット12は、コミュニケーション対象の人間に装着されたICタグから識別情報を読み出して、人間を個別に識別する。したがって、ロボット12は、ICタグのリーダをさらに備える。
また、第2実施例では、好意度が2以上の場合に、高好意度の反応動作を実行し、好意度が2未満の場合に、低好意度の反動動作を実行する。第2実施例では、人間が一定範囲内であり、ロボット12の視野内に居る場合には、ロボット12の顔が当該人間の顔の方に向けられる。この動作も反応動作と言えるが、一定範囲内の人間の顔の方にロボット12の顔を向ける動作は、好意度の大きさとは関係なく実行される。
なお、親密度に応じたコミュニケーション行動(動作)を実行するとともに、親密度を変化させる方法としては、出願人が先に出願し、既に公開された特開2011-681号の方法を採用することもできる。
また、好意度(親密度)を更新すること自体は本願発明の本質的な内容ではないため、この明細書においては、詳細な説明は省略する。
ロボット12の顔が人間の顔の方に向けられた後では、好意度に応じて、異なる反応動作が実行される。高好意度の反応動作では、人の手がロボット12の顔周辺の第1距離以内に有る場合には、好意が高いことを表現する反応動作が実行される。この第2実施例では、好意が高いことを表現する反応動作として、微笑む動作が実行されるとともに、「何か御用ですか?」と発せられる。微笑む動作では、口角30を少し上げるように、アクチュエータA8が制御される。
また、低好意度の反応動作では、人の手がロボット12の顔周辺の第1距離よりも長い第2距離以内に有る場合には、好意が低いまたは無いことを表現する反応動作が実行される。この第2実施例では、好意が低いまたは無いことを表現する反応動作として、少しのけぞる動作が実行され、さらに、人の手がロボット12の顔周辺の第1距離以内に有る場合には、反応動作として、「何か用ですか?」と発せられる。少しのけぞる動作では、上体を5~10度程度後傾させるように、アクチュエータA18が制御される。
さらに、低好意度の反応動作では、人間の手がロボット12に触れた場合には、ロボット12は嫌がる動作を実行する。嫌がる動作としては、人間の反対方向に上体を大きく傾ける動作が実行されるとともに、「やめてください」と発せられる。上体を大きく傾ける動作では、人間の反対方向へ上体を20~30度程度傾けるように、アクチュエータA18、または、アクチュエータA18およびA19が制御される。
また、人間が一定範囲内であっても、ロボット12の視野内に居ない場合には、第1実施例と同様に、わずかな反応動作が実行されるが、第2実施例では、さらに、好意度に応じた反応動作が実行される。好意度が高い場合には、そのことを表現する反応動作として、微笑む動作が実行されるとともに、「何か御用ですか?」と発せられる。一方、好意度が低い場合には、そのことを表現する反応動作として、人間の反対方向へ上体を傾ける動作が実行されるとともに、「やめてください」と発せられる。
したがって、第2実施例では、プログラム記憶領域302に、好意度判断プログラム302eがさらに記憶される。好意度判断プログラム302eは、ロボット12が反応動作を行う対象の人間の好意度が所定値以上であるかどうかを判断するためのプログラムである。また、第2実施例では、動作制御プログラム302cは、好意度に応じた処理(第2実施例では、高好意度の反応動作処理または低好意度の反応動作処理)を実行する。
また、データ記憶領域304には、ロボット12が反応動作を行う対象の人間の好意度についてのデータ(好意度データ)304dが記憶される。たとえば、ロボット12が反応動作を行う対象の人間についての好意度データ304dは、ロボット12の内部またはネットワーク14上に設けられたデータベースから取得される。また、ロボット12が、人間とコミュニケーション行動を実行したことに応じて、当該人間の好意度データ304dが更新される。たとえば、人間との間で、通常動作を行った場合に、コミュニケーション行動を開始した時からコミュニケーション行動を終了するまでの時間がコミュニケーションの時間として計測され、累積時間に加算されるとともに、コミュニケーションの回数が1回加算される。ただし、これは一例であり、限定される必要はない。たとえば、コミュケーション行動の終了時は、人間が立ち去った(一定範囲から出た)ときである。
図9および図10は、第2実施例におけるCPU50のロボット制御処理の一例を示すフロー図である。以下、第2実施例のロボット制御処理について説明するが、第1実施例で説明した処理と同じ処理については簡単に説明することにする。なお、図示は省略するが、第1実施例と同様に、人間からの話し掛けに応じて、反応動作を実行した後に、通常動作も実行される。
図9に示すように、CPU50は、ロボット制御処理を開始すると、ステップS31で、ロボット12の顔の向きを初期の方向に設定する。次のステップS33では、一定時間待機する。第2実施例では、ロボット12が瞬きするように、瞼(28aおよび28b)が動作されたり、ロボット12がきょろきょろするように、頭部26が左右に回動されたりする。つまり、CPU50は、アクチュエータA1およびA5を制御したり、アクチュエータA16を制御したりする。
続いて、ステップS35では、人間が一定範囲内に居るかどうかを判断する。ステップS35で“NO”であれば、ステップS31に戻る。一方、ステップS35で“YES”であれば、ステップS37で、一定範囲内に居る人間がロボット12の視野内に居るかどうかを判断する。
ステップS37で“NO”であれば、図10に示すステップS47に進む。一方、ステップS37で“YES”であれば、ステップS39で、一定範囲内であり、かつ、ロボット12の視野内に居る人間の好意度が所定値(第2実施例では、2)以上であるかどうかを判断する。ただし、一定範囲内であり、かつ、ロボット12の視野内に居る人間が複数人である場合には、ロボット12に最も近い位置に居る人間が反応動作の対象として選択される。
ステップS39で“YES”であれば、つまり、好意度が所定値以上であれば、ステップS41で、後述する高好意度の反応動作の処理(図11参照)を実行して、ステップS45に進む。一方、ステップS39で“NO”であれば、つまり、好意度が所定値未満であれば、ステップS43で、後述する低好意度の反応動作の処理(図12参照)を実行して、ステップS45に進む。
ステップS45では、ロボット制御処理を終了するかどうかを判断する。ステップS45で“NO”であれば、ステップS31に戻る。一方、ステップS45で“YES”であれば、ロボット制御処理を終了する。
上述したように、ステップS37で“NO”であれば、図10に示すように、ステップS47で、人間の手がロボット12に触れたかどうかを判断する。ステップS47で“NO”であれば、図9に示したステップS33に戻る。一方、ステップS47で“YES”であれば、ステップS49で、わずかな反応動作を実行し、ステップS51で、ロボット12の顔を人間の顔の方に向ける。
次のステップS53では、好意度が所定値以上であるかどうかを判断する。ステップS53で“YES”であれば、ステップS55で、微笑む動作を実行し、ステップS57で、「何か御用ですか?」と発話して、図9に示したステップS45に進む。
一方、ステップS53で“NO”であれば、ステップS59で、人間の反対方向へ上体を傾ける動作を実行し、ステップS61で、「やめてください」と発話して、ステップS45に進む。
図11は図9のステップS41の高好意度の反応動作の処理を示すフロー図である。以下、高好意度の反応動作の処理について説明するが、既に説明した処理については簡単に説明することにする。図11に示すように、CPU50は、高好意度の反応動作を開始すると、ステップS71で、ロボット12の顔を人間の方に向ける。次のステップS73では、人間の手がロボット12の顔周辺の第1距離以内に有るかどうかを判断する。
ステップS73で“NO”であれば、ステップS71に戻る。一方、ステップS73で“YES”であれば、ステップ75で、微笑む動作を実行し、ステップS77で、「何か御用ですか?」と発話して、図9および図10に示したロボット制御処理にリターンする。
図12は図9のステップS43の低好意度の反応動作の処理を示すフロー図である。以下、低好意度の反応動作の処理について説明するが、既に説明した処理については簡単に説明することにする。図12に示すように、CPU50は、低
好意度の反応動作を開始すると、ステップS91で、ロボット12の顔を人間の方に向ける。次のステップS93では、人間の手がロボット12の顔周辺の第2距離以内に有るかどうかを判断する。
ステップS93で“NO”であれば、つまり、人間の手がロボット12の顔周辺の第2距離以内に無ければ、ステップS91に戻る。一方、ステップS93で“YES”であれば、つまり、人間の手がロボット12の顔周辺の第2距離以内に有れば、ステップS95で、少しのけぞる動作を実行する。
続いて、ステップS97では、人間の手がロボット12の顔周辺の第1距離以内に有るかどうかを判断する。ステップS97で“NO”であれば、ステップS101に進む。一方、ステップS97で“YES”であれば、ステップ99で、「何か用ですか?」と発話して、ステップS101に進む。
ステップS101では、人間の手がロボット12に触れたかどうかを判断する。ステップS101で“NO”であれば、図9および図10に示したロボット制御処理にリターンする。一方、ステップS101で“YES”であれば、ステップS103で、人間の反対方向へ上体を傾ける動作を実行し、ステップS105で、「やめてください」と発話してから、ロボット制御処理にリターンする。
なお、通常、人間および人間の手はロボット12に次第に接近し、また、低好意度の反応動作では、ステップS91-S93のスキャンタイムは1/60秒程度であるため、人間の手がロボット12の顔周辺の第2距離以内に有ると判断される場合に、当該人間の手がロボット12の顔周辺の第1距離以内に有ることはほとんど無いと考えられる。つまり、ステップS93では、人間の手がロボット12の顔周辺の第1距離よりも長く第2距離以内に有るかどうかを判断している。
第2実施例によれば、人間の手がロボットの顔に近づいたことに応じて反応動作を実行するのみならず、当該人間の好意度に応じて反応動作の内容を変化させるので、好意を持った人間と同様の反応動作をロボットに実行させることができる。より人間に近い反応を実現することができる。
なお、この第2実施例では、好意度(または親密度)をパラメータとして用いて、このパラメータの値に応じて異なる反応動作を行うようにしたが、パラメータは好意度に限定される必要はない。たとえば、ロボットの年齢を設定しておき、反応動作を行う対象である人間の年齢がロボットの年齢よりも上か、同じか、下かに応じて、異なる反応動作を行うようにしてもよい。また、ロボットの性別を設定しておき、反応動作を行う対象である人間の性別がロボットの性別と同じであるか、異なるかに応じて、異なる反応動作を行うようにしてもよい。これらを複合的に考慮したパラメータを用いて反応動作が決定されてもよい。
また、上述の各実施例で示した反応動作は単なる例示であり、限定されるべきでない。実際にロボット12が適用される環境または場所、ロボット12に与えられる実際の役割などを考慮して、適宜設定または変更可能である。
また、上述の各実施例では、現実空間に存在する、ロボットと人間との間におけるロボットのコミュニケーション行動について説明したが、これに限定される必要はない。仮想空間に人間に似た外観(姿形)を有する2つのエージェント(キャラクタオブジェクト)が配置される場合に、他方のエージェントに属する部位(手または手に相当する部位)が一方のエージェントの所定の部位(顔または顔に相当する部位)に触れようとした場合に、当該一方のエージェントに、反応動作を実行させたり、他方のエージェントについての好意度に応じた内容で反応動作を実行させたりするようにしてもよい。かかる場合には、汎用のコンピュータのプロセッサが、仮想空間にエージェントを描画し、上記の各実施例で示したようなプログラムを実行し、エージェントを制御する。
さらに、上述の各実施例では、画像距離センサを用いて、対象物までの距離おおよび対象物の形状を検出することにより、人間の位置、人間の手および顔の位置を検出するようにしたが、これに限定される必要はない。ロボット12は、眼カメラ66を備えるため、これをステレオカメラとして使用し、左右のカメラの撮影画像に基づいて、ロボット12の正面方向から近づく人間の位置、人間の手および顔の位置を検出するようにしてもよい。
さらにまた、上述の各実施例では、人間の手がロボット12の顔周辺の所定距離(第1距離または第2距離)以内に有るかどうかどうかを判断して、反応動作を実行するようにしたが、これに限定される必要はない。人間の移動速度から予測して、数秒後に、人間の手がロボット12の顔周辺の所定距離以内に有るかどうかを判断して、反応動作を実行するようにしてもよい。
また、上述の各実施例で示した具体的な数値は単なる例示であり、限定される必要は無く、実際の製品および製品が適用される環境などに応じて適宜変更可能である。
さらに、上述の実施例で示したロボット制御処理は、同じ結果が得られるのであれば、各ステップが処理される順番を変更してもよい。