図1を参照して、この実施例のサービス提供ロボットシステム100は、たとえばショッピングモールなどのように多様な人々が往来する空間(環境)で利用される。その空間の中では、ロボット10や人は任意に移動することができ、天井などの比較的高所には複数の距離画像センサ12が設けられている。
ロボット10は、相互作用指向のロボット(コミュニケーションロボット)であり、コミュニケーションの対象である人との間で、音声を含むコミュニケーション行動を実行する機能を備えている。また、ロボット10はコミュニケーションの一環として、イベント情報の告知、ショッピングモール内の店舗の宣伝や広告のようなサービスを人々に対して提供する。このロボット10は基本的には、後述する遠隔操作コンピュータ14(図2)から与えられる行動命令に基づいて行動するが、サービスを提供する上で必要であれば、ショッピングモール内を自律的に移動することもできる。
この実施例のサービス提供ロボットシステム100は、ショッピングモールに限らず、イベント会場、アトラクション会場などでも利用可能である。
なお、図1では簡単のため、人は1人しか示していないが、ショッピングモール内には通常多くの人々が存在する。さらには、ロボット10も1台しか示していないが、サービス提供ロボットシステム100は2台以上のロボット10を同時に制御することができる。
図2を参照して、サービス提供ロボットシステム100の遠隔操作用のコンピュータ14は、後に詳細に説明するが、一定時間(たとえば、1秒)毎に複数の距離画像センサ12によって、任意に移動する人の位置を検出すると共に、その人の向いている方向などを検出する。そのために、コンピュータ14は、距離画像センサ12からのセンサ出力を受ける。
コンピュータ14にはメモリ16、通信LANボード18が接続されると共に、発話コンテンツデータベース(DB)20も接続される。発話コンテンツデータベース20は、ロボット10が人に対して広告、宣伝などのサービスを提供する際に人に対して話しかけるときに必要な発話文および広告、宣伝などに必要な発話文を予め登録しておき、必要なとき、コンテンツ4が必要な発話文を読み出してロボット10に与える。
ただし、発話コンテンツデータベース20は、ロボット10に設けられていてもよい。その場合には、コンピュータ14は、ロボット10に対して、発話すべき発話文を指定する命令だけをロボット10に送ればよい。
距離画像センサ12は、赤外光またはレーザなどの光を照射し、対象物から反射した光(反射光)をCCDセンサなどの光学センサによって捉える。距離画像センサ12は、光が戻るまでの時間を画素ごとに計測したり、画像パターンの歪みを計測したりすることで、対象物までの実際の距離を測距する。実施例の距離画像センサ12には、ASUS(登録商標)社製のXtionと呼ばれる製品が採用されている。なお、他の実施例では、距離画像センサ12は、Microsoft(登録商標)社製のKinect(登録商標)センサ、パナソニック(登録商標)社製の3次元距離画像センサD−IMager(登録商標)などを使用することも可能である。この種のセンサは、3次元距離計測センサ、3Dスキャナなどと呼ばれる場合もある。
距離画像センサ12はそのレーザ走査面(スキャン面)の傾斜角を変化させながら計測することができ、そのため、1回の計測によって(最小傾斜角から最大傾斜角まで変化する期間に)、対象の3次元形状を計算することができる。また、対象が停止していても、その3次元形状を計算することができる(ただし、対象が動いていれば、多様な位置関係で計測が行えるので、3次元形状の計算精度が高まる点で好ましい)。
また、スキャン面の傾斜角がこのように変化することで、計測領域が拡がると共に、複数の対象が密集している状態でも、対象群を直上ないしその近傍から計測した計測データに基づいて1つ1つの対象に容易に分離することができる。そして、様々な傾斜角で計測した計測データに基づいて、分離した1つ1つの対象の3次元形状を精度よく計算することができる。
ここで、このように距離画像センサ12を利用する人追跡システムを実現するコンピュータ14の処理手順を説明するが、詳しい処理手順は、本件出願人の出願に係る、同時係属中の特開2012‐215555号に説明されているので、その記述を引用することとし、ここでは概要を説明するにとどめる。
コンピュータ14は、まず、各距離画像センサ12からの計測データに基づいて、対象の状態(たとえば位置,移動方向,3次元形状および姿勢など)をパーティクルフィルタでリアルタイムに推定する状態推定処理を実行する。
この実施例では、たとえば図8に示すように、人の上方に設置した3次元距離画像センサ12からの検出データを、頭の高さおよび肩の高さの2つの高さでクラスタリング処理を行い、クラスタの最も長い線(主成分分析)から肩ラインを計算する。そして、肩ラインの上にあるクラスタを頭とし、頭の重心位置をその人の位置(x,y)とした。ただし、肩のクラスタのやや前方に頭のクラスタが存在するというモデルに従った。そして、肩ラインと直交する前方を人の体の向き(移動方向θ)とする。
ただし、このようなクラスタリングから人の位置や移動方向を抽出する方法は、一例として、上述の特開2012‐215555号や論文D. Brscic, T. Kanda, T. Ikeda, T. Miyashita, Person tracking in large public spaces using 3D range sensors, IEEE Transactions on Human-Machine Systems, Vol. 43, No. 6, pp. 522-534, 2013に詳しく説明されているので、ここでは詳細は省略する。
なお、パーティクルフィルタは、よく知られているように、予測および観測を繰り返すことによって現在の対象の状態を推定する時系列フィルタの一種であり、具体的には、現状態から起こりうる次状態を多数のパーティクルに見立てて、観測された状態との間の尤度(類似度)をパーティクル毎に求め、全パーティクルを尤度に応じて加重平均した結果を現在の対象の状態であると推定する。そして、重みに従う新たなパーティクルを発生させ、同様の処理を繰り返すことで、対象の状態を逐次推定することができる。
状態推定処理では、1つ1つの対象の状態を専用のパーティクルフィルタで推定する。したがって、たとえば10個の対象が検出されている状態では、10個のパーティクルフィルタが並列に動作しており、別の対象が検出されると、11個目のパーティクルフィルタが新たに生成される。
コンピュータ14はまた、上記のような状態推定処理と並列的に、各対象の状態に基づいて、各対象が「1人」であるかグループに属するかを推定するグループ推定処理、および各対象が個別に行う行動(たとえば店舗や案内板を見る行動)を推定する個別行動推定処理をも実行する。
そして、各種の推定処理が完了した後、コンピュータ14はさらに、推定結果に基づいてグループ行動を解析する。このグループ行動解析処理では、各グループを「友達同士」、「家族連れ」、「カップル」などのカテゴリに分類したり、個別行動情報をグループ毎に解析してグループ行動情報を作成したり、グループ行動情報をカテゴリ毎に解析してグループ行動パターンたとえば、友人同士が特定の店舗や案内板に注目したり、家族連れが特定の通路を通ったり、といった行動パターン)情報を作成したりする。
ただし、この実施例では、後に図7を参照して詳細に説明するように、上述のようにして計測したデータの、現時刻tからΔt秒前までの、全ての人の位置情報(x,y,z)、履歴に基づく移動速度vや移動方向θを利用して、グループ認識処理を実行する。
図2に示すメモリ16はROM、HDDおよびRAMなどを含む。ROMおよびHDDには、コンピュータ14の動作を制御するための制御プログラムが予め記憶される。また、RAMは、コンピュータ14のワークメモリやバッファメモリとして用いられる。
通信LANボード18は、たとえばDSPで構成され、コンピュータ14から与えられた送信データを無線通信モジュール22に与え、無線通信モジュール22は送信データを、ネットワーク24を介してロボット10に送信する。たとえば、送信データは、ロボット10の自律移動に必要なデータや、サービスを提供ために必要なデータおよびロボット10に指示する行動命令の信号(コマンド)などである。また、通信LANボード18は、無線通信モジュール22を介してデータを受信し、受信したデータをコンピュータ14に与える。
なお、コンピュータ14は、ディスプレイなどの出力装置と、マウスおよびキーボードなどの入力装置とを備えていてもよい。
ここで、図2および図3を参照して、この発明の理解に必要な範囲でロボット10の構成について説明する。ロボット10は台車30を含み、台車30の下面にはロボット10を自律移動させる2つの車輪32および1つの従輪34が設けられる。2つの車輪32は車輪モータ36(図3参照)によってそれぞれ独立に駆動され、台車30すなわちロボット10を前後左右の任意方向に動かすことができる。
台車30の上には、円柱形のセンサ取り付けパネル38が設けられ、このセンサ取り付けパネル38には、多数の距離センサ40が取り付けられる。これらの距離センサ40は、たとえば赤外線や超音波などを用いてロボット10の周囲の物体(人や障害物など)との距離を測定するものである。
センサ取り付けパネル38の上には、胴体42が直立して設けられる。また、胴体42の前方中央上部(人の胸に相当する位置)には、上述した距離センサ40がさらに設けられ、ロボット10の前方の主として人との距離を計測する。また、胴体42には、その側面側上端部のほぼ中央から伸びる支柱44が設けられ、支柱44の上には、全方位カメラ46が設けられる。全方位カメラ46は、ロボット10の周囲を撮影するものであり、後述する眼カメラ70とは区別される。この全方位カメラ46としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。
胴体42の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節48Rおよび肩関節48Lによって、上腕50Rおよび上腕50Lが設けられる。図示は省略するが、肩関節48Rおよび肩関節48Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節48Rは、直交する3軸のそれぞれの軸廻りにおいて上腕50Rの角度を制御できる。肩関節48Rの或る軸(ヨー軸)は、上腕50Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節48Lは、直交する3軸のそれぞれの軸廻りにおいて上腕50Lの角度を制御できる。肩関節48Lの或る軸(ヨー軸)は、上腕50Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
また、上腕50Rおよび上腕50Lのそれぞれの先端には、肘関節52Rおよび肘関節52Lが設けられる。図示は省略するが、肘関節52Rおよび肘関節52Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕54Rおよび前腕54Lの角度を制御できる。
前腕54Rおよび前腕54Lのそれぞれの先端には、人の手に相当するハンド56Rおよびハンド56Lがそれぞれ設けられる。これらのハンド56Rおよび56Lは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット10は、ハンド56Rおよび56Lを用いて物体を把持または挟持することができる。ただし、ハンド56R、56Lの形状は実施例の形状に限らず、人の手に酷似した形状や機能を持たせるようにしてもよい。
また、図示は省略するが、台車30の前面、肩関節48Rと肩関節48Lとを含む肩に相当する部位、上腕50R、上腕50L、前腕54R、前腕54L、ハンド56Rおよびハンド56Lには、それぞれ、接触センサ58(図3で包括的に示す)が設けられる。台車30の前面の接触センサ58は、台車30への人間16や他の障害物の接触を検知する。したがって、ロボット10は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪32の駆動を停止してロボット10の移動を急停止させることができる。また、その他の接触センサ58は、当該各部位に触れたかどうかを検知する。
胴体42の中央上部(人の首に相当する位置)には首関節60が設けられ、さらにその上には頭部62が設けられる。図示は省略するが、首関節60は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット10の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部62には、人の口に相当する位置に、スピーカ64が設けられる。スピーカ64は、ロボット10が、それの周辺の人に対して音声によってコミュニケーションをとるために用いられる。また、人の耳に相当する位置には、マイク66Rおよびマイク66Lが設けられる。以下、右のマイク66Rと左のマイク66Lとをまとめてマイク66ということがある。マイク66は、周囲の音、とりわけコミュニケーションを実行する対象である人間16の音声を取り込む。さらに、人の目に相当する位置には、右の眼球部68Rおよび左の眼球部68Lが設けられる。右の眼球部68Rおよび左の眼球部68Lは、それぞれ右の眼カメラ70Rおよび左の眼カメラ70Lを含む。以下、右の眼球部68Rと左の眼球部68Lとをまとめて眼球部68ということがある。また、右の眼カメラ70Rと左の眼カメラ70Lとをまとめて眼カメラ70ということがある。
眼カメラ70は、ロボット10に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット10は、この眼カメラ70からの映像信号によって、人の左右両目のそれぞれの視線方向(ベクトル)を検出する。
また、眼カメラ70は、上述した全方位カメラ46と同様のカメラを用いることができる。たとえば、眼カメラ70は、眼球部68内に固定され、眼球部68は、眼球支持部(図示せず)を介して頭部62内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部62の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部62の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部68ないし眼カメラ70の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ64、マイク66および眼カメラ70の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット10は、車輪32の独立2軸駆動、肩関節48の3自由度(左右で6自由度)、肘関節52の1自由度(左右で2自由度)、首関節60の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
図3はロボット10の電気的な構成を示すブロック図である。この図3を参照して、ロボット10は、CPU80を含む。CPU80は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス82を介して、メモリ84、モータ制御ボード86、センサ入力/出力ボード88および音声入力/出力ボード90に接続される。
メモリ84は、図示は省略をするが、ROM、HDDおよびRAMを含む。ROMおよびHDDには、後述の各種プログラムが予め記憶される。
モータ制御ボード86は、たとえばDSPで構成され、各腕や首関節60および眼球部68などの各軸モータの駆動を制御する。すなわち、モータ制御ボード86は、CPU80からの制御データを受け、右眼球部68Rの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「右眼球モータ92」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、左眼球部68Lの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「左眼球モータ94」と示す)の回転角度を制御する。
また、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Rの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「右腕モータ96」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Lの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「左腕モータ98」と示す)の回転角度を制御する。
さらに、モータ制御ボード86は、CPU80からの制御データを受け、首関節60の直交する3軸のそれぞれの角度を制御する3つのモータ(図3では、まとめて「頭部モータ100」と示す)の回転角度を制御する。そして、モータ制御ボード86は、CPU80からの制御データを受け、車輪32を駆動する2つのモータ(図3では、まとめて「車輪モータ36」と示す)の回転角度を制御する。
モータ制御ボード86にはさらにハンドアクチュエータ108が結合され、モータ制御ボード86は、CPU80からの制御データを受け、ハンド56R、56Lの開閉を制御する。
センサ入力/出力ボード88は、モータ制御ボード86と同様に、DSPで構成され、各センサからの信号を取り込んでCPU80に与える。すなわち、距離センサ40のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード88を通じてCPU80に入力される。また、全方位カメラ46からの映像信号が、必要に応じてセンサ入力/出力ボード88で所定の処理を施してからCPU80に入力される。眼カメラ70からの映像信号も、同様にして、CPU80に入力される。また、上述した複数の接触センサ58(図3では、まとめて「接触センサ58」と示す)からの信号がセンサ入力/出力ボード88を介してCPU80に与えられる。音声入力/出力ボード90もまた、同様に、DSPで構成され、CPU80から与えられる音声合成データに従った音声または声がスピーカ64から出力される。また、マイク66からの音声入力が、音声入力/出力ボード90を介してCPU80に与えられる。
また、CPU80は、バス82を介して通信LANボード102に接続される。通信LANボード102は、たとえばDSPで構成され、CPU80から与えられた送信データを無線通信モジュール104に与え、無線通信モジュール104は送信データを、ネットワークを介してサーバ(図示せず)等に送信する。また、通信LANボード102は、無線通信モジュール104を介してデータを受信し、受信したデータをCPU80に与える。
図5は図2に示すコンピュータ14におけるメモリ16のメモリマップの一例を示す図解図であり、メモリ16はプログラム記憶領域202およびデータ記憶領域204を含む。プログラム記憶領域202には、上で説明した特開2012‐215555号が開示している計測プログラム206が記憶される。プログラム記憶領域202はさらに、図7に詳細に示すグループ認識プログラム208および図6に詳しく示すサービス提供プログラム210を含む。ただし、ループ認識プログラム208は、図10に示す、グループ認識プログラムをチューニングするチューニングプログラムも含む。
データ記憶領域204には、計測データバッファ212が設けられる。計測データバッファ210には、上で説明したような人追跡システムによる計測結果、各対象の状態や属性/プロファイルを示す情報であり、状態としての位置、移動方向、3次元形状および姿勢、ならびに属性/プロファイルとしての身長、性別および大人/子供の区別がストアされる。ただし、グループ認識は、上述のグループ認識プログラム208で実行し、その結果がグループデータ214として、データ記憶領域204に記憶される。グループデータ214は、人の識別番号idのペア(id1,id2,)とグループかどうかを示すグループフラグ(図示せず)が格納される。もし、人id1とid2が同一のグループの場合、グループデータ(id1,id2,true(「1」))がグループデータ214として格納され、もし、人id1とid3が同一グループでない場合、(id1,id3,false(「0」))がグループデータ214として格納される。
なお、地図データ216は、このサービス提供ロボットシステム100が適用される場所、イベント会場、ショッピングセンタなどの商業施設などの地図であり、ロボット10や人の位置を判別するためなどに使用される。
なお、データ記憶領域204には、図8で示す3次元形状モデルデータなどが記憶されるが、ここでは一例として、特開2012‐215555号を引用することによって、省略する。
図6を参照して、サービス提供処理の最初のステップS1では、コンピュータ14は、図5に示す計測データバッファ210から、その時刻における、すべての人の位置情報(id,x,y,z)を取得する。ただし、idは各人の識別番号であり、xはx座標、yはy座標であり、zは人の背の高さである。なお、図1のショッピングモールにおいて、紙面の幅方向がx軸(x座標)であり、紙面の奥行方向がY軸(y座標)である。
次のステップS3において、コンピュータ14は、ステップS1で取得した各人の位置情報に含まれる高さ情報zに基づいて、各人が大人か子供か判別する。ただし、このプログラムでは一例としてz情報が「130cm」未満の数値を示している人は「子供」と判定する。ただし、大人/子供の判定には他のパラメータを、高さ情報zとともに、または高さ情報zに代えて、採用してもよい。
続くステップS7でコンピュータ14は、グループを同定する。つまり、各人の位置情報に基づいて同じグループに属する人のidを1つのグループに纏める。なお、計測データバッファ210(図5)に、計測結果のデータとしてグループ情報が記憶されている場合には、このステップS7は省略してもよいが、この実施例では、先に説明したように、図7に示すグループ認識サブルーチンを実行することによって、グループを認識する。
ここで、図7を参照してグループ認識処理を説明する。図7の最初のステップS21では、計測データバッファ212(図5)から、人追跡システムで計測し、取得した、現時刻tからΔt秒前までの、全ての人id(id=人の識別番号)の位置情報(図8の×印の位置)x,y、人の高さz、人の移動速度vおよび人の移動方向θを取得する。
その後、ステップS23で、コンピュータ14は、グループを初期化する。つまり、すべての人を別のグループとして設定、要素数が「1」の集合{pid}を形成する。ただし、pidは、集合に含まれる人pのidを示す。
次いで、ステップS25で、コンピュータ14は、各人p1の半径5m以内にいる人の平均密度D(p)を計算する。この平均密度D(p)は、Δt秒間に人p1を中心とした半径5mの範囲内に存在する人の数である。平均密度G(p)が小さいほどグループを形成している可能性が高いので、後述のステップS35では、この数値を使ってペア(p1,p2)が同じグループかどうか判定する。
ステップS27‐S33では、コンピュータ14は、各人のペア(p1,p2)の位置情報(x,y)を使って、そのペアを形成している各人p1およびp2の、移動軌跡の類似度SimTraj(p1,p2)、移動方向の類似度Simθ(p1,p2)の平均、移動速度の類似度SimV(p1,p2)の平均、ペア間の人々の距離D(p1,p2)の平均を計算する。
移動軌跡が類似しているということは、同じグループである可能性が高いので、後述のステップS35では、この数値SimTraj(p1,p2)を使ってペア(p1,p2)が同じグループかどうか判定することとした。つまり、従来のグループ認識で考慮されていない移動軌跡の類似度SimTraj(p1,p2)を第1パラメータとして用いることが、この実施例の特徴の1つである。
発明者等の実験によれば、グループどうしの振る舞いは、単に近くで同じ移動をしているだけではなく、たとえば、あるグループメンバが先行し、他のメンバがその後ろを追従する、といった、追従現象(たとえば、男性が先を歩き、女性がその後ろを追いかけるなど)も存在する。発明者等は、そうした追従現象時では、(たとえ回りにスペースがあっても)この2人は、ほぼ同じ場所を通ることを確認している。
この実施例において移動軌跡の類似度をグループ認識のパラメータとして採用する理由は、この追従現象をグループ認識に取り込むことである。
ただし、この移動軌跡の類似度は、一方で、周囲の密度Dがあまり高い場所(通路狭い通路なと)では、必ずしも正しい認識結果を出さないことがある。そこで、この実施例では、ステップS25で計算する平均密度D(p)を利用する。
このように、移動軌跡の類似性は、グループの認識特に追従現象を認識するのに多大に機能するが、上述のように各人の周囲の平均密度D(p)によって認識結果が影響を受ける。
そこで、この実施例では、さらに移動方向の類似度等を、グループ認識のパラメータとして採用する。
すなわち、移動方向が類似しているということは、同じグループである可能性が高いので、後述のステップS35では、第2パラメータである数値Simθ(p1,p2)を使ってペア(p1,p2)が同じグループかどうか判定する。同様の理由で、後述のステップS35では、第3パラメータである移動速度の類似度SimV(p1,p2)、さらには第4パラメータである平均移動距離AvgD(p1,p2)の数値を使ってペア(p1,p2)が同じグループかどうか判定する。
ただし、これらの第2‐第4パラメータは、従来のグループ認識方法においても使われることがある。それは、或る程度の時間(たとえば、5秒間)、或る程度近くで、或る程度同じ方向で、或る程度似た速度で移動している人どうしは、グループである、という考えに基づいている。
なお、第2‐第4パラメータは、すべてが利用される必要はなく、そのうちの少なくとも1つが、前述の第1パラメータ(移動軌跡の類似度)と共に用いられればよい。
そして、ステップS35でコンピュータ14は、たとえばSVM(サポートベクタマシン:support vector machine)等の学習機に上記で計算した、SimTraj(p1,p2)、Simθ(p1,p2)、SimV(p1,p2)、AvgD(p1,p2)を投入して、ペア(p1,p2)が同じグループに含まれるかどうか判定する。ただし、学習機による他、グループを形成するかどうかの確率の計算には、計算テーブルの利用、数式のモデル化が考えられる。
なお、ステップS35では、移動軌跡の類似度SimTraj(p1,p2)が所定の閾値を超えて、2人の移動軌跡が非類似である場合、そのことだけで2は別のグループに属するという判定を行ってもよい。つまり、移動軌跡の類似度SimTraj(p1,p2)に最も大きい重み(weight)を付与しておき、まず、移動軌跡の類似度SimTraj(p1,p2)に基づいて同一グループかどうか判定し、その結果同一グループであると認識したペアについて、上記の第2パラメータ‐第4パラメータを用いて、同一グループかどうか判定するようにしてもよい。
そして、ステップS35で同一グループを形成すると判定したPgroup(p1,p2)が同一グループに含まれる場合、p1およびp2の集合を結合する。
このようにして、図9で示すようなグループが認定される。図9に示すように、Pgroup(p1,p2)が同一グループと判定されたペアは、直線で結ばれる。また、破線で囲まれた領域が同一のグループとして認識される。このようなグループとそれを構成する構成員および構成員の属性(大人、子供など)がグループデータとして、図5に示すデータ記憶領域204に記憶される。
なお、上述の説明では、平均密度G(p)、移動軌跡の類似度SimTraj(p1,p2)、移動方向の類似度Simθ(p1,p2)、移動速度の類似度SimV(p1,p2)、平均移動距離AvgD(p1,p2)を、たとえばSVMのような判定器に投入したが、これらの数値を全部使用する必要はなく、必要な1つ以上の数値を用いてグループを認識することができる。特に、移動軌跡の類似度SimTraj(p1,p2)、移動方向の類似度Simθ(p1,p2)、移動速度の類似度SimV(p1,p2)あるいは平均移動距離AvgD(p1,p2)のような時系列的な類似性に基づいて、ペア(p1,p2)が同じグループかどうか判定すればよい。
このようにして、グループと各グループに属する人を特定した後、ステップS7で、コンピュータ14は、図5のグループデータ214を参照して、グループ構成の認識処理を行う。つまり、グループ毎に、含まれている大人と子供の情報(ステップS3)から、構成員ラベルを判定して、そのグループに大人と子供が含まれている場合「家族連れ」、グループがすべて大人の場合「大人のみ」、グループがすべて子供の場合「子供のみ」と分類する。
コンピュータ14は、ステップS9において、各人の位置情報を参照して、ロボット10が話しかけられる範囲(たとえば半径2‐20mの範囲)内に人が存在するかどうか判断する。
このステップS9で“NO”が判断されれば、先のステップS1に戻り、“YES”なら、コンピュータ14は、次のステップS11を実行して、たとえばロボット10に最も近い人のような、ロボット10が話しかける対象を、選択する。
そして、ステップS13で、たとえば図10に示すような、先のステップS7で認識したそのグループの属性に適合する(ふさわしい)発話コンテンツを、発話コンテンツデータベース20から選択し、ステップS15でその発話コンテンツに従って発話する。
たとえば、構成員がすべて大人であるグループの人に話かける場合、アルコール類の割引情報をコンテンツとして発話する。構成員が家族連れであるグループの人に話かける場合、ファミリーレストランの割引情報をコンテンツとして発話する。構成員がすべて子供であるグループの人に話かける場合、おもちゃ屋さんのイベント情報をコンテンツとして発話する。グループがカップルである場合、たとえばケーキ屋のペア招待券の情報をコンテンツとして発話する。
ただし、コンテンツを提供する発火条件としては、グループの属性だけでなく、特定の時間や、特定の場所なども発火条件として加味することも考えられる。
さらに、提供するサービスも、発話コンテンツに従った発話だけでなく、ロボットの手足を使って表現するコンテンツ、連携する機器(たとえば、ディスプレイ等)を使って費用減するコンテンツがあってもよい。
さらに、提供するサービスとしては、店舗や商品の割引券やクーポンを配るようなサービスがあってもよい。この場合、ロボット10にプリンタ(図示せず)を搭載し、ロボット10がその場で割引券やクーポンを印刷して配るようにすることも考えられる。
この実施例では、グループの属性に合ったサービスを提供するので、サービス提供の成功率が高く、サービスを効率的に提供することができる。
なお、図9のGroup3のように、要素数が1の場合、すなわちグループを構成していない人に対しても、その人が大人か、子供か、男性か、女性か、などの属性に応じてコンテンツを選択して提供することもできる。
図11は、図7に示すグループ認識処理が正しくグループを認識するかどうかパラメータをチューニングするための動作を示すフロー図である。
このチューニング処理の最初のステップS41では、コンピュータ14は、チューニング用のデータセットから、Δt秒間のすべての人の位置情報(id,x,y,z)および移動情報(v,θ)を取得する。
このチューニング用のデータセットは、人位置計測システムの結果のデータにグループ関係のラベルの有無を付加したデータで、別途データベースとして準備したものである。位置情報(t,id,x,y,z,v,θ)が記載された移動軌跡データベース(計測データ212に相当する)と、グループラベルデータベース(グループデータ214に相当する)で構成されている。グループデータ214は、前述のように、idのペアとグループ情報(フラグ)の3つのデータを含む。
その後ステップS43‐S51では、先に説明した図7のステップS25‐S33と同様の処理を実行する。
そして、ステップS53において、各人のペア(p1,p2)が同じグループに含まれるか、含まれないかを示すクラス情報Cを読み出す。クラス情報C=0が、ペア(p1,p2)が別グループであることを示し、C=1が同じグループであることを示す。
そして、ステップS55で、たとえばSVMへ各数値SimTraj(p1,p2)、Simθ(p1,p2)、SimV(p1,p2)、AvgD(p1,p2)を投入した際、クラス情報Cを予測率が最も高くなるように、SVMのパラメータをチューニングする。
それによって、図7のグループ認識処理において、正しくグループ認識を行えるようになる。
詳しく説明すると、SVMのような学習器では、通常、学習用のパラメータ(SVMの場合、認識方法を決定するカーネル関数の種類(線形、ガウシアン関数)やそれらの基本パラメータなど)が複数存在する。そして、学習用のパラメータを決定した後、学習用データと正解ラベルを与えることで、認識率が最も高くなるよう内部変数の調整(=学習)を行う。しかしながら、学習パラメータ毎に認識率に違いがでるため、最も高い認識率を示す数字を探す必要があり、そのような作業を「チューニング」と呼ぶ。
さらには、過学習を避けるための作業も実施するが、その点はこの発明に係る点ではなくかつ当該分野ではよく知られていることなので、ここではこれ以上の説明は省略する。
なお、この発明に利用できるコミニュケーションロボットは、図3および図4の実施例で説明したロボット10に限定されるものではない。
さらに、ロボット10の周囲の人の位置や姿勢などを検出するための人追跡システムも、実施例で説明したシステムに限定されるものではない。他の構成の人追跡システムが利用されてもよい。
さらに、実施例では遠隔操作コンピュータ14がロボット10に命令を与えてサービスを提供させたが、コンピュータ14に代わって、ロボット10たとえば図4のCPU80が計測プログラム206、グループ認識プログラム208および/またはサービス提供プログラム210(図5)を実行するようにしてもよい。