図1を参照して、この実施例の集団状態推定システム(以下、単に「システム」という。)100は、コミュニケーションロボット(以下、単に「ロボット」という。)10、表示装置12、コンピュータ14、データベース16および床圧力センサ(床センサ)18を含む。このシステム100は、たとえばコンピュータ14から転送される人間の集団状態に応じてロボット10が集団注意制御行動を行うシステムである。
ただし、コンピュータ14が集団状態を推定した後には、上述のような集団注意制御を行う他、集団の状態に応じてセンシングを行う領域を変更して効率的にセンシングを行うアクティブセンシングなどにも有効に適用され得る。つまり、コンピュータ14が集団状態推定を実行して得た集団状態データには様々な応用例があるということに予め留意され
たい。
たとえば、ロボット10は、たとえば、無線LANやBluetooth(商品名)に代表される近距離無線などによって通信可能に、コンピュータ14に接続され、このコンピュータ14には、表示装置12、データベース16および床センサ18が有線によって接続される。しかしながら、ロボット10とコンピュータ14とは、有線で接続されるようにしてもよい。
ロボット10は、主として人間のようなコミュニケーションの対象とコミュニケーションを実行することを目的とした相互作用指向のもので、後に図3および図4を参照して詳細に説明するが、音声および身振り手振りなどの身体動作を用いてコミュニケーション(集団注意制御など)を実行する機能を備えている。
表示装置12は、たとえばCRTディスプレイや液晶ディスプレイであり、上述したように、コンピュータ14が接続され、このコンピュータ14によって表示制御される。しかしながら、ロボット10の指示によって表示装置12に集団注意制御の際に必要な情報を可視的に表示することもできる。
コンピュータ14は、汎用のパーソナルコンピュータ(PC)やワークステーションのようなコンピュータであり、基本的には、床センサ18からのセンサ値(「1」または「0」)に応じて集団状態を推定して状態データをロボット10などに提供する。コンピュータ14は、その他、上述したように表示装置12の表示を制御したり、ロボット10のコミュニケーション行動を制御したりすることもある。
コンピュータ14はよく知られているように、たとえばROMやハードディスクなどからなり、後述のフローチャートを参照して説明するような集団状態推定のためのプログラムや、制御データ、画像データなどを予め設定しているプログラムメモリ15aを含む。コンピュータ14は、さらに、たとえばRAMやフラッシュメモリなどからなり、ワーキングメモリやバッファメモリとして利用されるデータメモリ15bを含む。データメモリ15bは、後述の床センサ18からのセンサ値やセンサが反応している点(位置)の座標データを一時的に記憶するための一時記憶領域や、さらには各種フラグや各種レジスタを設定しておくためのフラグ・レジスタ領域などに割り付けられている。
データベース16は、たとえば、対人サービスとして道案内するときに必要な地図データや、同じく展示説明するときに必要な説明用データなどを記憶しておくとともに、ロボット10の動作を制御するための制御コマンドのコマンド名を記憶している。このコマンド名は、ロボット10の行動モジュールの名称である。コンピュータ14は、ロボット10を制御するときには、ロボット10の制御コマンド(行動モジュール名)をロボット10に送信する。ロボット10は、コンピュータ14からの制御コマンドに従って、コミュニケーション行動(発話、身振りなど)を実行する。また、このデータベース16にはこのシステム100が適用される会場などのマップデータ(2次元データ)が設定される。ただし、このデータベース16を省略し、コンピュータ14および/またはロボット10に上述の地図データ、制御コマンドやマップデータなどを記憶させておくようにしてもよい。
床センサ(床圧力センサ)18は多数の検出素子(感圧センサ:たとえば、加重によってオン/オフされるスイッチ)の集合を含み、たとえば、500×500mmの正方形で厚みが15mm程度で、検出解像度は、一例として、100×100mm程度である。床センサ18のインタフェースにはたとえばRS232C(規格名)が用いられており、コンピュータ14は、たとえば200ミリ秒間隔でセンサ出力を取得することができる。実施例では、図2に示すように、システム100が適用される閉空間(部屋)101の床に多数の床センサ18が埋め込まれ(敷き詰められ)、同一閉空間内に存在するロボット10や人間を検知する。実施例では、部屋101の床にn個の床センサ18(S1,S2,…,Sh,Sh+1,…,Si,Si+1,…,Sn‐1,Sn)が設置される。これらの床センサ18(S1,…,Sn)の各々は、重さを感じているときハイレベルまたは「1」のセンサ値を、重さを感じないときローレベルまたは「0」のセンサ値をそれぞれ出力する。
図3はロボット10の外観を示す正面図であり、この図3を参照して、ロボット10は台車20を含み、この台車20の下面にはロボット10を自律移動させる2つの車輪22および1つの従輪24が設けられる。2つの車輪22は車輪モータ26(図4参照)によってそれぞれ独立に駆動され、台車20すなわちロボット10を前後左右任意の方向に動かすことができる。また、従輪24は車輪22を補助する補助輪である。したがって、ロボット10は、配置された空間内を自由に移動することができる。
台車20の上には、円柱形のセンサ取付パネル28が設けられ、このセンサ取付パネル28には、赤外線距離センサ30が取り付けられる。この赤外線距離センサ30は、センサ取付パネル28すなわちロボット10の周囲の物体(人間や障害物など)との距離を計測するものである。
また、センサ取付パネル28の上には、胴体32が直立するように設けられる。胴体32の前方中央上部(胸に相当する位置)には、上述した赤外線距離センサ30とは別の赤外線センサ31がさらに設けられる。これは、ロボット10の前方の主として人間との距離を計測する。また、1つの全方位カメラ34が設けられる。この全方位カメラ34は、たとえば胴体32の背面側上端部のほぼ中央から上方に延びる支柱36上に設けられる。全方位カメラ34は、ロボット10の周囲を撮影するものであり、後述する眼カメラ60とは区別される。この全方位カメラ34としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ30および全方位カメラ34の設置位置は当該部位に限られず適宜変更され得る。
胴体32の両側面上端部(肩に相当する位置)には、それぞれ、肩関節38Rおよび38Lによって、上腕40Rおよび40Lが設けられる。図示は省略するが、肩関節38Rおよび38Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節38Rは、直交する3軸のそれぞれの軸廻りにおいて上腕40Rの角度を制御できる。肩関節38Rの或る軸(ヨー軸)は、上腕40Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸、ロール軸)は、それにそれぞれ異なる方向から直交する軸である。同様に、肩関節38Lは、直交する3軸のそれぞれの軸廻りにおいて上腕40Lの角度を制御できる。肩関節38Lのヨー軸は、上腕40Lの長手方向(または軸)に平行な軸であり、他のピッチ軸およびロール軸は、それにそれぞれ異なる方向から直交する軸である。
また、上腕40Rおよび40Lのそれぞれの先端には、肘関節42Rおよび42Lを介して、前腕44Rおよび44Lが設けられる。図示は省略するが、肘関節42Rおよび42Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸廻りにおいて前腕44Rおよび44Lの角度を制御できる。
前腕44Rおよび44Lのそれぞれの先端には、手に相当する球体46Rおよび46Lがそれぞれ固定的に設けられる。ただし、指や掌の機能が必要な場合には、人間の手の形をした「手」を用いることも可能である。
また、図示は省略するが、台車20の前面、肩関節38R,38Lを含む肩に相当する部位、上腕40R,40L、前腕44R,44Lおよび球体46R,46Lには、それぞれ、接触センサ(図4で包括的に示す。:48)が設けられている。台車20の前面の接触センサ48は、台車20への人間や他の障害物の接触を検知する。したがって、ロボット10の移動中に障害物との接触があると、それを検知し、直ちに車輪22の駆動を停止してロボット10の移動を急停止させることができる。また、その他の接触センサ48は、主に、人間がロボット10の当該各部位に触れたかどうかを検知する。なお、接触センサ48の設置位置はこれらに限定されず、適宜な位置(胸、腹、脇、背中、腰、頭など)に設けられてよい。
胴体32の中央上部(首に相当する位置)には首関節50が設けられ、さらにその上には頭部52が設けられる。図示は省略するが、首関節50は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット10の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部52には、口に相当する位置に、スピーカ54が設けられる。スピーカ54は、ロボット10が、それの周辺の人間に対して音声ないし音によって、コミュニケーションを取ったり、集団注意制御を行なったりするために用いられる。また、耳に相当する位置には、マイク56Rおよび56Lが設けられる。以下、右耳に相当するマイク56Rと左耳に相当するマイク56Lとをまとめてマイク56ということがある。マイク56は、周囲の音、とりわけコミュニケーションを実行する対象である人間の声を取り込む。さらに、目に相当する位置には、眼球部58Rおよび58Lが設けられる。眼球部58Rおよび58Lは、それぞれ眼カメラ60Rおよび60Lを含む。以下、右の眼球部58Rと左の眼球部58Lとをまとめて眼球部58ということがあり、また、右の眼カメラ60Rと左の眼カメラ60Lとをまとめて眼カメラ60ということがある。
眼カメラ60は、ロボット10に接近した人間の顔や他の部分ないし物体等を撮影して、それに対応する映像信号を取り込む。眼カメラ60としては、上述した全方位カメラ34と同様のカメラを用いることができる。たとえば、眼カメラ60は眼球部58内に固定され、眼球部58は眼球支持部(図示せず)を介して頭部52内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部52の上へ向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部52の正面側(顔)が向く方向に直交する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部58ないし眼カメラ60の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。
なお、上述のスピーカ54、マイク56および眼カメラ60の設置位置は、これらに限定されず、適宜な位置に設けてよい。
図4はロボット10の電気的な構成を示すブロック図であり、この図4を参照して、ロボット10は、全体を制御するプロセサ62を含む。プロセサ62は、バス64を介して、メモリ66、モータ制御ボード68、センサ入力/出力ボード70および音声入力/出力ボード72に接続される。
メモリ66は、たとえばROMやハードディスクなどからなるプログラムメモリ66aを含み、このプログラムメモリ66aには、ロボット10の制御プログラム(人間との間でコミュニケーションを実行するための行動制御プログラムや集団注意制御プログラム、アクティブセンシングプログラムなど)が予め記憶されるとともに、コミュニケーションや集団注意制御動作を実行する際にスピーカ54から発生すべき音声または声の音声データ(音声合成データ)および所定の身振りを提示するための角度データなども記憶される。また、このプログラムメモリ66aには、外部コンピュータ(コンピュータ14など)との間で必要な情報を送受信するための通信プログラムなどが記録される。メモリ66は、さらに、たとえばRAMやフラッシュメモリなどからなり、ワーキングメモリやバッファメモリとして利用されるデータメモリ66bを含む。データメモリ66bは、後述のようにしてコンピュータ14から送られてくる集団状態のデータなどを一時的に記憶するための一時記憶領域や、さらには後述する注意制御フラグAや各種レジスタを設定しておくためのフラグ・レジスタ領域などに割り付けられている。
なお、メモリ66は、プロセサ62に内蔵されたまたは組み込まれた記憶装置(内部メモリ)であってもよく、プロセサ62の内部メモリとは別に設けた記憶装置であってもよい。
モータ制御ボード68は、たとえばDSPで構成され、各腕や首関節および眼球部等の各軸モータの駆動を制御する。すなわち、モータ制御ボード68は、プロセサ62からの制御データを受け、右眼球部58Rの2軸のそれぞれの角度を制御する2つのモータ(図4では、まとめて「右眼球モータ」と示す。)74の回転角度を制御する。同様に、モータ制御ボード68は、プロセサ62からの制御データを受け、左眼球部58Lの2軸のそれぞれの角度を制御する2つのモータ(図4では、まとめて「左眼球モータ」と示す。)76の回転角度を制御する。
また、モータ制御ボード68は、プロセサ62からの制御データを受け、右肩関節38Rの直交する3軸のそれぞれの角度を制御する3つのモータと右肘関節42Rの角度を制御する1つのモータとの計4つのモータ(図4では、まとめて「右腕モータ」と示す。)78の回転角度を調節する。同様に、モータ制御ボード68は、プロセサ62からの制御データを受け、左肩関節38Lの直交する3軸のそれぞれの角度を制御する3つのモータと左肘関節42Lの角度を制御する1つのモータとの計4つのモータ(図4では、まとめて「左腕モータ」と示す。)80の回転角度を調節する。
さらに、モータ制御ボード68は、プロセサ62からの制御データを受け、首間接50の直交する3軸のそれぞれの角度を制御する3つのモータ(図4では、まとめて「頭部モータ」と示す。)82の回転角度を制御する。さらにまた、モータ制御ボード68は、プロセサ62からの制御データを受け、車輪22を駆動する2つのモータ(図4では、まとめて「車輪モータ」と示す。)26の回転角度を制御する。
なお、この実施例では、車輪モータ26を除くモータは、制御を簡素化するために、ステッピングモータ或いはパルスモータを用いるようにしてある。ただし、車輪モータ26と同様に、直流モータを用いるようにしてもよい。
センサ入力/出力ボード70もまた、同様に、DSPで構成され、各センサからの信号を取り込んでプロセサ62に与える。すなわち、赤外線距離センサ30のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード70を通してプロセサ62に入力される。また、全方位カメラ34からの映像信号が、必要に応じてこのセンサ入力/出力ボード70で所定の処理を施された後、プロセサ62に入力される。眼カメラ60からの映像信号も、同様にして、プロセサ62に入力される。また、上述した複数の接触センサ(図4では、まとめて「接触センサ48」と示す。)からの信号がセンサ入力/出力ボード70を介してプロセサ62に与えられる。
音声入力/出力ボード72もまた、同様に、DSPで構成され、プロセサ62から与えられる音声合成データに従った音声または声がスピーカ54から出力される。たとえば、道案内や集団注意制御などを実行するときに情報が音声または声としてスピーカ54から発せられる。また、マイク56からの音声入力が、音声入力/出力ボード72を介してプロセサ62に取り込まれる。
また、プロセサ62は、バス64を介して通信LANボード84に接続される。通信LANボード84は、DSPで構成され、プロセサ62から送られる送信データを無線通信装置86に与え、無線通信装置86から送信データを、たとえば、無線LANのようなネットワークを介して、外部コンピュータ(図1および図4ではコンピュータ14)などに送信する。また、通信LANボード84は、無線通信装置86を介してデータを受信し、受信したデータをプロセサ62に与える。つまり、この通信LANボード84および無線通信装置86によって、ロボット10はコンピュータ14などと無線通信を行うことができる。
図5‐図13を参照して、コンピュータ14が集団状態を推定する手法とそのときの動作について説明する。
図5のステップS1でオペレータによる停止命令を検出しなければ、コンピュータ14は、次のステップS3において、RS232Cなどを利用して、たとえば、ポーリングの手法を用いて、図2に示すように部屋101内に配列されたすべての床センサ18からセンサ情報、すなわち、センサ番号(n)、センサ値(Si=1または0)およびそのセンサ値を取得した時刻を読み取る。このセンサ情報は、図1に示すデータメモリ15bに一時的に格納される。
続くステップS5において、コンピュータ14は、ステップS3で取得したセンサ情報をx-y座標に変換する。つまり、ロボット10や人間を検出した床センサの反応点の位置座標を計算する。ただし、ロボット10は2つの車輪22で床センサに加重しているのでロボット10の反応点は2つの車輪の中点として計算し、他方、人間も2本足で立っていることを前提にしているので、2本の足の中点が人間による床センサの反応点として計算される。このような反応点をx-y座標に変換するには、具体的には、図6に示す手順が実行される。
図6の最初のステップS21でオペレータによる停止命令を検出しなければ、コンピュータ14は、続くステップS23において、各床センサからセンサ情報を受信したかどうか判断し、“NO”なら、受信するまで待つ。センサ情報を受信していれば、次のステップS25で、コンピュータ14は、(1)式を用いて、床センサが反応している点の座標を計算する。
[数1]
xj = i%h
yj = i/h (Si = 1, j = 1, 2, …, m) …(1)
ただし、mは床センサが反応している点の総数であり、床センサは図2のように配置されているものとする。
そして、次のステップS27において、コンピュータ14は、ステップS25で計算して得た、床センサが反応している点の座標(x1,y1),(x2,y2),…,(xm,ym)を、図5の次のステップS7に送信する。つまり、図1に示すデータメモリ15bにこれらの座標データを一時記憶する。このステップS7は集団状態推定プログラムであり、図7‐図11に詳細に示される。
図7の最初のステップS31でオペレータによる停止命令を検出しなければ、コンピュータ14は、続くステップS33において、床センサが反応している点の座標(x1,y1),(x2,y2),…,(xm,ym)を受信したかどうか判断し、“NO”なら受信するまで待つ。“YES”なら、次のステップS35で、コンピュータ14は、受信した座標データに基づいてクラスタリングを行い、反応点(床センサの)をいくつかのクラスタに分割または区画する。
ステップS35では、反応点と反応点との間のユークリッド距離を類似度としてクラスタリングを行う(距離が近いほど類似度が高い)。実施例では、いわゆる階層的クラスタリングの手法を採用した。階層的クラスタリングでは、m個の反応点データが与えられたとき、まず、1個のデータ(要素)だけを含むm個のクラスタを初期状態とする。この状態から、あるクラスタと他のあるクラスタとの距離(クラスタ間距離)を計算し、この距離がもっとも近い2つのクラスタを逐次的に併合し、すべての反応点が1つのクラスタに併合されるまで繰り返し処理することによって、クラスタ間の階層構造を獲得するという手法である。以下、図8を参照して詳しく説明する。
図8の最初のステップS41でオペレータによる停止命令を検出しなければ、コンピュータ14は、続くステップS43において、m個の反応点を、それぞれ、要素が1つだけのm個のクラスタとする。続いて、ステップS45で、コンピュータ14は、m個のクラスタのクラスタ間距離(図9)を計算する。
実施例では、特に限定するという意味ではないが、クラスタ間距離は最短距離法を用いて計算する。最短距離法とは、2つのクラスタに含まれている要素のうち最も近い要素どうしの間の距離をクラスタ距離とする方法である。
クラスタ距離を計算するためには、その他、重心法、ウォード法などいくつかのアルゴリズムが存在するが、最短距離法では、最も近い要素どうしの間の距離をクラスタ間距離とするというアルゴリズムの特性上、鎖状のクラスタを作ることができる。一方、重心法やウォード法は、主に楕円体のクラスタを作る。実施例のようにロボット10と人間とが相互作用を行う場合、そのような人間の集団に対してクラスタリングを行う際には、楕円体のクラスタよりも鎖状のクラスタの方が適していると考えられる。人間がロボットに対して横に一列に並んでいるときに、その1列を1つのクラスタとして扱えるためである。
そして、次のステップS47で、コンピュータ14は、クラスタ間距離がもっとも近いクラスタどうしを併合する。このステップS47は、先のステップS45とともに、ステップS49ですべての反応点(要素)が1つのクラスタに併合されたと判断するまで、繰り返し実行される。
ステップS49で1のクラスタにすべての反応点が併合できたと判断したとき、コンピュータ14は、次のステップS51で、データメモリ15b(図1)に記憶している反応点の座標データを参照して、各反応点の分布状態に応じて、適切なクラスタ数Cを決定する。クラスタ数Cは、対人距離に関する発明者等の知見に基づき、反応点と反応点との距離が70cm(固体距離)以下の反応点は必ず同じクラスタに属し、110cm(公的距離)以上離れた反応点どうしは必ず異なるクラスタに属するように、決められる。
さらに、実施例では、このような距離条件に加えて、(2)式で表される擬似t2統計量に基づいてクラスタ数を決定する。擬似t2統計量は、よく知られているように、クラスタ数決定の指標として用いられている統計量である。
クラスタPとクラスタQとを結合してクラスタRとなるときの擬似t2統計量は、(2)式で与えられる。ここで、Wは各クラスタの重心とクラスタに含まれる全要素(反応点)との距離の総和であり、Nは各クラスタ内の要素数である。そして、擬似t2統計量の値が大きく変化するクラスタ数が適切なクラスタ数Cの候補である。
つまり、この実施例では、対人距離と擬似t2統計量とに基づいて、以下の条件でクラスタ数Cを決定する。
1.クラスタ間距離が固体距離(70cm)以上となるクラスタ数を、分割するクラスタ数の候補とする。候補がない場合には、クラスタ数を1とする。
2.1.で選ばれた候補の中から、クラスタ間距離が公的距離(110cm)以下となるクラスタ数を、分割するクラスタ数の候補とする。候補がない場合には、クラスタ間距離が最も大きくなるクラスタ数を分割数とする。
3.選択された候補の中で、擬似t2統計量の変化量が正の方向に最も大きく変化しているクラスタ数を、分割クラスタ数の候補とする。
ステップS51でこのようにして適切なクラスタ数Cを決定した後、コンピュータ14は、ステップS53で、そのクラスタ数Cと各クラスタに含まれる反応点(要素)の数Pi(i=1,…,C。ただし、P1≦P2≦…≦Pcとする。)とを状態推定プログラムの次に実行すべきステップ(図7:ステップS37)に送信する。つまり、図1に示すデータメモリ15bに、クラスタ数Cおよび各クラスタに含まれる反応点の数Pi、さらに必要に応じてクラスタの重心位置をクラスタデータとして記憶する。
図7に戻って、ステップS37で、このようにして計算しあるいは決定したクラスタ数Cと各クラスタに含まれる要素の数Piとに基づいて、各クラスタが「かたまりクラスタ」であるのか「はぐれクラスタ」であるのかを決定する。ただし、「かたまりクラスタ」とは、第1クラスタのことであり、第2クラスタを意味する「はぐれクラスタ」に比べて、より多数の反応点(要素)で構成されるクラスタである。逆にいえば、「はぐれクラスタ」は「かたまりクラスタ」に比べて少数の要素で構成されているクラスタと定義できる。このようなクラスタ判別ステップは、具体的には、図10に示す手順で実行される。
図10の最初のステップS61でオペレータによる停止命令を検出しなければ、コンピュータ14は、続くステップS63において、上述のクラスタリング結果、すなわち、クラスタデータを受信したかどうか判断し、“NO”なら受信するまで待つ。“YES”なら、次のステップS65で、(3)式に基づいて、最も反応点(要素)数の多いクラスタが全反応点のa%以上であるかどうか判断する。ただし、この判断式を含むすべての判断式は、最も要素数の多いクラスタが全要素数のa%以上であるとき、要素数が全要素数のb%以下となるクラスタを「はぐれクラスタ」の候補とし、かつ、すべての「はぐれクラスタ」の要素数がすべての「かたまりクラスタ」の要素数のc%以下となるように考慮した結果であることを予め理解されたい。
[数3]
Pc≧m(a/100) …(3)
このステップS65の判断結果が“NO”であるとき、最も要素数の多いクラスタが全要素数のa%以上ないので、ステップS67でコンピュータ14は、すべてのクラスタが「かたまりクラスタ」であると判定する。
次に、ステップS65で“YES”の判断をしたとき、最も要素数の多いクラスタが全要素数のa%以上あるので、コンピュータ14は、続くステップS69において、(4)式に基づく判断を行う。
[数4]
P1≦m(b/100) …(4)
そして、このステップS69で“NO”を判断したとき、要素数が全要素数のb%以下ではないので、コンピュータは、ステップS71で、すべてのクラスタは「かたまりクラスタ」であると判定する。
ステップS69で“YES”を判断したときには、コンピュータ14は、次のステップS73で(5)式を満たす最大のiをH(はぐれ)とし、続くステップS75で(6)式を満たす最小のiをK(かたまり)として、ステップS77における判断式(7)に基づく判定を実行する。ただし、Cはクラスタ数である。
[数5]
Pi≦m(b/100) (i=1,2,…,C)…(5)
[数6]
Pi≧m(b/100) (i=1,2,…,C)…(6)
[数7]
PH≦PK(c/100) …(7)
コンピュータ14がステップS77で“NO”を判断したとき、「はぐれクラスタ」の要素数がすべての「かたまりクラスタ」の要素数のc%以下とはならないので、次のステップS79で、すべてのクラスタは「かたまりクラスタ」であると判定する。また、ステップS77で“YES”の判断をしたときには、「はぐれクラスタ」の要素数がすべての「かたまりクラスタ」の要素数のc%以下であるので、コンピュータ14は、続くステップS81において、(5)式を満足するクラスタを「はぐれクラスタ」と判定し、それ以外のクラスタを「かたまりクラスタ」と判定する。
このようにして、ステップS67,S71,S79およびS81で各クラスタについてそれらが「かたまりクラスタ」であるのか「はぐれクラスタ」であるのかの種類判定を行ない、コンピュータ14は、その判定結果(各クラスタの種類)をクラスタデータとしてステップS83すなわち、図7のステップS39で、集団状態推定プログラムに送信する。つまり、図1のデータメモリ15bに格納する。
集団状態推定プログラムはこの判定結果(クラスタの種類)に基づいて、集団状態推定動作(ステップS7:図5)を実行する。集団状態推定プログラムは、具体的には図11に詳細に示されるが、この実施例では、基本的に、図13に示すような3つの場合にまず分類し、最終的に[集団状態1]‐[集団状態12]に分類して推定する。
図11の最初のステップS91で、コンピュータ14は、データメモリ15bに格納されているクラスタデータの各クラスタの種類を参照して、「かたまりクラスタ」が1つだけ存在するかどうか、判断する。“YES”なら、図13に示す「1つのかたまりクラスタ」という区画に含まれる集団状態のいずれかであり、次のステップS93で、コンピュータ14は、「はぐれクラスタ」があるかどうか判断する。ステップS93で“NO”が判断されると、「かたまりクラスタ」が1つで「はぐれクラスタ」がない、たとえば、いわゆるひとかたまりの集団状態であるので、コンピュータ14は、このような集団状態を「集団状態1」と定義し、そのときの集団状態を集団状態1と推定する。
ステップS93で“YES”が判断されると、先のステップS91で“YES”が判断されているので、そのとき部屋101(図2)には、オブジェクトとしてのロボット10と1つの「かたまりクラスタ」と1つ以上の「はぐれクラスタ」があるということを意味し、図13で示す集団状態2,3および4のいずれかであることがわかる。そこで、ステップS95で、コンピュータ14は、クラスタデータや反応点データなどを参照して、「はぐれクラスタ」、「かたまりクラスタ」およびオブジェクト(ロボット10)の位置関係、特に「はぐれクラスタ」がオブジェクトすなわちロボット10に対して、「かたまりクラスタ」より近いかどうかでいずれの集団状態であるかを特定する。
「はぐれクラスタ」の状況を判定するステップS95の詳細が図12に示されるが、この図12を参照して、ステップS111で、コンピュータ14は、「はぐれクラスタ」が「かたまりクラスタ」よりロボット10(オブジェクト)の近くにいるかどうか判断する。“YES”なら、その「はぐれクラスタ」に「+近はぐれ」とラベルを付す。ステップS11で“NO”と判断したら、次にコンピュータ14はステップS113で、「はぐれクラスタ」が「かたまりクラスタ」よりオブジェクトの遠くにいるかどうか判断する。“YES”ならその「はぐれクラスタ」に「+遠はぐれ」とラベルを付し、“NO”なら近くも遠くもないという意味で「+はぐれ」というラベルを付す。
このようにして、図12では、オブジェクトから最も距離が近い反応点が「はぐれクラスタ」に属する場合「+近はぐれ」と判定し、オブジェクトから最も距離が遠い反応点が「はぐれクラスタ」に属する場合「+遠はぐれ」と判定し、それ以外の場合「+はぐれ」と認定する。
図13を参照すればわかるように、「かたまりクラスタ」か1つでかつ「+近はぐれ」とラベルが付された1つの「はぐれクラスタ」があるときには、そのときの集団状態は「集団状態2」である。「かたまりクラスタ」か1つでかつ「+遠はぐれ」とラベルが付された1つの「はぐれクラスタ」があるときには、そのときの集団状態は「集団状態3」である。そして、「かたまりクラスタ」か1つでかつ「+はぐれ」とラベルが付された1つの「はぐれクラスタ」があるときには、そのときの集団状態は「集団状態4」である。このようにして、ステップS91で“YES”を判定したとき、つまり1つだけの「かたまりクラスタ」が存在するとき、コンピュータ14は、集団状態1,2,3または4を推定する。
ステップS91で“NO”が判断されると、「かたまりクラスタ」が2つ以上あることを意味し、コンピュータ14は、次のステップS97で、それぞれの「かたまりクラスタ」とロボット10(オブジェクト)との距離が等しいかどうか判断する。「かたまりクラスタ」の中で最もオブジェクトに近い点とオブジェクトとの距離をdiとする。この距離diの最大値をdimax、最小値をdiminとしたとき、(8)式を満足すれば、各「かたまりクラスタ」とオブジェクトとの間の距離は等しい(等距離)と判定する。ただし、Dは閾値を示す定数である。
[数8]
dimax−dimin<D …(8)
ステップS97で“YES”と判断すると、コンピュータ14は次にステップS99で、「はぐれクラスタ」があるかどうか判断する。“NO”と判断した集団状態は、ロボット10(オブジェクト)に対して等距離の2つの「かたまりクラスタ」があるという集団状態であるので、図13で「複数のかたまりクラスタ(距離均等)」と区画された中の1つの集団状態、「集団状態5」である。
ステップS101でコンピュータ14は、先のステップS95と同様に、「はぐれクラスタ」、「かたまりクラスタ」およびオブジェクト(ロボット10)の位置関係で集団状態を分類する。
図13を参照すればわかるように、「かたまりクラスタ」か2つでかつそれらの「かたまりクラスタ」のオブジェクトからの距離が等しくてしかも「+近はぐれ」とラベルが付された1つの「はぐれクラスタ」があるときには、そのときの集団状態は「集団状態6」である。ロボット10から等距離の2つ「かたまりクラスタ」がありかつ「+遠はぐれ」とラベルが付された1つの「はぐれクラスタ」があるときには、そのときの集団状態は「集団状態7」である。そして、距離均等の2つの「かたまりクラスタ」と「+はぐれ」とラベルが付された1つの「はぐれクラスタ」とがあるときには、そのときの集団状態は「集団状態8」である。このようにして、2つの距離均等の「かたまりクラスタ」があるとき、すなわち、ステップS97で“YES”を判断したとき、コンピュータ14は、集団状態5,6,7または8を推定する。
ステップS97で“NO”が判断されるということは、オブジェクト(ロボット10)からの距離が不均等な2つの「かたまりクラスタ」が存在するということを意味している。そして、次のステップS103で、コンピュータ14は「はぐれクラスタ」があるかどうか判断する。“NO”と判断した集団状態は、ロボット10(オブジェクト)に対して不等距離の2つの「かたまりクラスタ」があるという集団状態であるので、図13で「複数のかたまりクラスタ(距離不均等)」と区画された中の1つの集団状態、「集団状態9」である。
ステップS103で“YES”が判断されると、コンピュータ14は、ステップS105で、先のステップS95およびS101と同様に、「はぐれクラスタ」、「かたまりクラスタ」およびオブジェクト(ロボット10)の位置関係で集団状態を分類する。
図13を参照すればわかるように、「かたまりクラスタ」か2つでかつそれらの「かたまりクラスタ」のオブジェクトからの距離が等しくなくてしかも「+近はぐれ」とラベルが付された1つの「はぐれクラスタ」があるときには、そのときの集団状態は「集団状態10」である。ロボット10から距離不均等の2つ「かたまりクラスタ」がありかつ「+遠はぐれ」とラベルが付された1つの「はぐれクラスタ」があるときには、そのときの集団状態は「集団状態11」である。そして、距離不均等の2つの「かたまりクラスタ」と「+はぐれ」とラベルが付された1つの「はぐれクラスタ」とがあるときには、そのときの集団状態は「集団状態12」である。このようにして、2つの距離不均等の「かたまりクラスタ」があるとき、すなわち、ステップS97で“NO”を判断したとき、コンピュータ14は、集団状態9,10,11または12を推定する。
このシステムで推定可能な12の集団状態と各クラスタの状態とを表1で一覧できるようにした。
ここまでで、図1に示す実施例の集団状態推定システム100において、ロボット10(オブジェクト)と同じ閉空間101内に存在する人間の集団状態を正しく推定できることを説明した。そして、このようにして推定した集団状態1−集団状態12のいずれかを示すデータ(集団状態データ)は、図5のステップS9で、時刻データとともに、データメモリ15bに格納される。それとともに、この集団状態データおよび時刻データは、コンピュータ14が推定した集団状態を利用する装置、実施例ではロボット10に送信される。ロボット10では、そのようにして受信した集団状態データを自身のデータメモリ66bに一時的にストアする。なお、実施例では、集団状態データには、集団状態のデータだけでなく、各クラスタの位置(重心)データやそれらに含まれる反応点の位置データなども含むように意図している。したがって、集団状態データを参照すれば、そのときの集団状態だけでなく、「かたまりクラスタ」や「はぐれクラスタ」の個数や位置のデータ、および各反応点(要素)の個数や位置のデータがすべてわかるのである。
図14は、コンピュータ14から、コンピュータ14が推定した集団状態のデータ(集団状態データ)を受信したロボット10が実行する集団注意制御動作の一例を示すフロー図である。ここで、この図14を参照して集団注意制御の一例を説明する。
図14の最初のステップS121でオペレータによる停止命令を検出しなければ、ロボット10のプロセサ62は、続くステップS123において、コンピュータ14から送信される集団状態データを受信したかどうか判断し、“NO”なら受信するまで待つ。“YES”なら、次のステップS125で、たとえば、データメモリ66bに設定されている注意制御フラグAを「0」にリセット(A=0)する。なお、この注意制御フラグAは、それがリセットされているときロボット10が集団に対して集団注意制御を実行する必要があることを示し、リセット(A=1)されているときたとえば、注意を向けた人に道案内や展示説明などの集団注意制御以外のサービスを提供すべきことを示す。
ステップS127で、ロボット10のプロセサ62は、データメモリ66bにストアしている集団状態データを参照して、「はぐれクラスタ」があるかどうか判断する。つまり、そのとき受信した集団状態データが図13に示す「集団状態1」、「集団状態5」および「集団状態9」以外を示す集団状態データであるかどうか判断する。ステップS127で“YES”の判断をしたとき、ロボット10のプロセサ62は、ステップS129において、ロボット10の周囲に存在する人間に対して、「はぐれクラスタ」の解消を呼びかける音声メッセージ、たとえば、『みなさん、集まってください。』のような音声メッセージをスピーカ54(図3,図4)から出力して、終了する。
ステップS127で“NO”が判断されたとき、つまり、そのときの集団状態データが図13に示す「集団状態1」、「集団状態5」および「集団状態9」のいずれかを示す集団状態データである場合、続くステップS131において、ロボット10のプロセサ62は、「複数かたまり(距離不均等)」の状態、すなわち、「集団状態9」の状態かどうか判断する。“YES”なら、続くステップS133で、ロボット10のプロセサ62は、「複数かたまり(距離均等)」の状態、すなわち、「集団状態5」の状態になるか、もしくは「ひとかたまり」になるような音声メッセージ、たとえば、『みなさん、こちらに寄ってください。』のような音声メッセージをスピーカ54から出力して、終了する。
ステップS131で“NO”が判断されたとき、つまり、集団状態データが図13に示す「集団状態1」および「集団状態5」いずれか以外を示す集団状態データである場合、続くステップS135において、ロボット10のプロセサ62は、ロボット10と各人との間の距離を計算し、各「かたまりクラスタ」毎に、ロボット10と人間との距離の分散を求める。そして、ロボット10のプロセサ62は、次のステップS137で、上で計算した分散がD以上になる「かたまりクラスタ」が存在するかどうか、つまり、各「かたまりクラスタ」のなかで人間すなわち反応点が分散しているかどうか判断する。“YES”なら、たとえば、『みなさん、まとまってください。』のような音声メッセージを出力し、「かたまりクラスタ」がまとまるように呼びかけ、終了する。
ステップS137で“NO”の判断をしたとき、ロボット10のプロセサ62は、ステップS141に進み、このステップS141で、必要に応じて、たとえば、『みなさん、もう少し離れてください。』あるいは『みなさん、もう少し近くに来てください。』『みなさん、こっち向いてください。』とか『みなさん向こう(または右または左など)を見てください。』などという適宜の音声メッセージを出力することで集団注意制御を実行して、ロボット10と人間との間の距離や人々の顔の向きなどを一斉に制御する。
ただし、上述のような音声メッセージによる以外に、たとえば、モータ制御ボード68に制御データを出力することによって右腕モータ78や左腕モータ80(いずれも図4)を制御して、右腕または左腕で「指さし」動作を行って、集団注意制御を行うようにしてもよい。あるいは、モータ制御ボード68に制御データを出力することによって頭部モータ82(図4)を制御して、「首かしげ」動作を行って、集団注意制御を行うようにしてもよい。さらには、モータ制御ボード68に制御データを出力することによって右眼球モータ74および左眼球モータ76(図4)を制御して、「目配せ」動作を行って、集団注意制御を行うこともできる。つまり、集団注意制御は任意の音声やジェスチャで実行することができる。
ステップS141で集団注意制御を行った後には、ロボット10のプロセサ62は、ステップS143で注意制御フラグAを再びセット(A=1)して、プロセスを終了する。
この実施例によれば、コンピュータ14で集団状態を正しく推定できるので、ロボット10はそのときの集団状態に適合した集団注意制御を適正に行うことができる。
なお、上述の実施例ではコンピュータ14が集団状態を推定し、その集団状態推定動作によって得られた集団状態データをコンピュータ14からロボット10に転送し、ロボット10がその集団状態に応じた集団注意制御を行うものとして説明した。しかしながら、コンピュータ14はロボット10に単に床センサ18の反応点データ(座標データ)を送るだけで、ロボット10自身がその座標データを用いて上で説明したアルゴリズムに従って集団状態を推定するようにしてもよいことは勿論である。
実施例でロボット10がその周囲の人間に対して集団注意制御を実行したが、逆に、ロボット10ではなく、コンピュータ14やあるいは他の装置や手段で、推定した集団状態に応じて集団注意制御を実行することもできる。
上述の実施例では、コンピュータ14が推定した集団状態のデータを用いてロボット10(あるいは他の装置、手段)が集団注意制御を行う実施例について説明した。しかしながら、集団状態の推定結果はこのような集団注意制御以外に、たとえば、図15にフロー図を示すアクティブセンシングなどにも有効に利用できる。
図15の最初のステップS151でオペレータによる停止命令を検出しなければ、ロボット10のプロセサ62は、続くステップS153において、コンピュータ14から送信される集団状態データを受信したかどうか判断し、“NO”なら受信するまで待つ。“YES”なら、次のステップS155で、たとえば、データメモリ66bに記憶されている集団状態データを参照して、そのとき「はぐれクラスタ」があるかどうか判断する。つまり、そのとき受信した集団状態データが図13に示す「集団状態1」、「集団状態5」および「集団状態9」以外を示す集団状態データであるかどうか判断する。“YES”のとき、ロボット10のプロセサ62は、次のステップS157で、自身はその「はぐれクラスタ」に注目したいかどうか判断する。たとえば、コンピュータ14によって「はぐれクラスタ」を注目すべき指令がロボット10に与えられているときなど、ステップS157で“YES”となり、次のステップS159に進む。
ステップS159では、集団状態データに含まれる「はぐれクラスタ」の重心位置を示す位置データを参照して、その位置の方向に眼カメラ60が向くように、モータ制御ボード68に制御データを送り、眼球モータ74,76を駆動する。つまり、「はぐれクラスタ」の位置に対してセンシングを行う。
ステップS155およびS157でともに“NO”と判断したとき、ロボット10のプロセサ62は、次のステップS161において、そのときの集団状態データを参照して、複数の「かたまりクラスタ」が存在するかどうか、判断する。「はぐれクラスタ」がなくて複数の「かたまりクラスタ」がある集団状態は、集団状態1か集団状態5か集団状態9のいずれかである。したがって、このステップS161では結局、集団状態1,集団状態5および集団状態9のいずれかであるかどうか判断していることになる。“NO”なら、そのときの集団状態は集団状態1(1つの「かたまりクラスタ」だけが存在する。)であり、ロボット10のプロセサ62は、続くステップS163で、上述の方法と同様にして眼カメラ60を制御して、その「かたまりクラスタ」の位置に対してセンシングを行う。
ステップS161で“YES”の判断をしたときには、そのときの集団状態は、集団状態5か集団状態9のいずれかであり、続くステップS165でロボット10のプロセサ62は、それぞれの「かたまりクラスタ」とオブジェクト(ロボット10)との距離が一定化どうか、つまり、集団状態5かどうか判断する。集団状態5であるとき、ロボット10のプロセサ62は、集団状態データに含まれるクラスタデータを参照して、ステップS167で、2つの「かたまりクラスタ」のうちどちらか人数の多い「かたまりクラスタ」に対してセンシングを行う。
ただし、ステップS165で“NO”の判断をしたとき、つまり、集団状態が「9」のときには、ステップS169で、コンピュータ14は、集団状態データに含まれるクラスタ位置データに基づいて、ロボット10に近いほうの「かたまりクラスタ」をセンシングする。
この実施例によれば、コンピュータ14で集団状態を正しく推定できるので、ロボット10はそのときの集団状態に適合したアクティブセンシングを適正に行うことができる。
なお、上述の実施例ではコンピュータ14が集団状態を推定し、その集団状態推定動作によって得られた集団状態データをコンピュータ14からロボット10に転送し、ロボット10がその集団状態に応じたアクティブセンシングを行うものとして説明した。しかしながら、コンピュータ14はロボット10に単に床センサ18の反応点データ(座標データ)を送るだけで、ロボット10自身がその座標データを用いて上で説明したアルゴリズムに従って集団状態を推定し、その上でアクティブセンシングをするようにしてもよいことは勿論である。
逆に、ロボット10によってではなく、コンピュータ14あるいは他の手段や装置で、推定した集団状態に応じたアクティブセンシングを実行することもできる。
また、アクティブセンシングの手法も、カメラを向けるだけでなく、カメラの解像度を変化させる方法、あるいはその方向に音声マイクを向けて音声を高感度で取得するなど任意の方法が考えられる。
上述の実施例ではロボット10を取り巻く人間の集団状態を集団状態1‐12のいずれであるか推定するようにした。しかしながら、図16‐18に示すこの発明の他の実施例に従って、分類すべき集団状態をたとえば、「整然とした」状態または「雑然とした」状態の2種類だけとし、それによって種々の制御、たとえば、集団注意制御などに適用することも考えられる。ただし、「整然とした」状態とは、人々がロボットを中心にして集まり、かつ多くの人間にロボットが情報提供を行うのに適した状態をいい、「雑然とした」状態とは、人間がロボットを中心に集まっていない状態やロボットが人々に対して情報提供を行う上で適していない状態のことである。
2分類の実施例においても、基本的には、システムは図1に示す構成をとり、図3および図4に示すロボット10を用い、図2に示すように配置した多数の床センサを用いてロボットや人間の位置情報を取得する。そして、上述の方法と同様の方法でクラスタリングを行い、それによって種々の特徴量を求め、その特徴量をたとえば、SVM(Support Vector Machine)(Christianini, J., Shawe-Tylor, J.著(大北剛訳)「サポートベクターマシン入門」、共立出版2005)のような2状態分類器で上記2つの状態に分類する。ただし、この実施例では、SVMはコンピュータ14が持っているものとし、ロボット10はコンピュータ14が判別した2状態のデータを受け取り、集団注意制御などのように種々のサービスを人間に対して提供する。
図16を参照して、最初のステップS171でオペレータによる停止命令を検出しなければ、コンピュータ14は、続くステップS173において、ロボット10の位置情報を用いて床センサからロボット10の反応を消去する。これは床センサ18の反応点がロボットのものか人間のものかを混同しないようにするための工夫であるが、先の実施例と同様に、このステップを省略してもよい。
次のステップS175で、コンピュータ14は、先に図8を参照して詳細に説明したと同じ手法を用いて床センサに対する反応点をクラスタリングする。ただし、説明は繰り返さない。
続くステップS177で、コンピュータ14は、床センサの反応点数の割合FNを(9)式に従って、計算する。
[数9]
FN=m/n …(9)
ただし、nは床センサの総数(図2)であり、mは反応している点数である。
続くステップS179でコンピュータ14は、各クラスタC1-Ccを構成する反応点(要素)とロボット10との間の距離平均μi(i=1,…,c)を計算する。ただし、cはクラスタ数である。
ロボット10に対して集団が扇状に並んでいるときの模式図である図17に示す、クラスタAに属する反応点数をl(エル)としたとき、クラスタAに属する反応点をA1,…,Alとする。それぞれの反応点は先に説明したようにx-y座標で表される。反応点の座標をA1x,A1y,…,Alx,Alyとし、ロボット10の座標をRx,Ryとすると、ロボット10と反応点A1との距離Dist(A1)は(10)式で与えられる。
そして、クラスタAとロボット10との距離平均μAは、(11)式で算出できる。
次のステップS181で、コンピュータ14は、ステップS179で求めた距離平均の標準偏差σi(i=1,…,l)を、(12)式に従って計算する。つまり、クラスタAとロボットとの距離平均の標準偏差σAは(12)式で計算できる。
ついで、コンピュータ14は、ステップS183で、各クラスタの重心を計算する。ただし、前述のように重心データがクラスタデータに含まれている場合には、このステップS183を省略できる。クラスタAの重心を図17に示す。クラスタAの重心G(CA)は(13)式を使って計算される。
さらにコンピュータ14は、ステップS185で、ロボット10の正面方向と各クラスタの重心との角度θi(i=1,…,l)を計算する。角度θA(図17)は(14)式で与えられる直線の角度となる。
床センサの総反応点数mおよびクラスタ数C、ならびに上述の各ステップで計算したFN、距離平均μi、それの標準偏差σi、クラスタの重心Giおよび角度θiなどのすべてのデータは、そのつど、コンピュータ14のデータメモリ15b(図1)に特徴量を示すデータとして記憶され保持される。
したがって、図18のステップS191では、データメモリ15bからこれらのデータを取得することで、実行される。つまり、この実施例でSVMを用いて2分類判別モデルを作成するために、床センサの総反応点数m、クラスタ数C、クラスタを構成する反応点とロボットとの距離平均μi、それの標準偏差σi、クラスタの重心Gとロボット正面との角度θiの各特徴量を教師データとして用いる。距離平均、標準偏差、角度に関しては反応点が多い上位3つのクラスタに対してそれぞれ求めたため、特徴量は、計11個(=1+1+(3×3))である。
図17において、クラスタAを構成する反応点数l(エル)、1個目の反応点A1とロボットとの距離をDist(A1)とするとき、ロボットとクラスタAを構成するすべての反応点との距離平均μAは上述の(11)式で表される。そして、ロボットとクラスタAのすべての反応点との距離平均の標準偏差σAは、上述の(12)式で表される。ロボットの正面方向とクラスタAの重心との角度θAは図17に示すとおりである。
床センサの総反応点数とクラスタ数は、ロボットの周辺にどれだけ人間や集団が存在しているかを表していて、距離平均μ、標準偏差、角度θは、集団がロボットに対してどのような形になっており、またどのような位置関係にあるかを表している。これらの特徴量を教師データとして用いることで、2分類判別モデルを作成し、他の実施例での集団状態推定を行う。
発明者等の実験では、駅の構内に床センサを敷設し、その上にたとえば、図3に示すようなRobovie(商品名)のようなコミュニケーションロボットを置き、駅の利用者がロボットと自由に相互作用を行えるようにしておいた。
ロボットの周囲に存在する人々の集団状態を評定する者に対して映像を提示するために、6台のカメラでこの実験の様子を録画し、その映像、ロボットの位置、角度、床センサの出力などはすべてデータベース16(図1)に保存した。
実験では、ロボットの周囲に複数の人間が集まる状況が多数観察された。それらの状況の中には、人々がロボットの周囲に扇状に並ぶ場面や、人々が縦列に並ぶ場面が混在していた。
このような実験で取得したデータから、教師データを作成した。まず、録画した映像を観察し、ロボットと相互作用している人間が2秒以上静止している場面の切り出しを行った。切り出した177場面の映像を2人の評定者に提示し、「整然とした」か「雑然とした」のどちらかの状態に分類させた。評定者らには「整然とした」状態がロボットが情報提供を行う上で望ましい状態であることを予め伝えておいた。
2人の評定者の判断の一致度合いを測る尺度としてκ統計量を用いた。κ統計量は、一般に、2人の評定者間の一致度を測る尺度として用いられ、κ=0.40であれば中程度の、κ=0.60であればかなりの一致を示すとされている。実験を通じて算出したκ統計量は0.49であった。
評定者間で意見が異なった場面数は44であった。また、意見が一致した場面の中から特徴量を計算するに必要な床センサ出力が欠落していたものを省くと、「整然とした」状態の数が36、「雑然とした」状態の数が72であった。そのうち実験の1週目で獲得した18の「整然とした」状態と36の「雑然とした」状態とを教師データの作成に利用した。
教師データの作成には、上述の特徴量を用いるが、「雑然とした」状態の教師データ作成には、各場面における1秒分の床センサ出力を利用して特徴量を計算した。「整然とした」状態は「雑然とした」状態の半分(36に対する18)であることから、データ数を等しくするために、各場面における2秒分の床センサ出力を利用して特徴量を計算した。
また、床センサの出力をx軸方向、y軸方向、x-y軸方向にそれぞれ反転させることで、ダミーデータを作成した。これらの手順を経て、実験で用いた最終的な教師データの数は各状態ともに720となった。
判別モデルの性能を検証するためのテストデータには、実験の2週目で取得した計54データを用い、それらのデータに対して教師データ作成時と同様に、ダミーデータを作成することで、最終的なテストデータは各状態とも720になった。
SVMを用いて2状態判別モデルを作成するためのライブラリとして、LIBSVM(Chang, C,C., and Lin,C,J., “LIBSVM: Introduction and Benchmarks,” http://www.csie.ntu.edu.tw/cjlin/libsvm)を用いた。このライブラリは各種パラメータを変えることによって、判別モデルの性能を変化させることができる。そこで実験では、γ、Cost、Weightの3パラメータを表2に示す範囲内でそれぞれ変化させ、教師データに対する集団状態推定精度が平均で90%程度に収まるものを判別モデルとして採用した。判別率が100%になるパラメータも設定可能であるが、過学習による汎化性能の低下を防ぐために、そのモデルは利用しないこととした。
上述のようにして設計した2状態判別モデルによって教師データを判別した結果、「整然とした」状態を87.9%、「雑然とした」状態を93.2%の精度で推定することができた。この判別モデルのパラメータは、γ=2、Cost=100、Weight=2であった。
このような手順で作成したモデルによる教師データとテストデータの推定制度は、テストデータでは「整然とした」状態を84.6%、「雑然とした」状態を76.3%の精度で推定できた。
このようにして、図18のステップS193で、上述の2分類判別モデルを用いてそのときの特徴量から、「整然とした」状態か「雑然とした」状態か判別できる。そして、このような判別結果(集団状態データ)をコンピュータ14からロボット10に送信する。
そして、そのような集団状態データを受信したロボット10は、そのときの集団状態に応じて、たとえば集団注意制御の仕方など、その振る舞いを変更することができ、より円滑な集団との相互作用を実現できる。なお、集団注意制御の具体的な方法は任意で、ロボット10が音声やジェスチャで行なう場合の他、コンピュータ14や他の手段もしくは装置が他の媒体を用いて行なう場合も考えられる。また、同様に、このように推定した2つの状態に応じて、たとえばロボット10、コンピュータ14などによって上述のようなアクティブセンシングを施すことができる。
なお、上述の実施例ではいずれも、オブジェクトやその周囲の人間の位置データを取得するために床センサを用いた。床センサはオクルージョンや環境光の変化などの外乱による影響を受けないので安定した動作が期待できる点で優位であるが、その他に、部屋101の天井に設けた天井カメラで撮影した画像データからロボットや人間の位置を特定するようにしてもよく、パッシブタグを各人が持ち、部屋101内に分布して受信機を配置することによっても(あるいはその逆でも)、人間の位置を検出することができる。
さらに、実施例ではオブジェクトがコミュニケーションロボット10である場合について説明した。しかしながら、オブジェクトとしては、他に、たとえば博物館などでの展示物など、人間と同一平空間にありかつ人間の集団がその周囲に存在する可能性のある、任意の物、人などが考えられる。