図1を参照して、この実施例のネットワークロボットシステム(以下、単に「システム」という)10は、複数のコミュニケーションロボット(以下、単に「ロボット」という)12を含む。各ロボット12は、ネットワーク100を介して、記録制御装置102に通信可能に接続される。また、記録制御装置102には、センサ情報データベース(センサ情報DB)104および環境センサ106が接続される。
ロボット12は、相互作用指向のロボットであり、主として人間のようなコミュニケーションの対象(コミュニケーション対象)との間で、身振り手振りのような身体動作および音声の少なくとも一方を含むコミュニケーション行動を実行する機能を備えている。ロボット12は、受付や道案内などの様々なサービスを提供し、たとえば或る会社やイベント会場(ショッピングモール、展示会場)などの様々な場所ないし状況(環境)に配置される。また、ロボット12は、環境内で自走可能である。この実施例では、各ロボット12を識別可能に検出するため、ロボット12の各々にタグ(無線タグ)12aを装着してある。
なお、図面では、ロボット12の外部にタグ12aを装着しているように示してあるが、ロボット12の内部にタグ12aを設けるようにしてもよい。
図2を参照して、ロボット12のハードウェアの構成について説明する。また、図2はこの実施例のロボット12の外観を示す正面図である。ロボット12は台車18を含み、台車18の下面にはロボット12を自律移動させる2つの車輪20および1つの従輪22が設けられる。2つの車輪20は車輪モータ24(図3参照)によってそれぞれ独立に駆動され、台車18すなわちロボット12を前後左右の任意方向に動かすことができる。また、従輪22は車輪20を補助する補助輪である。したがって、ロボット12は、配置された環境(空間)内を自律制御によって移動可能である。
台車18の上には、円柱形のセンサ取り付けパネル26が設けられ、このセンサ取り付けパネル26には、多数の距離センサ28(赤外線距離センサ28aおよびレーザ距離センサ28bを含む:図3参照)が取り付けられる。これらの距離センサ28は、センサ取り付けパネル26すなわちロボット12の周囲の物体(人間や障害物など)との距離を測定するものである。
センサ取り付けパネル26の上には、胴体30が直立するように設けられる。また、胴体30の前方中央上部(人の胸に相当する位置)には、上述した距離センサ28がさらに設けられ、ロボット12の前方の主として人間との距離を計測する。また、胴体30には、その側面側上端部のほぼ中央から伸びる支柱32が設けられ、支柱32の上には、全方位カメラ34が設けられる。全方位カメラ34は、ロボット12の周囲を撮影するものであり、後述する眼カメラ58とは区別される。この全方位カメラ34としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ28および全方位カメラ34の設置位置は、当該部位に限定されず適宜変更され得る。
胴体30の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節36Rおよび肩関節36Lによって、上腕38Rおよび上腕38Lが設けられる。図示は省略するが、肩関節36Rおよび肩関節36Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節36Rは、直交する3軸のそれぞれの軸廻りにおいて上腕38Rの角度を制御できる。肩関節36Rの或る軸(ヨー軸)は、上腕38Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節36Lは、直交する3軸のそれぞれの軸廻りにおいて上腕38Lの角度を制御できる。肩関節36Lの或る軸(ヨー軸)は、上腕38Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
また、上腕38Rおよび上腕38Lのそれぞれの先端には、肘関節40Rおよび肘関節40Lが設けられる。図示は省略するが、肘関節40Rおよび肘関節40Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕42Rおよび前腕42Lの角度を制御できる。
前腕42Rおよび前腕42Lのそれぞれの先端には、人の手に相当する球体44Rおよび球体44Lがそれぞれ固定的に設けられる。ただし、指や掌の機能が必要な場合には、人間の手の形をした「手」を用いることも可能である。また、図示は省略するが、台車18の前面,肩関節36Rと肩関節36Lとを含む肩に相当する部位,上腕38R,上腕38L,前腕42R,前腕42L,球体44Rおよび球体44Lには、それぞれ、接触センサ(図3で包括的に示す)46が設けられる。台車18の前面の接触センサ46は、台車18への人間や障害物の接触を検知する。したがって、ロボット12は、その自身の移動中に人間や障害物との接触が有ると、それを検知し、直ちに車輪20の駆動を停止してロボット12の移動を急停止させることができる。また、その他の接触センサ46は、当該各部位に触れたかどうかを検知する。なお、接触センサ46の設置位置は、当該部位に限定されず、適宜な位置(人の胸,腹,脇,背中および腰に相当する位置)に設けられてもよい。
胴体30の中央上部(人の首に相当する位置)には首関節48が設けられ、さらにその上には頭部50が設けられる。図示は省略するが、首関節48は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット12の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部50には、人の口に相当する位置に、スピーカ52が設けられる。スピーカ52は、ロボット12が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、人の耳に相当する位置には、マイク54Rおよびマイク54Lが設けられる。以下、右のマイク54Rと左のマイク54Lとをまとめてマイク54ということがある。マイク54は、周囲の音、とりわけコミュニケーションを実行する対象である人間の声を取り込む。さらに、人の目に相当する位置には、眼球部56Rおよび眼球部56Lが設けられる。眼球部56Rおよび眼球部56Lは、それぞれ眼カメラ58Rおよび眼カメラ58Lを含む。以下、右の眼球部56Rと左の眼球部56Lとをまとめて眼球部56ということがある。また、右の眼カメラ58Rと左の眼カメラ58Lとをまとめて眼カメラ58ということがある。
眼カメラ58は、ロボット12に接近した人間の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。また、眼カメラ58は、上述した全方位カメラ34と同様のカメラを用いることができる。たとえば、眼カメラ58は、眼球部56内に固定され、眼球部56は、眼球支持部(図示せず)を介して頭部50内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部50の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部50の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部56ないし眼カメラ58の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ52,マイク54および眼カメラ58の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット12は、車輪20の独立2軸駆動,肩関節36の3自由度(左右で6自由度),肘関節40の1自由度(左右で2自由度),首関節48の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
図3はロボット12の電気的な構成を示すブロック図である。この図3を参照して、ロボット12は、CPU60を含む。CPU60は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス62を介して、メモリ64,モータ制御ボード66,センサ入力/出力ボード68および音声入力/出力ボード70に接続される。
メモリ64は、図示は省略をするが、ROM,HDDおよびRAMを含む。ROMおよびHDDには、ロボット12の動作を制御するための制御プログラムが予め記憶される。たとえば、コミュニケーション行動を実行させるためのプログラム、各センサの出力(検出信号)を検知するための検知プログラム、および外部コンピュータ(記録制御装置102など)との間で必要なデータやコマンド(メッセージ)を送受信するための通信プログラムなどが記録される。また、RAMは、CPU60のワークメモリやバッファメモリとして用いられる。
モータ制御ボード66は、たとえばDSPで構成され、各腕や首関節および眼球部などの各軸モータの駆動を制御する。すなわち、モータ制御ボード66は、CPU60からの制御データを受け、右眼球部56Rの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「右眼球モータ72」と示す)の回転角度を制御する。同様にして、モータ制御ボード66は、CPU60からの制御データを受け、左眼球部56Lの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「左眼球モータ74」と示す)の回転角度を制御する。
また、モータ制御ボード66は、CPU60からの制御データを受け、右肩関節36Rの直交する3軸のそれぞれの角度を制御する3つのモータと右肘関節40Rの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「右腕モータ76」と示す)の回転角度を制御する。同様にして、モータ制御ボード66は、CPU60からの制御データを受け、左肩関節36Lの直交する3軸のそれぞれの角度を制御する3つのモータと左肘関節40Lの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「左腕モータ78」と示す)の回転角度を制御する。
さらに、モータ制御ボード66は、CPU60からの制御データを受け、首関節48の直交する3軸のそれぞれの角度を制御する3つのモータ(図3では、まとめて「頭部モータ80」と示す)の回転角度を制御する。そして、モータ制御ボード66は、CPU60からの制御データを受け、車輪20を駆動する2つのモータ(図3では、まとめて「車輪モータ24」と示す)の回転角度を制御する。なお、この実施例では、車輪モータ24を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ24と同様に直流モータを用いるようにしてもよい。また、ロボット12の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更された、たとえば、他の実施例では、エアアクチュエータが適用されてもよい。
センサ入力/出力ボード68もまた、同様に、DSPで構成され、各センサからの信号を取り込んでCPU60に与える。すなわち、距離センサ28のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード68を通じてCPU60に入力される。また、全方位カメラ34からの映像信号が、必要に応じてセンサ入力/出力ボード68で所定の処理を施してからCPU60に入力される。眼カメラ58からの映像信号も、同様にして、CPU60に入力される。また、上述した複数の接触センサ(図3では、まとめて「接触センサ46」と示す)からの信号がセンサ入力/出力ボード68を介してCPU60に与えられる。
音声入力/出力ボード70もまた、同様に、DSPで構成され、CPU60から与えられる音声合成データに従った音声または声がスピーカ52から出力される。また、マイク54からの音声入力が、音声入力/出力ボード70を介してCPU60に与えられる。
また、CPU60は、バス62を介して通信LANボード82に接続される。通信LANボード82は、DSPで構成され、CPU60から与えられた送信データを無線通信装置84に与え、無線通信装置84から送信データを、ネットワーク100を介して外部コンピュータ(記録制御装置102など)に送信する。また、通信LANボード82は、無線通信装置84を介してデータを受信し、受信したデータをCPU60に与える。つまり、ロボット12は、通信LANボード82および無線通信装置84によって、記録制御装置102と無線通信を行うことができる。
さらに、CPU60は、バス62を介して無線タグ読取装置86が接続される。無線タグ読取装置86は、アンテナ(図示せず)を介して、無線タグ(RFIDタグ)から送信される識別情報の重畳された電波を受信する。そして、無線タグ読取装置86は、受信した電波信号を増幅し、当該電波信号から識別信号を分離し、当該識別情報を復調(デコード)してCPU60に与える。無線タグは、会社やイベント会場などに居る人間に装着されており、無線タグ読取装置86は、通信可能範囲内の無線タグ(この実施例では、12a、250)を検出する。なお、無線タグは、アクティブ型であってもよいし、無線タグ読み取り装置86から送信される電波に応じて駆動されるパッシブ型であってもよい。
図4は、図1に示すシステム10を或る環境200に適用した場合の一例を示す。ただし、簡単のため、図4では、ネットワーク100、記録制御装置102およびセンサ情報DB104は省略する。また、この実施例では、図4に示すように、環境200には、環境センサ106として、床センサ106a、複数のタグリーダ106b、複数のイメージセンサ(カメラ)106cおよび複数の音センサ(マイク)106dが配置される。ただし、タグリーダ106b(前述の「86」も同じ)は、ロボット12や人間を個別に識別するための識別センサの一部として機能する。
また、環境200には、ロボット12が存在したり、人間が存在したりすることがある。図4に示す実施例では、1台のロボット12が存在する場合について示してあるが、2台以上のロボット12が存在することもある。また、ロボット12が存在しないこともある。さらに、図4に示す実施例では、3人の人間A、B、Cが環境200に存在する場合について示してあるが、その人数は限定される必要はない。また、人間は存在しなくてもよい。図4に示すように、人間(A、B、C)には、各々を個別に識別するために、タグ(無線タグ)250が装着される。
詳細な説明は省略するが、上述したように、ロボット12は、全方位カメラ34、マイク54、眼カメラ58および無線タグ読取装置(タグリーダ)86を備え、これは環境センサ106としても機能する。したがって、全方位カメラ34、マイク54、眼カメラ58およびタグリーダ86の検出信号ないしその検出信号に基づく解析結果は、記録制御装置102に、常にまたは一定時間毎に、送信(通知)される。また、上述したように、ロボット12は自走可能であるため、上記の各センサ(34、54、58、86)の検出範囲の位置はロボット12の移動(変位)に従って変化される。
このような或る環境200において、システム10は、たとえば、ロボット12の存在する環境下における人間のコミュニケーション行動、ロボット12と人間とのコミュニケーション行動、人間同士のコミュニケーション行動を記録(履歴)する。たとえば、そのような記録を解析することにより、その解析結果を、ロボット12が提供するサービスを実行するためのアプリケーションの開発等に役立てたり、その解析結果から、ロボット12を配置するイベント会場などの設計(設営)のヒントを得たりするのである。
たとえば、従来の監視カメラを用いた監視映像記録装置などでは、1フレーム毎の映像信号の変化を検出し、変化が生じたときのみ、映像信号を磁気テープなどの記録媒体に記録するようにしてある。これによって、記録媒体を効率良く使用しているのである。
しかし、このような監視映像記録装置では、映像信号の変化のみに基づいて記録制御を行うため、様々な種類の環境センサ106を有するシステム10に適用することができない。たとえば、ロボット12と人間(A、B、C)とが立ち話をしている場合には、映像信号にはほとんど変化が現れないため、そのような会話についての記録が行われない可能性がある。また、映像信号の変化によって、すべての環境センサ106の検出信号を記録すると、ロボット12や人間(A、B、C)のコミュニケーション行動などを何ら検出していない環境センサ106の検出信号までも記録することになってしまう。これでは、記録媒体(この実施例では、センサ情報DB104)の記憶領域を無駄に使用してしまう。
そこで、この実施例では、記録を開始することのトリガ(以下、「記録開始トリガ」という)が有ると、ロボット12や人間(A、B、C)を検出範囲に含むセンサの検出信号(位置情報、映像信号、タグ情報、音声信号、触覚(接触)信号など)のみを記録媒体すなわちセンサ情報DB104に記録するようにしてある。ただし、実際には、センサ情報DB104には、検出信号に加えて、当該検出信号を検出したセンサの識別情報(センサID)および当該センサで検出されている人間(A、B、C)またはロボット12の識別情報(タグID)が記録される。また、記録開始トリガに対応する、記録を終了することのトリガ(以下、「記録終了トリガ」という)が有ると、当該記録開始トリガに応じて記録を開始したセンサの検出信号のセンサ情報DB104への記録を終了する。
ただし、環境200に設置されているすべての環境センサ106からの検出信号は、常にまたは一定時間(たとえば、2〜3秒)毎に、各環境センサ106のセンサIDとともに、記録制御装置102に出力されており、一定時間(たとえば、60秒)分の検出信号はRAM102bに一時記憶(バッファリング)され、必要に応じて、センサ情報DB104に記録される。
この実施例では、記録開始トリガと記録終了トリガとは予め決定されており、図5に示すような、トリガ情報テーブルで管理されている。後で詳細に説明するが、記録開始トリガや記録終了トリガの有無の判断は、環境センサ106の検出信号やロボット12からの通知(メッセージ)に応じて実行される。
また、図5に示すように、トリガ情報テーブルでは、記録開始トリガおよびそれに対応する記録終了トリガが記述される。記録開始トリガと記録終了トリガとの組は、識別情報(トリガID)によって区別される。この実施例では、ローマ字(Tr)と数字とを用いてトリガIDを表しているが、これに限定される必要は無く、トリガIDは、ローマ字のみや数字のみで表してよく、また、人間が解読できない情報で表してもよい。
図5に示すように、トリガIDがTr1では、記録開始トリガは「ロボットに近づいた」ことであり、それに対応する記録終了トリガは「ロボットから離れた」ことである。ロボット12のタグリーダ86が、人間(A、B、C)に装着されたタグ250からの識別情報を検出し、その時の電波強度に基づいて算出した距離が記録制御装置102に通知される。記録制御装置102は、ロボット12から通知される距離が一定値(この実施例では、1m)以下である場合に、「ロボットに近づいた」を検知する。同様に、記録制御装置102は、ロボット12から通知される、タグ250からの識別情報を検出している時の電波強度に基づいて算出した距離が一定値(1m)を超えると、「ロボットから離れた」を検知する。
また、トリガIDがTr2では、記録開始トリガが「歩く」または「立ち話」のような人間(A、B、C)の所定の動作であり、対応する記録終了トリガが「環境から退出」または「一定時間以上音声なし」のような上記の所定の動作の終了などである。記録制御装置102は、ロボット12のタグリーダ86またはタグリーダ106bによって人間(A、B、C)に装着されたタグ250からの識別情報を検出するとともに、床センサ106aからの検出信号に基づいて人間(A、B、C)の位置を検出する。したがって、人間(A、B、C)の一定時間における移動量や移動軌跡を知ることができる。これによって、「歩く」が検知される。ただし、記録制御装置102は、人間(A、B、C)の移動量や移動軌跡に変化が無く、その人間(A、B、C)の近傍に在るマイク106dによって音声信号が検出されている場合に、「立ち話」を検知する。
なお、図示は省略するが、環境センサ106として、レーザ距離計を配置する場合には、本件出願人が先に出願した特願2009−76450号に記載の方法を採用することにより、人間(A、B、C)が歩いていることや立ち止まっていることを判別することが可能である。
また、記録制御装置102は、人間(A、B、C)に装着されたタグ250からの識別情報を、タグリーダ86、106bによって検出していない場合に、「環境から退出」したことを検知し、また、マイク106dからの音声信号が一定レベル(無音と判断されるレベル)以下である状態が一定時間(たとえば、30秒)以上継続した場合に、「一定時間以上音声無し」を検知する。
トリガIDがTr3では、記録開始トリガが「一定以上の混雑」であり、対応する記録終了トリガが「一定未満の混雑」である。記録制御装置102は、床センサ106aからの検出信号(座標データ)に基づいて、予めマップに登録されていないものが複数検出され、それが一定の領域(範囲内)において一定の割合以上を占める場合に、「一定以上の混雑」を検知する。ただし、マップは、環境200を真上から俯瞰的に見た場合の見取り図であり、2次元の平面状に示される。また、図4では省略したが、マップに予め登録されている物としては、たとえば、柱、棚、机、椅子、観葉植物などであり、固定的に配置される物およびそれに準ずる物(ほとんど動かすことが無い物)が該当する。また、記録制御装置102は、上記の一定の割合未満になると、「一定未満の混雑」を検知する。
トリガIDがTr4では、記録開始トリガが「一定以上の人数」であり、対応する記録終了トリガが「一定未満の人数」である。記録制御装置102は、タグリーダ86、106bで検出されたタグ250の識別情報の種類が一定数以上である場合に、「一定以上の人数」を検知する。また、記録制御装置102は、タグリーダ86、106bで検出されたタグ250の識別情報の種類が一定数未満である場合に、「一定未満の人数」を検知する。
トリガIDがTr5では、記録開始トリガが「集団で行動」であり、対応する記録終了トリガが「集団が環境から退出」または「集団の解除」である。記録制御装置102は、上述したように、床センサ106aからの検出信号に基づいて、人間(A、B、C)が、歩いていることや止まっていることを検出し、さらに、床センサ106aからの検出信号に基づいて、複数の人間が一体として同じ方向に歩いたり、一定の場所に留まったりしている場合に、集団で歩いたり、集団で整列したりするなどの「集団で行動」を検知する。また、記録制御装置102は、床センサ106aで検出される座標データの個数が大きく減少するとともに、タグリーダ86、106bによって検出される識別情報の個数が大きく減少した場合に、人間(A、B、C)が環境から退出したと判断し、「集団が環境から退出」を検知する。また、記録制御装置102は、床センサ106aで検出される複数の座標データが示す座標間の距離が一定(たとえば、3m)以上離れた場合に、「集団の解除」を検知する。ただし、座標間の距離が一定以上離れたことの条件は、すべての座標間の距離が該当する必要は無く、一定数(たとえば、半数)ないし一定割合(たとえば、5割)以上の座標間の距離がその条件を満たせばよい。
トリガIDがTr6では、記録開始トリガは「特定の方向から音声」であり、対応する記録開始トリガも「特定の方向から音声」である。記録開始装置102は、指向性を有するマイク106dを用いることにより、音声が入力される方向を検出し、検出した方向が特定の方向である場合に、「特定の方向から音声」を検知する。ただし、環境106にマイクロホンアレイを配置することにより、音声が発生される方向を検出するようにしてもよい。ただし、記録開始トリガについての「特定の方向」と記録終了トリガについての「特定の方向」とは、同一方向または異なる方向のいずれも構わない。これらは、システム10の開発者ないし使用者によって適宜設定される。
トリガIDがTr7では、記録開始トリガは「ロボットから話かけた」であり、対応する記録終了トリガは「ロボットから離れた」である。ロボット12は、その近傍に存在する人間(A、B、C)に発話すると、そのことが記録制御装置102に通知される。この通知を受けると、記録制御装置102は、「ロボットから話かけた」を検知する。ただし、ロボット12は、全方位カメラ34または/および眼カメラ58で撮影された画像やタグリーダ86によって検出された識別情報に基づいて、人間(A、B、C)が近傍に存在することを知る。以下、同様である。また、上述したように、記録制御装置102は、ロボット12から通知される、タグ250からの識別情報を検出している時の電波強度に基づいて算出した距離が一定値(1m)を超えると、「ロボットから離れた」を検知する。以下、同様である。
トリガIDがTr8では、記録開始トリガは「ロボットに触れ始め」であり、対応する記録終了トリガは「ロボットから離れた」である。ロボット12は、その近傍に存在する人間(A、B、C)に触れられると、そのことが記録制御装置102に通知される。この通知を受けると、記録制御装置102は、「ロボットに触れ始め」を検知する。ただし、ロボット12は、その接触センサ46の検出信号に基づいて、人間(A、B、C)が触れていることを検出する。
トリガIDがTr9では、記録開始トリガが「握手の開始」であり、対応する記録終了トリガが「握手の終了」または「ロボットから離れた」である。ロボット12は、「握手」についてのコミュニケーション行動を開始すると、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「握手の開始」を検知する。また、ロボット12は、「握手」についてのコミュニケーション行動を終了すると、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「握手の終了」を検知する。
トリガIDがTr10では、記録開始トリガが「抱っこの開始」であり、対応する記録終了トリガが「抱っこの終了」または「ロボットから離れた」である。ロボット12は、「抱っこ」についてのコミュニケーション行動を開始すると、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「抱っこの開始」を検知する。また、ロボット12は、「抱っこ」についてのコミュニケーション行動を終了すると、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「抱っこの終了」を検知する。
トリガIDがTr11では、記録開始トリガが「手を振るの開始」であり、対応する記録終了トリガが「手を振るの終了」または「環境からの退出」である。ロボット12は、「手を振る(バイバイ)」についてのコミュニケーション行動を開始すると、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「手を振るの開始」を検知する。また、ロボット12は、「手を振る」についてのコミュニケーション行動を終了すると、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「手を振るの終了」を検知する。
トリガIDがTr12では、記録開始トリガが「ロボットの顔を覗き込む」であり、対応する記録終了トリガが「ロボットから離れた」である。ロボット12は、その眼カメラ56の撮影画像を解析し、たとえば、卵型(楕円形)に近似する肌色の塊を検出すると、人間(A、B、C)の顔が自身の顔の正面に在ることを検出する。このとき、ロボット12は、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「ロボットの顔を覗き込む」を検知する。ただし、特定の人間(A、B、C)についての顔画像を記憶しておき、眼カメラ56の撮影画像から特定の部位(眼、眉毛)の形状や位置を検出し、それに基づいて、当該人間(A、B、C)の顔が自身の顔の正面に在ることを検出するようにしてもよい。ただし、ロボット12から記録制御装置102に画像データを送信し、記録制御装置102で人間(A、B、C)の顔がロボット12の顔の正面に在るかどうかを検出するようにしてもよい。
トリガIDがTr13では、記録開始トリガが「人間がロボットに話かけた」であり、対応する記録終了トリガが「ロボットから離れた」である。ロボット12は、タグリーダ86でタグ250の識別情報を検出するとともに、マイク54を通して一定レベル(人間に話かけられていると思われるレベル)以上の音声信号を検出すると、そのことを記録制御装置102に通知する。この通知を受けると、記録制御装置102は、「人間がロボットに話かけた」ことを検知する。ただし、「人間に話かけられていると思われるレベル」は、試験等によって経験的に得られる。
トリガIDがTr14では、記録開始トリガが「ロボットに対する集団の振る舞い」であり、対応する記録終了トリガが「集団の振る舞いの終了」または「ロボットから離れた」である。たとえば、集団の振る舞いとしては、整然・雑然とした人間(A、B、C)の行動である。この集団の振る舞いの有無(開始/終了)は、本件出願人が先に出願し既に出願公開された特開2008−225852号公報に記載の集団状態推定処理を実行することによって判断される。集団状態推定処理自体は、本願発明の本質的な内容ではないため、その説明は省略することにする。
なお、図5に示す記録開始トリガおよび記録終了トリガは例示であり、これに限定される必要はない。ロボット12が適用される環境200に応じて適宜変更されてよい。
また、図5からも分かるように、記録開始トリガに対応して、複数の記録終了トリガが存在することがある。
上述したトリガ情報テーブルに従って、記録制御装置102は、環境センサ106の検出信号の記録を開始したり終了したりする。ただし、上述したように、検出信号を記録するのは、その検出範囲にロボット12や人間(A、B、C)が含まれている環境センサ106のみについてである。
各環境センサ106の検出範囲の具体例が図6(A)、(B)、(C)に示される。ただし、図6(A)、(B)、(C)では、環境200を真上から俯瞰的に見た場合について示してある。図6(A)に示すように、床センサ106aの検出範囲は、環境200の床面ないし地面(2次元平面)の全体または略全体と一致する。したがって、記録制御装置102では、環境200に存在するロボット12および人間(A、B、C)の位置を、床センサ106aの出力(検出信号)に基づいて検出することができる。ここで、マップの詳細については図示しないが、当該マップに対応するマップデータ404d(図8参照)が記録制御装置102のRAM102bに記憶されている。また、図7(A)に示すように、2次元平面のマップに対応してXY座標系が設定されている。たとえば、このXY座標系では、環境200の水平面における左下の頂点を原点O(0,0)とし、横方向をX軸とし、縦方向をY軸としてある。また、原点Oから右方向がX軸のプラス方向であり、原点Oから上方向がY軸のプラス方向である。ただし、この実施例では、環境200の右下の点P1の座標を(x1,y1)とし、環境200の左上の点P2の座標を(x2,y2)とし、環境200の右上の点P3の座標を(x3,y3)とする。したがって、床センサ106aの検出範囲は、原点Oの座標(0,0)、点P1の座標(x1,y1)、点P2の座標(x2,y2)および点P3の座標(x3,y3)で規定することができる。以下、同様である。
また、図6(B)には、第1−第7タグリーダ106bのそれぞれの検出範囲が示される。図7(B)に示すように、1つのタグリーダ106bの検出範囲は、その配置位置を中心として、半径rの円で規定される。第1−第7タグリーダ106bの配置位置は予め決定されており、図示は省略するが、マップ上にも記載されている。ただし、この実施例では、環境200内のロボット12や人間(A、B、C)について検出するため、図6(B)に示すように、タグリーダ106bの検出範囲のうち、環境200からはみ出す範囲については図示していない。以下、同様である。
なお、図示は省略するが、ロボット12のタグリーダ86の検出範囲も同様に規定される。ただし、タグリーダ86は、ロボット12の位置に従ってその検出範囲が移動される点で、他のタグリーダ106bと異なる。
また、図示は省略するが、音センサすなわちマイク106dの検出範囲もタグリーダ106bの検出範囲と同様に、その配置位置を中心とする一定長さの半径の円によって規定される。ただし、指向性を有するマイク106dでは、検出範囲は、一定の方向からの音声を検出するように、その方向に曲面が向かう扇形で規定される。
さらに、図6(C)には、環境200における第1カメラ106cおよび第2カメラ106cのそれぞれの検出範囲が示される。環境200をX軸方向の中央で二等分した場合に、図6(C)からも分かるように、第1カメラ106cの検出範囲は環境200の左半分であり、第2カメラ106cの検出範囲は環境200の右半分である。ただし、図6(C)では、第1カメラ106cおよび第2カメラ106cの検出範囲を分かり易く示すために、それらの検出範囲を少し小さく示してあるが、それらの検出範囲を合わせると、環境200の2次元平面の全体を検出可能(撮影可能)である。したがって、たとえば、第1カメラ106cの検出範囲は、原点O、座標(x1/2,y1)、座標(x2,y2)および座標(x3/2,y3)によって規定される。また、第2カメラ106cの検出範囲は、座標(x1/2,y1)、座標(x1,y1)、座標(x3/2,y3)および座標(x3,y3)によって規定される。
なお、図6(A)では、床センサ106aを環境200の床面の全体に敷き詰めるようにしてあるが、環境200内の不要な箇所すなわちロボット12や人間(A、B、C)が移動したり立ち止まったりすることが考えにくい場所や領域には、床センサ106aを設けないようにしてもよい。
また、図4、図6(B)および図6(C)に示した、タグリーダ106bやカメラ106cの配置位置および検出範囲は単なる一例であり、環境200内のロボット12や人間(A、B、C)を検出することができれるのであれば、異なる配置位置および検出範囲を採用してもよい。たとえば、検出範囲の広いタグリーダ106bを使えば、その数を減らすことができるし、逆に、検出範囲の狭いタグリーダ106bを使えば、その数を増やす必要があるが、検出精度が上がると考えられる。また、2つのカメラ106cの検出範囲は、中央部分が重なり合うように、少し大きく設定してもよい。
図8は図1に示したRAM102bのメモリマップ400の一例を示す図解図である。図8に示すように、RAM102bは、プログラム記憶領域402およびデータ記憶領域404を含む。プログラム記録領域402には、環境センサ106からの検出信号をセンサ情報DB104に記録するためのプログラム(記録制御プログラム)が記憶される。記録制御プログラムは、メイン処理プログラム402a、通信プログラム402bおよびセンサ情報記録プログラム402cなどによって構成される。
メイン処理プログラム402aは、この実施例の記録制御のメインルーチンを処理するためのプログラムである。通信プログラム402bは、他のコンピュータなどと通信を実行するためのプログラムであり、この実施例では、主として、ロボット12のコンピュータ(CPU60)と通信を実行する。センサ情報記録プログラム402cは、環境センサ106からの検出信号を必要に応じてセンサ情報DB104に記録するためのプログラムである。具体的には、センサ情報記録プログラム402cは、記録開始トリガが発生したか否かを判断し、記録開始トリガが発生した場合に、検出範囲にロボット12や人間(A、B、C)を含む環境センサ106の検出信号をセンサ情報DB104に記録する。また、センサ情報記録プログラム402cは、記録終了トリガが発生したか否かを判断し、記録終了トリガが発生した場合に、対応する記録開始トリガが発生したときに、記録を開始した検出信号の記録を終了する。
図示は省略するが、プログラム記憶領域には、環境センサ106からの検出信号を一時記憶するためのプログラムなども記憶される。
データ記憶領域404には、データバッファ404aが設けられる。また、データ記憶領域404には、被験者情報データ404b、センサ情報データ404c、マップデータ404d、センサ検出範囲データ404e、トリガ情報データ404fおよび記録情報データ404gが記憶される。
データバッファ404aは、環境センサ106からの検出信号を一時記憶するために設けられる。この実施例では、一定時間(60秒)分の検出信号が一時記憶され、一定時間を経過した検出信号は消去される。
被験者情報データ404bは、環境200に存在する、または環境200に出入りする、1または複数のロボット12および1または複数の人間についてのタグIDを管理するためのテーブル(被験者情報テーブル)についてのデータである。図9(A)に示すように、被験者情報データ404bに従う被験者情報テーブルでは、タグIDに対応して、被験者(人間、ロボット)の名称が記載される。
図9(A)では、簡単のため、タグIDは2つのローマ字を用いて表してある。タグIDは、数字で表してもよいし、ローマ字と数字との両方を用いて表してもよいし、人間が解読できない情報で表してもよい。
また、図9(A)では、簡単のため、被験者の名称を、人間A、B、C、…、ロボットR1、…、Rn(nは整数)のように抽象的に示してある。
図8に戻って、センサ情報データ404cは、環境200に配置されている環境センサ106およびロボット12に設けられる環境センサ106についての識別情報(センサID)および環境センサ106の各々の検出信号をセンサ情報DB104に記録するか否かの情報(記録開始数)を管理するためのテーブル(センサ情報テーブル)である。この実施例では、センサIDに対応して、環境センサ106の名称および記録開始数が記載される。
図9(B)では、簡単のため、センサIDを1桁または2桁の数字で表しているが、ローマ字で表してもよいし、数字とローマ字との両方で表してもよいし、人間が解読できない情報で表してもよい。
また、図9(B)に示すように、同じ名称の環境センサ106については、第1、第2、…のように識別可能な語を付してある。
記録開始数は、対応する環境センサ106の検出信号をセンサ情報DB104に記録するか否を判断するための情報である。具体的には、記録開始数が正数であれば、対応する環境センサ106の検出信号をセンサ情報DB104に記録し、記録開始数が0であれば、対応する環境センサ106の検出信号をセンサ情報DB104に記録しない。ただし、所定の記録開始トリガが発生したときに、ロボット12および人間(A、B、C)の少なくとも一方を検出範囲に含む環境センサ106の検出信号の記録開始が指示され、このとき記録開始数が1加算される。一方、所定の記録終了トリガが発生したときに、対応する所定の記録開始トリガが発生したときに記録開始が指示された環境センサ106についての記録開始数が1減算される。
このように記録開始数を管理するのは、たとえば、異なるトリガIDの記録開始トリガの発生によって、同一の環境センサ106の検出信号が記録されている場合に、いずれか1つの記録開始トリガに対応する記録終了トリガの発生によって、当該環境センサ106の検出信号の記録が終了されてしまうのを防止するためである。
図8に戻って、マップデータ404dは、環境200のマップについてのデータである。この環境200のマップは、ロボット12や人間(A、B、C)の位置を特定したり、各環境センサ106の配置位置(位置座標)を決定したりするために用いられる。センサ検出範囲データ404eは、各環境センサ106についての検出範囲を規定するためのデータである。
トリガ情報データ404fは、図5に示したトリガ情報テーブルについてのデータである。上述したように、トリガ情報テーブルでは、トリガIDに対応して、記録開始トリガおよび記録終了トリガが記載される。
記録情報データ404gは、検出信号の記録中である環境センサ106を管理するためのテーブル(記録情報テーブル)についてのデータである。図10に示すように、記録情報データ404gに従う記録情報テーブルでは、記録開始トリガのトリガIDに対応して、センサ情報DB104に検出信号が記録されている環境センサ106についての情報(センサID)およびセンサIDが示す環境センサ106の検出対象であるロボット12および人間(A、B、C)のタグIDが記載される。この記録情報テーブルでは、記録開始トリガが発生したときに、そのトリガID、記録中のセンサIDおよび対象のタグIDが記載(追加)され、記録終了トリガが発生したときに、対応する記録開始トリガのトリガID、記録中のセンサIDおよび対象のタグIDが記録情報テーブルから消去される。
このように、記録情報データ404gを記憶するのは、上述した記録開始数を監視し、環境センサ106の検出信号を正しくセンサ情報DB104に記録するためである。また、同じ種類の記録開始トリガが環境200内の別の場所で発生した場合でも、それらを識別可能とするためである。
なお、図示は省略するが、データ記憶領域404には、他のデータが記憶されたり、記録制御処理に必要なフラグやカウンタ(タイマ)が設けられたりする。
図11ないし図13は、図1に示したCPU102aの具体的な記録制御処理についてのフロー図が示される。図11に示すように、CPU102aは、記録制御処理を開始すると、ステップS1で、環境200内に人間(A、B、C)またはロボット12が存在するかどうかを判断する。具体的には、CPU102aは、データバッファ404aを参照して、タグIDが記憶されているかどうかを判断する。
ステップS1で“NO”であれば、つまり環境200内に人間(A、B、C)およびロボット12が存在しない場合には、そのまま記録制御処理を終了する。詳細な説明は省略するが、記録制御処理が終了された場合には、一定時間(たとえば、30秒)が経過した後に、再度記録制御処理が開始される。以下、同じ。一方、ステップS1で“YES”であれば、つまり環境200内に人間(A、B、C)またはロボット12が存在する場合には、環境200内に存在する人間(A、B、C)およびロボット12に、記録制御処理に使用するID(処理用ID)を割り当てる。たとえば、処理用IDは、1、2、…、m(mは整数)である。この処理用IDは、人間(A、B、C)およびロボット12の各々の座標(現在位置)が、環境センサ106の検出範囲に含まれるかどうかを判断する際に、その判断処理を実行したかどうかを個別に判断するために用いられる。
次のステップS5では、終了の指示が有るかどうかを判断する。つまり、CPU102aは、記録制御装置102のオペレータによって終了指示が入力されたかどうかを判断するのである。ステップS5で“YES”であれば、つまり終了の指示が有れば、そのまま記録制御処理を終了する。一方、ステップS5で“NO”であれば、つまり終了の指示が無ければ、ステップS7で、人間(A、B、C)またはロボット12が増加したかどうかを判断する。つまり、CPU102aは、データバッファ404aを参照して、タグIDの種類が増加したかどうかを判断する。
ステップS7で“NO”であれば、つまり人間(A、B、C)またはロボット12が増加していなければ、そのまま図12に示すステップS11に進む。一方、ステップS7で“YES”であれば、つまり人間(A、B、C)またはロボット12が増加すれば、ステップS9で、増加した人間(A、B、C)またはロボット12に処理用IDを割り当てた後に、ステップS11に進む。
図12に示すステップS11では、変数iに初期値を設定する。ここで、変数iは、上述したように、処理用IDを付した人間(A、B、C)およびロボット12について順番に判断処理を実行するための変数である。続いて、ステップS13では、記録開始トリガが有るかどうかを判断する。図示は省略するが、記録開始トリガ(後述する記録終了トリガも同じ)が発生したかどうかの判断処理は、他のタスクによって実行される。
ステップS13で“NO”であれば、つまり記録開始トリガが無ければ、ステップS15で、記録終了トリガが有るかどうかを判断する。ステップS15で“NO”であれば、つまり記録終了トリガが無ければ、図11に示したステップS5に戻る。一方、ステップS15で“YES”であれば、つまり記録終了トリガがあれば、ステップS17で、記録終了トリガに対応するセンサIDの記録開始数Sjを1減算する。つまり、図10に示した記録情報テーブルを参照して、ステップS15で、有ることが判断された記録終了トリガについての記録開始トリガのトリガIDに対応して記述される1または複数の記録中のセンサIDを取得し、取得した1または複数のセンサIDの各々に対応して記述される記録開始数を1減算するのである。
次のステップS19では、記録終了トリガに対応する、記録開始トリガのトリガID、記録中のセンサIDおよび検出されるタグIDを、記録情報テーブルから削除する。このとき、記録終了トリガに対応する記録開始トリガが複数存在する場合には、検出されるタグIDによってそれらが区別される。続いて、ステップS21では、ステップS17の処理によって、記録開始数Sj=0となったセンサjの検出信号を記録終了して、ステップS23で、記録情報があるかどうかを判断する。つまり、CPU102aは、記録情報テーブルに、記録情報(トリガID、センサID、タグID)が記載されているかどうかを判断するのである。ステップS23で“YES”であれば、つまり記録情報が有れば、ステップS5に戻る。一方、ステップS23で“NO”であれば、つまり記録情報が無ければ、そのまま記録制御処理を終了する。
また、ステップS13で“YES”であれば、つまり記録開始トリガが有れば、ステップS25で、変数iが最大値(mの最大数)を超えたかどうかを判断する。つまり、CPU102aは、環境200内に存在するすべての人間(A、B、C)およびロボット12について、その座標(現在位置)が環境センサ106の検出範囲に含まれるかどうかの判断処理を実行したかどうかを判断するのである。
ステップS25で“YES”であれば、つまり変数iが最大値を超えていれば、ステップS5に戻る。一方、ステップS25で“NO”であれば、つまり変数iが最大値以下であれば、ステップS27で、変数jを初期化(j=1)する。ただし、変数jは、環境センサ106を個別に識別するための変数である。
図13に示すように、次のステップS29では、変数iの座標はセンサjの検出範囲内であるかどうかを判断する。ここでは、CPU102aは、センサ検出範囲データ404eを参照して、センサjについての検出範囲を取得し、この検出範囲に変数iで識別される人間(A、B、C)ないしロボット12の座標(現在位置)が含まれるかどうかを判断するのである。
なお、詳細な説明は省略するが、人間(A、B、C)ないしロボット12の座標(現在位置)は、それらのタグIDを検出しているタグリーダ86、106bの設置位置(現在位置)と、床センサ106aからの検出信号(座標データ)とに基づいて決定される。
ステップS29で“NO”であれば、つまり変数iの座標がセンサjの検出範囲外である場合には、そのままステップS37に進む。一方、ステップS29で“YES”であれば、つまり変数iの座標がセンサjの検出範囲内である場合には、ステップS31で、当該センサjの記録開始数Sjを1加算して、ステップS33で、記録開始数Sjが1であるかどうかを判断する。ここでは、CPU102aは、当該センサjの検出信号の記録を既に開始しているかどうかを判断しているのである。ただし、各センサjの記録開始数Sjは、記録制御処理が開始されるときに、リセットされる(0に設定される)。
ステップS33で“NO”であれば、つまり記録開始数Sjが2以上であれば、そのままステップS37に進む。一方、ステップS33で“YES”であれば、つまり記録開始数Sjが1であれば、ステップS35で、センサjの検出信号の記録を開始する。つまり、CPU102aは、センサjの検出信号のセンサ情報DB104への記録を開始する。ただし、このとき、CPU102aは、センサjの検出信号に加えて、当該センサjのセンサIDおよび当該センサjで検出されている人間(A、B、C)またはロボット12のタグIDも記録する。
次に、ステップS37では、記録開始トリガのトリガID、記録中のセンサIDおよび検出されるタグIDを、記録情報テーブルに登録する。ここでは、ステップS13において、有ることが判断された記録開始トリガのトリガIDが記述され、検出範囲にタグIDを含むことが判断されたセンサjのセンサIDが記述され、そして、そのタグIDが記述されるのである。つまり、CPU102aは、記録情報データ404gを更新する。続いて、ステップS39では、変数jを1加算する(j=j+1)。そして、ステップS41で、変数jが最大値を超えているかどうかを判断する。つまり、CPU102aは、すべてのセンサjについて、当該変数iの座標がその検出範囲内に含まれるかどうかの判断処理を実行したかどうかを判断しているのである。
ステップS41で“NO”であれば、つまり変数jが最大値以下であれば、ステップS29に戻る。一方、ステップS41で“YES”であれば、つまり変数jが最大値を超えていれば、ステップS43で、変数iを1加算して(i=i+1)、図11に示したステップS25に戻る。
この実施例によれば、記録開始トリガが発生したときに、センサの検出範囲内に人間やロボットが存在する場合に、当該センサの検出信号を記録するので、必要なときに必要なセンサの検出信号のみを記録することができる。この結果、メモリの記憶容量を無駄に使用するのを防止することができる。
なお、この実施例では、記録開始トリガの発生に応じて、センサの検出信号の記録を開始し、記録終了トリガの発生に応じて、センサの検出信号の記録を終了するようにしたが、センサの検出信号は、記録制御装置のメモリに常に記憶(一時記憶)されるため、記録開始トリガの一定時間(たとえば、10秒)前からのセンサの検出信号を記録したり、記録終了トリガの一定時間(たとえば、10秒)後までのセンサの検出信号を記録したり、それらの両方を実行したりするようにしてもよい。かかる場合には、記録したセンサの検出信号に基づいて、記録開始トリガが発生する前や記録終了トリガの発生後における、人間またはロボット或いはその両方のコミュニケーション行動を分析することもできる。
また、(1)記録開始トリガから記録終了トリガまで検出信号を記録したり、(2)記録開始トリガの一定時間前からのセンサの検出信号を記録したり、(3)記録終了トリガの一定時間後までのセンサの検出信号を記録したり、(4)上記の(2)、(3)の両方を実行したりするようにしもよい。かかる場合には、記録開始トリガ(トリガID)に対応して、(1)−(4)のいずれかを予め設定しておき、記録開始トリガに応じて決定された方法で、検出信号を記録すればよい。