図1を参照して、この実施例の移動予測装置10は、LRF12a,12bなどを含む数台のLRFを有する。LRF12a,12bは、人が任意に移動することができる空間(場所または環境)に設置される。人が任意に行動する場所は、会社のフロア、博物館、ショッピングモールまたはアトラクション会場などであり、LRF12a,12bは様々な場所に設置される。
移動予測装置10は、一定時間(たとえば、1秒)毎にLRF12a,12bによって、任意に移動する人の位置を検出し、検出された位置のデータを記憶する。また、移動予測装置10は、記憶された位置データに基づいて、人が移動することで到達する位置を予測する。そして、移動予測装置10は、ネットワーク100を介してロボット14と無線通信を行い、ロボット14の行動を制御する。そのため、移動予測装置10は、ロボット制御装置として機能することもある。
位置が検出された人には、検出された順番に人IDが付与される。たとえば、最初に検出された人にはID「001」が付与され、次に検出された人にはID「002」が付与される。
ロボット14は、移動予測装置10が付与する行動命令に基づいて動作する。また、ロボット14は、相互作用指向のロボット(コミュニケーションロボット)でもあり、人間のようなコミュニケーションの対象(コミュニケーション対象)との間で、身振り手振りのような身体動作および音声の少なくとも一方を含むコミュニケーション行動を実行する機能を備えている。また、ロボット14はコミュニケーションの一環として、人に対して道案内や、情報提供などのサービスを行う。
なお、図1では簡単のため、1人しか図示していないが、移動予測装置10はさらに多くの人の位置を検出し、位置データを記憶することができる。さらに、ロボット14も同様に1台しか示していないが、移動予測装置10は2台以上のロボット14を同時に管理することができる。
図2は移動予測装置10の電気的な構成を示すブロック図である。図2を参照して、移動予測装置10は、LRF12a−12f、プロセッサ16などを含む。プロセッサ16は、マイクロコンピュータ或いはCPUと呼ばれることもある。また、プロセッサ16には、先述したLRF12aおよびLRF12bに加えて、LRF12c,LRF12d,LRF12eおよびLRF12fも接続される。なお、LRF12a−12fを区別する必要がない場合、「LRF12」と言う。
また、プロセッサ16にはメモリ18、LCD20、入力装置22、通信LANボード24が接続されると共に、移動軌跡データベース(DB:Database)28、移動方向分布DB30、経由点DB32および移動遷移確率モデルDB34も接続される。
LRF12は、レーザーを照射し、物体(人も含む)に反射して戻ってくるまでの時間から当該物体までの距離を計測するものである。たとえば、トランスミッタ(図示せず)から照射したレーザーを回転ミラー(図示せず)で反射させて、前方を扇状に一定角度(たとえば、0.5度)ずつスキャンする。ここで、LRF12としては、SICK社製のレーザーレンジファインダ(型式 LMS200)を用いることができる。このレーザーレンジファインダを用いた場合には、距離8mを±15mm程度の誤差で計測可能である。
メモリ18は、図示は省略をするが、ROM,HDDおよびRAMを含む。ROMおよびHDDには、移動予測装置10の動作を制御するための制御プログラムが予め記憶される。また、RAMは、プロセッサ16のワークメモリやバッファメモリとして用いられる。
LCD20は移動予測装置10の管理用GUIなどを表示する。入力装置22はマウスおよびキーボードなどを含む。そして、管理者は、LCD20に表示されるGUIを確認しながら、入力装置22のキーボードやマウスを利用して、コマンドなどを入力する。
通信LANボード24は、たとえばDSPで構成され、プロセッサ16から与えられた送信データを無線通信装置26に与え、無線通信装置26は送信データを、ネットワーク100を介してロボット14に送信する。たとえば、送信データは、ロボット14に指示する行動命令の信号(コマンド)などである。また、通信LANボード24は、無線通信装置26を介してデータを受信し、受信したデータをプロセッサ16に与える。
移動軌跡DB28には、LRF12によって検出された人の移動軌跡が保存される。移動方向分布DB30には、人の移動軌跡に基づく移動方向が保存される。経由点DB32には、上記した移動方向に基づく経由点の情報が保存される。移動遷移確率モデルDB34には、上記した移動軌跡および経由点に基づいて構築された移動遷移確率モデルが保存される。なお、移動方向分布DB30、経由点DB32および移動遷移確率モデルDB34に保存される各データについては後述するため、ここでの詳細な説明は省略する。
図3はこの実施例のロボット14の外観を示す正面図である。図3を参照して、ロボット14は台車40を含み、台車40の下面にはロボット14を自律移動させる2つの車輪42および1つの従輪44が設けられる。2つの車輪42は車輪モータ46(図4参照)によってそれぞれ独立に駆動され、台車40すなわちロボット14を前後左右の任意方向に動かすことができる。また、従輪44は車輪42を補助する補助輪である。したがって、ロボット14は、配置された空間内を自律制御によって移動可能である。
台車40の上には、円柱形のセンサ取り付けパネル48が設けられ、このセンサ取り付けパネル48には、多数の赤外線距離センサ50が取り付けられる。これらの赤外線距離センサ50は、センサ取り付けパネル48すなわちロボット14の周囲の物体(人間や障害物など)との距離を測定するものである。
なお、この実施例では、距離センサとして、赤外線距離センサを用いるようにしてあるが、赤外線距離センサに代えて、小型のLRFや、超音波距離センサおよびミリ波レーダなどを用いることもできる。
センサ取り付けパネル48の上には、胴体52が直立するように設けられる。また、胴体52の前方中央上部(人の胸に相当する位置)には、上述した赤外線距離センサ50がさらに設けられ、ロボット14の前方の主として人間との距離を計測する。また、胴体52には、その側面側上端部のほぼ中央から伸びる支柱54が設けられ、支柱54の上には、全方位カメラ56が設けられる。全方位カメラ56は、ロボット14の周囲を撮影するものであり、後述する眼カメラ80とは区別される。この全方位カメラ56としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ50および全方位カメラ56の設置位置は、当該部位に限定されず適宜変更され得る。
胴体52の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節58Rおよび肩関節58Lによって、上腕60Rおよび上腕60Lが設けられる。図示は省略するが、肩関節58Rおよび肩関節58Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節58Rは、直交する3軸のそれぞれの軸廻りにおいて上腕60Rの角度を制御できる。肩関節58Rの或る軸(ヨー軸)は、上腕60Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節58Lは、直交する3軸のそれぞれの軸廻りにおいて上腕60Lの角度を制御できる。肩関節58Lの或る軸(ヨー軸)は、上腕60Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
また、上腕60Rおよび上腕60Lのそれぞれの先端には、肘関節62Rおよび肘関節62Lが設けられる。図示は省略するが、肘関節62Rおよび肘関節62Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕64Rおよび前腕64Lの角度を制御できる。
前腕64Rおよび前腕64Lのそれぞれの先端には、人の手に相当する球体66Rおよび球体66Lがそれぞれ固定的に設けられる。ただし、指や掌の機能が必要な場合には、人間の手の形をした「手」を用いることも可能である。また、図示は省略するが、台車40の前面、肩関節58Rと肩関節58Lとを含む肩に相当する部位、上腕60R、上腕60L、前腕64R、前腕64L、球体66Rおよび球体66Lには、それぞれ、接触センサ68(図4で包括的に示す)が設けられる。台車40の前面の接触センサ68は、台車40への人間や他の障害物の接触を検知する。したがって、ロボット14は、自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪42の駆動を停止してロボット14の移動を急停止させることができる。また、その他の接触センサ68は、当該各部位に触れたかどうかを検知する。なお、接触センサ68の設置位置は、当該部位に限定されず、適宜な位置(人の胸、腹、脇、背中および腰に相当する位置)に設けられてもよい。
胴体52の中央上部(人の首に相当する位置)には首関節70が設けられ、さらにその上には頭部72が設けられる。図示は省略するが、首関節70は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット14の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部72には、人の口に相当する位置に、スピーカ74が設けられる。スピーカ74は、ロボット14が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、人の耳に相当する位置には、マイク76Rおよびマイク76Lが設けられる。以下、右のマイク76Rと左のマイク76Lとをまとめてマイク76と言うことがある。マイク76は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。さらに、人の目に相当する位置には、眼球部78Rおよび眼球部78Lが設けられる。眼球部78Rおよび眼球部78Lは、それぞれ眼カメラ80Rおよび眼カメラ80Lを含む。以下、右の眼球部78Rと左の眼球部78Lとをまとめて眼球部78と言うことがある。また、右の眼カメラ80Rと左の眼カメラ80Lとをまとめて眼カメラ80と言うことがある。
眼カメラ80は、ロボット14に接近した人間の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。また、眼カメラ80は、上述した全方位カメラ56と同様のカメラを用いることができる。たとえば、眼カメラ80は、眼球部78内に固定され、眼球部78は、眼球支持部(図示せず)を介して頭部72内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部72の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部72の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部78ないし眼カメラ80の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ74、マイク76および眼カメラ80の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット14は、車輪42の独立2軸駆動、肩関節58の3自由度(左右で6自由度)、肘関節62の1自由度(左右で2自由度)、首関節70の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
図4はロボット14の電気的な構成を示すブロック図である。この図4を参照して、ロボット14は、プロセッサ90を含む。プロセッサ90は、マイクロコンピュータとも呼ばれ、バス92を介して、メモリ94、モータ制御ボード96、センサ入力/出力ボード98および音声入力/出力ボード110に接続される。
メモリ94は、図示は省略をするが、ROMおよびRAMを含む。ROMには、ロボット14の動作を制御するための制御プログラムが予め記憶される。たとえば、各センサの出力(センサ情報)を検知するための検知プログラムや、外部コンピュータ(移動予測装置10)との間で必要なデータやコマンドを送受信するための通信プログラムなどが記録される。また、RAMは、プロセッサ90のワークメモリやバッファメモリとして用いられる。
モータ制御ボード96は、たとえばDSPで構成され、各腕や首関節70および眼球部78などの各軸モータの駆動を制御する。すなわち、モータ制御ボード96は、プロセッサ90からの制御データを受け、右眼球部78Rの2軸のそれぞれの角度を制御する2つのモータ(図4では、まとめて「右眼球モータ112」と示す)の回転角度を制御する。同様に、モータ制御ボード96は、プロセッサ90からの制御データを受け、左眼球部78Lの2軸のそれぞれの角度を制御する2つのモータ(図4では、まとめて「左眼球モータ114」と示す)の回転角度を制御する。
また、モータ制御ボード96は、プロセッサ90からの制御データを受け、肩関節58Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節62Rの角度を制御する1つのモータとの計4つのモータ(図4では、まとめて「右腕モータ116」と示す)の回転角度を制御する。同様に、モータ制御ボード96は、プロセッサ90からの制御データを受け、肩関節58Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節62Lの角度を制御する1つのモータとの計4つのモータ(図4では、まとめて「左腕モータ118」と示す)の回転角度を制御する。
さらに、モータ制御ボード96は、プロセッサ90からの制御データを受け、首関節70の直交する3軸のそれぞれの角度を制御する3つのモータ(図4では、まとめて「頭部モータ120」と示す)の回転角度を制御する。そして、モータ制御ボード96は、プロセッサ90からの制御データを受け、車輪42を駆動する2つのモータ(図4では、まとめて「車輪モータ46」と示す)の回転角度を制御する。なお、この実施例では、車輪モータ46を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ46と同様に直流モータを用いるようにしてもよい。また、ロボット14の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更されてもよい。たとえば、他の実施例では、エアアクチュエータなどが適用されてもよい。
センサ入力/出力ボード98は、モータ制御ボード96と同様に、DSPで構成され、各センサからの信号を取り込んでプロセッサ90に与える。すなわち、赤外線距離センサ50のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード98を通じてプロセッサ90に入力される。また、全方位カメラ56からの映像信号が、必要に応じてセンサ入力/出力ボード98で所定の処理を施してからプロセッサ90に入力される。眼カメラ80からの映像信号も、同様に、プロセッサ90に入力される。また、上述した複数の接触センサ68(図4では、まとめて「接触センサ68」と示す)からの信号がセンサ入力/出力ボード98を介してプロセッサ90に与えられる。音声入力/出力ボード110もまた、同様に、DSPで構成され、プロセッサ90から与えられる音声合成データに従った音声または声がスピーカ74から出力される。また、マイク76からの音声入力が、音声入力/出力ボード110を介してプロセッサ90に与えられる。
また、プロセッサ90は、バス92を介して通信LANボード122に接続される。通信LANボード122は、たとえばDSPで構成され、プロセッサ90から与えられた送信データを無線通信装置124に与え、無線通信装置124は送信データを、ネットワーク200を介して外部コンピュータ(移動予測装置10)に送信する。また、通信LANボード122は、無線通信装置124を介してデータを受信し、受信したデータをプロセッサ90に与える。たとえば、送信データとしては、全方位カメラ56および眼カメラ80によって撮影された周囲の映像データなどである。
次に、LRF12について詳細に説明する。図5を参照して、LRF12の計測範囲は、半径R(R≒8m)の半円形状(扇形)で示される。つまり、LRF12は、その正面方向を中心とした場合に、左右90度の方向を所定の距離以内で計測可能である。
また、使用しているレーザーは、日本工業規格 JIS C 6802「レーザー製品の安全基準」におけるクラス1レーザーであり、人の眼に対して影響を及ぼさない安全なレベルである。また、この実施例では、LRF12のサンプリングレートを37Hzとした。これは、歩行するなどにより移動する人の位置を連続して検出するためである。
さらに、LRF12の各々は、計測範囲が重なるように配置され、図示は省略するが、床面から約90cmの高さに固定される。この高さは、被験者の胴体と腕(両腕)とを検出可能とするためであり、たとえば、日本人の成人の平均身長から算出される。したがって、移動予測装置10を設ける場所(地域ないし国)や被験者の年齢ないし年代(たとえば、子供,大人)に応じて、LRF12を固定する高さを適宜変更するようにしてよい。なお、本実施例では、設定されるLRF12は6台としたが、2台以上であれば、任意の台数のLRF12が設置されてもよい。
このような構成の移動予測装置10では、プロセッサ16がLRF12からの出力(距離データ)に基づいて、パーティクルフィルタを用いて、人の現在位置の変化を推定する。そして、推定された位置の変化が移動軌跡として記録される。
たとえば、図6を参照して、LRF12a,12bは互いに向い合せに設置され、LRF12a,12bの計測範囲が重なる範囲は斜線が付されている。斜線の範囲は検出領域とされ、この検出領域内では人の位置が連続的に検出される。そして、連続的に検出された位置の変化が移動軌跡となる。つまり、移動軌跡データは、複数の位置データから構成される。なお、検出領域にはx−y座標が設定され、人の位置データは(x,y)の座標で示すことができる。
図7はLRF12が設置される場所を示す地図を示す図解図である。図7を参照して、地図が対応する場所は或るショッピングモールである。また、地図の中央部には通路が設けられており、その周囲には店舗およびエレベータなどが存在する。また、LRF12は通路に設けられており、ショッピングモールの通路の一部が検出領域となる。そのため、移動軌跡DB28には、ショッピングモールの通路を行き交う人々の移動軌跡が保存される。
ここで、本実施例では保存された人々の移動軌跡を分析することで、人の短期的な移動の目標となる経由点を設定し、その経由点に基づいて人の移動を予測する。また、経由点は、検出領域に設けられる複数の部分領域毎に、人々の移動を分析することで設定することができる。
図8を参照して、部分領域は、一辺が50cmの正方形(グリッド)であり、ショッピングモールの通路の一部に設けられる。部分領域を通過する複数の人の移動軌跡は、たとえば図9のように示すことができ、数1に示す式によって、各移動軌跡の移動方向を求めることができる。なお、数1では、「θ」は部分領域を通過したときの角度(図10参照)を示し、「x(t)」は人が部分領域の中心に最も接近した時刻tにおける人の位置ベクトルを示し、「arg(x)」はその位置ベクトルの角度を求める関数である。また、「Δ」は短い時間(たとえば、4秒)であり、歩行による移動軌跡のゆらぎや、前から来た人の避けるための短時間の方向変化の影響を抑え、その人が目指している方向を精度よく算出するために用いられる。
[数1]
θ=arg(x(t+Δ)−x(t))
たとえば、数1の式を利用して、或る部分領域における移動方向を算出すると、図10のようになる。図10を参照して、領域では、右側を0度とし、上側を90度、左側を180度、下側を270度、0度と同じ位置を360度とする。つまり、部分領域内では、右側を基準として反時計方向に大きくなるように角度が設定される。また、図10に示す移動方向の分布では、部分領域内の各黒丸は人が部分領域から出て行った方向、つまり人の移動方向を示す。また、図10から分かるように、或る部分領域では、人々の移動方向は一方向に集中せず、いくつかの方向に分散している。
なお、数1における関数「arg(x)」は、本実施例用に定義された特別な関数ではない。つまり、関数「arg(x)」は、ベクトルの角度を算出するための一般的な関数である。そのため、他の実施例では、関数「arg(x)」に代えて、ベクトルの角度を求めることができる一般的な関数を利用することができる。
次に、図11は図10に示した複数の移動方向をグラフ化したものである。このグラフでは、横軸は角度を表し、縦軸は同一の角度の移動方向が出現(算出)した回数を示す。そのため、グラフ中の実線は、移動方向が算出された回数の変化を示す。そして、本実施例では、このグラフを利用して、或る部分領域を通過する人の主な移動方向を求める。
具体的には、移動方向分布を混合ガウス分布でモデル化することで、移動方向分布に現れる複数のピーク(主な移動方向)の中心を求める。また、図11では、モデル化された混合ガウス分布は点線で示され、各ピークと対応する横軸にはバツ印が付与される。これにより、或る部分領域を通過する人々は、主に約130度、約225度、約315度の方向に通過していることが分かる。
なお、混合ガウス分布によるモデル化については、「I. S. Dhillon and S. Sra, “Modeling Data using Directional Distributions,” Technical report of University of Texas, TR-03-062, 2003」に記述されているため、詳細な説明は省略する。
図12は、或る部分領域において、上述の処理によって求めた移動方向(ピーク)のうち、上位3つの移動方向を示す。図12を参照して、最も多い移動方向(約315度)は破線矢印で示され、2番目に多い移動方向(約225度)は点線矢印で示され、3番目に多い移動方向(約130度)は実線矢印で示される。そして、他の部分領域についても同様に、主な移動方向を求め、その結果が移動方向分布DB30に保存される。
図13(A)は、移動方向分布DB30に保存される、主な移動方向のうち最も多い移動方向だけを各部分領域に示した移動方向地図である。また、図13(B)は、移動方向地図における、領域Aを拡大したものである。図13(A)を参照して、通路が細くなっている所では、おおよそ同じ方向に人が移動していることが分かる。また、図13(B)から分かるように、通路の大きさが変化している領域Aでは、移動方向がさまざまな方向を指している。
続いて、移動方向分布DB30に保存された移動方向から経由点の求め方について説明する。まず、初期設定として、所定の数の経由点が、乱数を用いてランダムに設定される。たとえば、約500平方メートルのショッピングモールでは、30個の経由点がランダムに設定される。
次に、部分領域毎に求められた移動方向に対して、1つの経由点を対応付ける。具体的には、部分領域の中心oから移動方向を延長した直線に対して経由点から垂線をおろし、垂線が最も短くなる経由点を移動方向に対応付ける。ここで、垂線をおろす経由点は、部分領域の中心oから所定距離(たとえば、10m)以内であり、部分領域の中心oから見て、経由点の方向と移動方向とのなす角度が所定角度(たとえば、10度)以内のものに限られる。
たとえば、図14(A)を参照して、或る部分領域の中心oにおいて、経由点v1および経由点v2が上記した条件に適合する場合、移動方向ベクトルYを延長した直線に対して、経由点v1および経由点v2から垂線d1および垂線d2がおろされる。このとき、垂線d1の方が、垂線d2よりも短いため、移動方向ベクトルYには経由点v1が対応付けられる。
全ての移動方向に対して経由点の対応付けが終わると、各経由点の位置を更新する。具体的には、或る経由点において、或る経由点を対応付けた移動方向を延長する直線に対して、或る経由点から垂線ベクトルをおろす。次に、或る経由点から下ろされた各垂線ベクトルを合成して合成ベクトルを求め、或る経由点を合成のベクトルの向きに移動させる。図14(B)を参照して、たとえば、或る経由点vにおいて移動方向ベクトルY1,Y2,Y3が対応付けられている場合、移動方向ベクトルY1,Y2,Y3を延長する直線に対して、3本の垂線ベクトルが或る経由点vからおろされる。そして、3本の垂線ベクトルを合成した合成ベクトルrに基づいて、経由点vの位置が経由点v’の位置に移動(更新)される。
そして、ランダムに設定した全ての経由点の位置が変化しなくなるまで、上述の処理を全ての経由点に対して繰り返す。その結果、経由点の位置が変化しなくなれば、各経由点の位置が経由点DB32に保存される。
図15(A)は、経由点DB32に保存される経由点を、移動方向地図に配置した経由点地図である。図15(A)を参照して、ほとんどの経由点は検出領域内に設定されるが、一部の経由点は、検出領域外(店舗内)に設定される。また、図15(B)を参照して、領域Aのように、移動方向の変化が多い場所には、各経由点が多く設定される傾向がある。
このように、各経由点の位置を、人の移動に基づいて設定することで、予測の精度を高くすることができる。
続いて、設定された経由点を利用して人の移動を予測する場合、まず、経由点を遷移(移動)する順番に基づいて移動遷移確率モデルを構築する。そして、構築したモデルを利用して、予測移動時間T後に、人が到達する位置(到達位置)を予測する。
まず、移動遷移確率モデルを構築するために、移動軌跡DB28に保存された移動軌跡に基づいて、人々が経由点を通過する順序および通過する確率を求める。ここで、本実施例では、経由点から一定の距離以内に入ったときに、人がその経由点を通過したと判断される。ただし、他の実施例では、経由点の通過の判断は、移動軌跡の移動方向と経由点の方向とのなす角度を利用し、経由点との距離が所定距離以内であり、かつなす角度が所定角度以内の場合に通過とみなしてもよい。
また、2つの経由点間の移動遷移確率pを数2に示す式に基づいて算出し、3つの経由点間の移動遷移確率pを数3に示す式に基づいて算出する。なお、数2では、「C(i,j)」は保存された移動軌跡の中で、経由点viを通過し、続けて経由点vjを通過した人の数であり、「C(i)」は経由点viを通過した人の数である。また、数3では、「C(i,j,k)」は経由点vi,vj,vkの順番で通過した人の数である。つまり、数2に示す式は、経由点viを通過した人のうち、続けて経由点vjを通過した人の割合を表す。また、数3に示す式は、経由点viおよび経由点vjを続けて通過した人のうち、さらに経由点vkを通過した人の割合を表す。
ここで、数2、数3によって移動遷移確率pを求める際、データの不足によりC(i,j),C(i,j,k)が十分に得られない問題が生じる。この問題に対して、本実施例では、バックオフ・スムージングによって、移動遷移確率p(k|i,j)の算出時に、移動遷移確率p(i|j)を用いて補間し、移動遷移確率p(i|j)の算出時に移動遷移確率p(i)を用いて補間を行う。なお、このバックオフ・スムージングについては、「北研二 「確率的言語モデル」 東京大学出版会 1999」に記述されているため、詳細な説明は省略する。
また、3つの経由点の組み合わせに対応する移動遷移確率p(k|i,j)を、他の経由点についても算出する。そして、その算出結果が移動遷移確率モデルとして、移動遷移確率モデルDB34に保存される。また、本実施例では、構築された移動遷移確率モデルを利用することで、人が到達する位置をより正確に予測することができるようになる。
次に、移動遷移確率モデルDB34に保存された移動遷移確率モデルを用いて、予測移動時間Tにおける到達位置を予測する。この予測移動時間Tとは、予測する時点までに対象者が移動するときにかかる時間のことである。また、到達位置を予測する際には、移動遷移確率モデルに加えて、予測の対象となる人(対象者)の現在位置および移動方向も用いられる。これにより、予測移動時間Tにおける到達位置が予測される。
まず、移動予測処理では、現在の経由点と直前に通過した経由点とに基づいて、経由点リストLが初期化される。この経由点リストLでは、人の移動を表す複数の経由点を含む経由点系列に、そのときの移動時間tおよびその経由点系列の移動遷移確率pが関連付けられている。次に、この経由点リストLの経由点系列に対して、使用者が次に目指す経由点(次の経由点)を含む新たな経由点系列を追加し、経由点系列の移動時間tおよび移動遷移確率pを更新する。このときに、経由点系列の移動遷移確率pが閾値以下であれば、その経由点系列が経由点リストLに追加されることはない。
さらに、更新された結果、経由点系列の移動時間tが予測移動時間Tを超えた場合には、その移動時間tを関連付けた経由点系列は、更新結果データに移される。そして、経由点リストLに含まれる経由点系列が全て移されれば、更新結果データに基づいて、同一の経由点に到達する経由点系列の移動遷移確率pが統合され、予測移動時間Tにおける到達確率Pが算出される。そして、その到達確率Pに基づいて、人の到達地点が予測されると、ロボット14の行動が確定される。なお、以下の説明では、予測移動時間Tを「4.0秒」とし、閾値を「0.1%」として、移動予測処理について説明する。
図16(A)は、或る4つの経由点vを結ぶ経路を示し、図16(B)はそれらの経路を移動するためにかかる時間を示す。図16(A)を参照して、経由点vbは対象者が直前に通過した経由点vであり、経由点vpは現在通過している経由点vである。経由点v1,v2は、対象者が今後通過する可能性がある経由点vである。また、各経由点vを結ぶ経路は、経路vb−vp、経路vb−v1、経路vb−v2、経路vp−v1、経路vp−v2および経路v1−v2である。そして、経路vb−vpはすでに移動しているため実線矢印で示される。図16(B)を参照して、経由点vを結ぶ各経路の距離および人の平均移動速度spに基づいて、各経路の時間が算出される。経路の距離は、2つの経由点の座標に三平方の定理を用いて算出される。また、平均移動速度spは、LRF12を用いて記録される移動軌跡に基づいて、対象者の最近の数秒間の移動速度から算出される。ただし、人の移動軌跡が記録されていない場合は、移動軌跡DB28に保存された移動軌跡から、同じ場所を移動する人の平均的な速度を算出してもよい。
そして、対象者が経由点vpにいる時点で移動予測処理が実行されると、経由点リストLは図17に示すように初期化される。図17を参照して、経由点リストLには、経由点系列が「vb,vp」と記録され、それに対応する移動時間および移動遷移確率が「0.0秒」および「100%」と記録される。なお、以下の説明では、経由点リストLにおける、1つの経由点系列と、それに対応する移動時間および移動遷移確率とをまとめて「要素e」と言うことにする。
続いて、到達確率Pを算出する前に行われる、経由点リストLについて説明する。まず、現在の経由点vpから遷移可能な経由点vに、経由点v1,v2が含まれるのは勿論のこと、対象者が停止したり、戻ったりする可能性もあるため経由点vp,vbも含まれる。そのため、図17に示す経由点リストLに対して新たに追加(更新)される要素e(経由点系列)の候補は、「vb,vp,vb」、「vb,vp,vp」、「vb,vp,v2」および「vb,vp,v1」の4つとなる。
また、これらの候補の経由点系列に関連付けられる、移動遷移確率pは数4に示す数式と一致する移動遷移確率モデルが移動遷移確率モデルDB34から読み出される。なお、数4では、「Nv」は次の経由点であり、「Fv」は経由点系列における最後の経由点であり、「Fv−1」は最後の経由点の一つ前の経由点である。
[数4]
p=(Nv|Fv−1,Fv)
たとえば、「Fv」を経由点vpとし、「Fv−1」は経由点vbとし、「Nv」を経由点v2とした場合、数4に示す式は、「移動遷移確率p=(経由点v2|経由点vb,経由点vp)」となる。そして、移動遷移確率モデルDB34からは、経由点vpおよび経由点vbを通過しさらに、経由点v2を通過する移動遷移確率モデル(20.0%)が読み出される。
同様にして、他の候補についても移動遷移確率pを求めた結果は、図18(A)のようになる。図18(A)を参照して、前の経由点vbに戻ることを示す経由点系列(vb,vp,vb)には、移動遷移確率pとして「0.5%」が関連付けられる。今の経由点vpに留まることを示す経由点系列(vb,vp,vp)には、移動遷移確率pとして「0.8%」が関連付けられる。次の経由点v1に進むことを示す経由点系列(vb,vp,v1)には、移動遷移確率pとして「70.0%」が関連付けられる。同様に、次の経由点v2に進むことを示す経由点系列(vb,vp,v2)には、移動遷移確率pとして「20.0%」が関連付けられる。
そして、移動遷移確率pが閾値未満の候補を省いて、経由点リストLが更新され、その更新結果が図18(B)のようになる。ここで、更新により追加された要素eにおいて、移動遷移確率pは、元となった要素eの移動遷移確率pと、移動遷移確率モデルによって求められた移動遷移確率pとの積になる。また、移動時間tは数5に示す数式に基づいて算出される。なお、数5の「Bt」は、前回の経由点系列に関連付けられた移動時間tであり、「|Nv−Fv|」は、最後の経由点と次の経由点との距離である。
たとえば、「Fv」を経由点vpとし、「Fv−1」は経由点vbとし、「Nv」を経由点v2とした場合、前回の移動時間tは図17に示すように「0.0秒」であるため、数5に示す式は、「4.0秒=0.0+(|経由点v2−経由点vp|)/平均移動速度sp」となる。また、元となる要素の移動遷移確率pは「1.00(初期値)」であるため、ここでは候補として算出された移動遷移確率pがそのまま、経由点リストLに記録されることになる。
移動時間tがそれぞれ算出された後、移動時間tが予測移動時間Tを超える要素eについては、更新結果データに移される。ただし、図18(B)に示す経由点リストLには条件を満たす要素eが含まれていないため、経由点リストLの内容は変化しない。
続いて、図18(B)に示す経由点リストLに対して新たに追加される要素eの候補は、図18(C)のようになる。つまり、経由点v1,v2の次に通過される可能性がある経由点vを含む経由点系列が候補として挙げられる。そして、各候補に関連付けられる移動遷移確率pに基づいて経由点リストLを更新した結果を図18(D)に示す。このとき、更新された経由点リストLの要素e1、要素e3および要素e4に含まれる移動時間tは、予測移動時間T(4.0秒)より大きいため、図19(A)に示す更新結果データに移される。そのため、図18(D)に示す経由点リストLには、要素e2だけが残る。
たとえば、図19(A)を参照して、図18(D)の経由点リストLの要素eが移された更新結果データでは、要素e1が更新結果データの要素E1とされ、要素e3が要素E2とされ、要素e4が要素E3とされる。
次に、図18(D)に示す経由点リストLに対して新たに追加される要素eの候補は、図18(E)のようになる。この場合、閾値を超える移動遷移確率pと対応する候補は、「vb,vp,v1,vp,v2」だけとなり、経由点リストLが更新された結果は図18(F)のようになる。そして、更新された経由点リストLの要素e1は、移動時間tが予測移動時間Tより大きい。そのため、この要素e1も更新結果データに移される。その結果、経由点リストLは何も記録されていない状態になり、更新結果データは図19(B)のようになる。つまり、新たな要素E4として、図18(F)の要素e1が更新結果データに移され、経由点リストLを更新する処理も終了する。
続いて、移動予測処理は、経由点リストLが更新されなくなると、更新結果データに含まれる移動遷移確率が、経由点v毎に統合される。具体的には、最後の経由点Fvが同一の経由点vを含む、経由点系列に関連付けられた移動遷移確率pの総和が到達確率P(v)として算出される。たとえば、図19(B)の更新データでは、要素E2と要素E4とは、最後の経由点Fvとして同一の経由点v2を含む。そのため、図20に示す到達確率データでは、到達確率P(v2)として、要素E2と要素E4との移動遷移確率pの総和(42.2.%)が算出される。また、要素E1および要素E3それぞれの最後の経由点Fvは、他の要素Eに含まれていない。そのため、要素E1および要素E3それぞれの移動遷移確率pが、そのまま到達確率P(vb)=「2.5%」および到達確率P(vp)=「1.2%」とされる。なお、ここでは経由点v1を最後の経由点Fvとする要素Eは存在しないため、到達確率P(v1)は「0.0%」となる。
このように、本実施例では、各経由点を結ぶ複数の移動遷移確率pを統合して到達確率Pを算出することで、算出される到達確率Pの信頼性を高めている。
また、本実施例では、各経由点vへの到達確率Pに基づいて、人が到達する位置が予測される。たとえば、図20に示す到達確率データに基づいて人(対象者)の到達位置を予測する場合、到達確率P(v2)が最も大きいため、約4.0秒後には経由点v2付近に対象者が存在すると予測される。
そして、この予測結果を用いて、ロボット14が経由点v2の近くに移動するように、行動命令がロボット14に発行される。つまり、管理者は、予測された人の到達位置に合わせて、ロボット14を動作させることができる。
なお、上述の説明で用いた、予測移動時間Tと閾値とは一例であり、任意に変化させることができる。たとえば、図15(A)に示すように経由点を設定した場合は、予測移動時間Tは「10秒」とし、閾値は「10−10」としてもよい。
また、空間内に多くの歩行者が存在する場合、対象者は自身に向かってくる他の歩行者との衝突を回避するために方向を変化させることが多い。そこで、他の実施例では、他の歩行者の存在が対象者(自分)に与える影響を表現した「Social Force Model(SFM)」を用いて次の経由点の候補を推測してもよい。たとえば、現在の空間内に存在する歩行者の位置と移動方向をSFMに与えると、他の歩行者が与える影響を取り除いたうえで、それぞれの歩行者が真に向かおうとしている方向(希望する移動方向)が推定される。そして、他の実施例では、SFMによって対象者が希望する移動方向を推定することで、次の経由点の候補が推測される。これにより、次の候補を総当たりで検索する必要がなくなるため、処理時間を短くすることができる。ここで、SFMとその利用方法の詳細については、「F. Zanlungo, T. Ikeda and T. Kanda, "Social force model with explicit collision prediction," EPL, 93 (2011) 68005.」に記述されているため、詳細な説明は省略する。
また、その他の実施例では、より単純な処理として、現在の移動方向の延長線上に近いものが選ばれてもよい。
図21は図2に示す移動予測装置10におけるメモリ18のメモリマップの一例を示す図解図である。図21で示すように、メモリ18はプログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、移動予測装置10を動作させるためのプログラムとして、移動軌跡蓄積プログラム310、移動方向算出プログラム312、経由点設定プログラム314、移動遷移確率モデル構築プログラム316、移動予測プログラム318およびロボット制御プログラム320などが記憶される。また、移動予測プログラム318は、メインプログラム318a、更新プログラム318b、追加プログラム318cおよび統合プログラム318dを含む。
移動軌跡蓄積プログラム310は、人の位置を連続して検出することで得た移動軌跡を、移動軌跡DB28に保存するためのプログラムである。移動方向算出プログラム312は、移動軌跡DB28に保存された移動軌跡に基づいて、部分領域毎に主な移動方向を算出し、その算出結果を移動方向分布DB30に保存するためのプログラムである。経由点設定プログラム314は、移動方向分布DB30に保存された移動方向に基づいて、検出領域およびその周辺に経由点を設定するためのプログラムである。移動遷移確率モデル構築プログラム316は、移動軌跡および経由点に基づいて移動遷移確率pを算出し、その算出結果を移動遷移確率モデルとして移動遷移確率モデルDB34に保存するためのプログラムである。
移動予測プログラム318は、経由点v毎に到達確率Pを算出するためのプログラムである。移動予測プログラム318のメインプログラム318aは、到達確率Pを算出するための経由点リストLを作成および更新するためのプログラムである。更新プログラム318bは経由点リストLを更新するためのプログラムである。追加プログラム318cは、経由点リストLに新しい要素を追加するかを判断するためのプログラムである。統合プログラム318dは、経由点リストLを更新することで得られた更新結果データ336に基づいて、各経由点への到達確率Pを算出するためのプログラムである。
ロボット制御プログラム320は、ロボット14の行動を確定し、行動命令を発行するためのプログラムである。
なお、図示は省略するが、移動予測装置10を動作させるためのプログラムには、LRF12によって得た距離を位置(座標)データに変換するためのプログラムなども含まれる。
図22を参照して、データ記憶領域304には、更新バッファ330および予測移動時間バッファ332などが設けられる。また、データ記憶領域304には、経由点リストデータ334、更新結果データ336および到達確率データ338などが記憶される。
更新バッファ330には、経由点リストLに追加される要素eが一時的に記憶される。予測移動時間バッファ332には、閾値として利用される予測移動時間が一時的に記憶される。経由点リストデータ334は、たとえば、図17や図18(B)のように構成されたデータである。更新結果データ336は、図19(A)のように構成されたデータである。また、到達確率データ338は図20のように構成されたデータであり、各経由点への到達確率Pを含む。
なお、図示は省略するが、データ記憶領域304には、経由点vの総数(たとえば、30個)を示すデータおよび各経由点vの座標を格納する配列(集合)データが記憶されると共に、様々な計算の結果を一時的に格納するバッファや、移動予測装置10の動作に必要な他のカウンタやフラグなども設けられる。
以下、移動予測装置10のプロセッサ16によって実行されるプログラムについて説明する。図23のフロー図は移動軌跡蓄積プログラム310による処理を示し、図24のフロー図は移動方向算出プログラム312による処理を示し、図25は経由点設定プログラム314による処理を示し、図26は移動遷移確率モデル構築プログラム316による処理を示し、図27−図30は移動予測プログラム318に含まれる各サブルーチンによる処理を示し、図31はロボット制御プログラム320による処理を示す。
図23は移動軌跡蓄積処理のフロー図である。移動予測装置10の電源がオンにされると、移動予測装置10のプロセッサ16は、ステップS1で現在時刻を記録し、ステップS3で人の位置情報が検出される。つまり、ステップS1で記録された時刻に対応して、検出領域内に存在する人々の位置座標を検出する。続いて、ステップS5では、現在時刻と位置情報とを移動軌跡DB28に保存し、ステップS1に戻る。つまり、ステップS1−S5の処理が繰り返されると、移動軌跡DB28には検出領域内の人々の位置が繰り返して保存される。なお、このようにして繰り返して保存された人々の位置の変化は、移動軌跡として読み出される。また、ステップS5の処理を実行するプロセッサ16は記録手段として機能する。
図24は移動方向算出処理のフロー図である。たとえば、移動予測装置10の管理者によって移動方向を算出する操作が行われると、プロセッサ16はステップS11で部分領域を設定する。たとえば、LRF12が設けられるショッピングモールの通路において、図8に示すように複数の部分領域が設定される。続いて、ステップS13では、各部分領域を通過する移動軌跡の移動方向を算出する。たとえば、数1に示す数式に基づいて、或る部分領域内を通過する人々の移動方向が算出される。続いて、ステップS15では、部分領域毎に移動方向分布を作成する。たとえば、算出された移動方向から、図11に示す移動方向分布(実線)を作成する。続いて、ステップS17では、移動方向の分布を混合ガウス分布でモデル化する。たとえば、ステップS15で作成された移動方向分布をモデル化することで、図11に示す混合ガウス分布(点線)を得る。ステップS19では、各部分領域の主な移動方向を判別する。たとえば、図11に示す混合ガウス分布から、主な移動方向を示すピークを求める。なお、ステップS19の処理を実行するプロセッサ16は判別手段として機能する。
続いて、ステップS21では、各部分領域の主な移動方向を、移動方向分布DB30に保存し、移動方向算出処理を終了する。たとえば、図11に示すガウス分布が作成されている場合、最も出現回数が多い315度が主な移動方向として移動方向分布DB30に保存される。
図25は経由点設定処理のフロー図である。たとえば、移動方向算出処理が終了すると、経由点設定処理が実行される。経由点設定処理が実行されると、プロセッサ16はステップS31で所定の数の経由点vをランダムに設定する。たとえば、乱数を発生させる関数に基づいて、30個の経由点vをランダムに設定する。なお、ステップS31の処理を実行するプロセッサ16は経由点設定手段として機能する。
続いて、ステップS33では、各移動方向を経由点vに対応付ける。つまり、移動方向分布DB30に保存されている各移動方向を、対応する部分領域の中心oから所定距離(たとえば、10m)以内であり、部分領域の中心oから見た経由点vの方向と移動方向とのなす角度が所定角度(たとえば、10度)以内の経由点vに対応付ける。また、複数の経由点vがこの条件を満たす場合には、図14(A)に示したように、垂線dの長さが最も短くなる経由点vが対応付けられる。なお、ステップS33の処理を実行するプロセッサ16は対応付け手段として機能する。
続いて、ステップS35では、経由点vの更新処理を実行する。つまり、図14(B)に示すように、各経由点vに対応付けられている移動方向に基づいて合成ベクトルを求め、その合成ベクトルに基づいて経由点vの位置を更新(移動)する。なお、ステップS35の処理を実行するプロセッサ16は位置更新手段として機能する。
続いて、ステップS37では、経由点vの位置が変化しなくなったか否かを判断する。つまり、ステップS35の処理で各経由点vの位置を更新したとしても、経由点の位置が変化しなかったか否かを判断する。また、具体的な処理としては、ステップS35の処理を実行する前に各経由点の座標を全て記録しておき、ステップS35の処理を実行した後に、各経由点の座標が変化したかを判断する。
ステップS37で“NO”であれば、つまり更新によって経由点vの位置が変化していれば、ステップS35に戻る。一方、ステップS37で“YES”であれば、つまり更新しても経由点vの位置が変化していなければ、各経由点vの座標を経由点DB32に保存して、経由点設定処理を終了する。
なお、他の実施例のステップS37では、経由点vの変化量が小さければ、“YES”と判断するようにしてもよい。たとえば、更新された結果、経由点vの位置の変化が10cm以下であれば、ステップS37では“YES”と判断されてもよい。
図26は、移動遷移確率モデル構築処理のフロー図である。たとえば、経由点設定処理が終了すると、移動遷移確率モデル構築処理が実行される。また、処理が実行されるとプロセッサ16はステップS41で各移動軌跡が経由点vを通過した順序を算出する。なお、ステップS41の処理を実行するプロセッサ16は順序算出手段として機能する。
続いて、ステップS43では、算出された各順序に基づいて、移動遷移確率pを算出する。つまり、上述した数2および数3の数式に基づいて、移動遷移確率p(k|i,j)を算出する。続いて、ステップS45では、算出結果を、移動遷移確率モデルとして移動遷移確率モデルDB34に保存し、移動遷移確率モデル構築処理を終了する。なお、ステップS43,S45の処理を実行するプロセッサ16は構築手段として機能する。
図27は移動予測プログラム318のサブルーチンであるメイン処理のフロー図である。たとえば、移動予測装置10の管理者が人の移動を予測するコマンドを入力すると、プロセッサ16はステップS61で、予測移動時間Tを設定する。たとえば、プロセッサ16は、移動予測装置10のLCD20に予測移動時間Tの入力を促すGUIを表示する。そして、管理者が入力した結果が、予測移動時間Tとして予測移動時間バッファ332に格納される。また、他の実施例では、予め決められた予測移動時間Tを示すデータをメモリ18に記憶させておき、そのデータを予測移動時間バッファ332に格納してもよい。なお、ステップS61の処理を実行するプロセッサ16は時間設定手段として機能する。
続いて、ステップS63では人の平均移動速度spを算出する。たとえば、上述したように、移動軌跡DB28に保存されている移動軌跡に基づいて、人の平均移動速度spが算出される。続いて、ステップS65で人が現在通過している経由点vpを特定し、ステップS67で人が直前に通過した経由点vbを特定する。つまり、移動軌跡DB28に記録されている、人の移動軌跡に基づいて経由点vpおよび経由点vbを特定する。
続いて、ステップS69では、経由点vp,vbに基づいて、経由点リストLを初期化する。つまり、経由点リストLが初期化されると、図17に示すように、経由点vp,vbを含む経由点系列に、「0.0秒」の移動時間tおよび「100%」の移動遷移確率pが関連付けられる。続いて、更新結果データ336を初期化する。たとえば、更新結果データ336が何も記録されていない状態にされる。
続いて、ステップS73では、経由点リストLに何も記録されていないか否かを判断する。つまり、経由点リストLが更新された結果、全ての要素eが更新結果データ336に移されたか否かを判断する。ステップS73で“NO”であれば、つまり経由点リストLに要素eが含まれていれば、ステップS75で更新処理を実行する。つまり、経由点リストLを更新するために、更新処理が実行される。そして、ステップS75の処理が終了すると、ステップS73に戻る。一方、ステップS73で“YES”であれば、つまり経由点リストLの要素eが全て更新結果データ336に移されれば、ステップS77で統合処理を実行する。そして、統合処理が終了すれば、メイン処理も終了する。なお、更新処理および統合処理の詳細については、後述するためここでの詳細な説明は省略する。
図28は移動予測プログラム318のサブルーチンである更新処理のフロー図である。メイン処理でステップS75の更新処理が実行されると、プロセッサ16はステップS91で、更新バッファ330を初期化する。つまり、更新バッファ330が、何も記憶されていない状態にされる。続いて、ステップS93では、経由点リストLに含まれる要素eの総数を変数Mに設定する。たとえば、図17に示す経由点リストLであれば変数Mには「1」が設定され、図18(B)に示す経由点リストLであれば変数Mには「2」が設定され、図18(D)に示す経由点リストLであれば変数Mには「4」が設定され、図18(F)に示す経由点リストLであれば変数Mには「1」が設定される。続いて、ステップS95では、要素eを識別する変数mを初期化する。たとえば、変数mには「1」が設定される。
続いて、ステップS97では、要素emの移動時間tは予測移動時間Tより大きいか否かを判断する。たとえば変数mが「1」であり、経由点リストLが図17の状態であれば、1行目の要素e1の移動時間tが予測移動時間Tよりも大きいか否かが判断される。ステップS97で“NO”であれば、つまり要素emの移動時間tが予測移動時間T以下であれば、ステップS99で追加処理が実行される。なお、追加処理については、図29のフロー図を用いて説明するため、ここでの詳細な説明は省略する。
また、たとえば経由点リストLが図18(D)の状態であり、変数mが「1」であれば、ステップS97で“YES”と判断され、ステップS101で更新結果データ336に、要素e1が移される。つまり、図18(D)の要素e1は、図19(A)に示す更新結果データの要素E1として移される。
続いて、ステップS103では、変数mをインクリメントする。つまり、他の要素eに対して、ステップS97−S101の処理を実行するために、変数mをインクリメントする。続いて、ステップS105で変数mが変数Mよりも大きいか否かを判断する。つまり、経由点リストLにおける全ての要素eに対して、ステップS99またはステップS101の処理が実行されたか否かを判断する。ステップS105で“NO”であれば、つまり全ての要素eに対してステップS99またはステップS101の処理が実行されていなければ、ステップS97に戻る。
一方、ステップS105で“YES”であれば、つまり全ての要素eに対して、上述の処理が実行されていれば、ステップS107で更新バッファ330の内容に基づいて、経由点リストLを更新する。たとえば、ステップS107の処理が実行されると、図17に示す経由点リストLが、図18(B)に示す経由点リストLとなる。そして、ステップS107の処理が終了すれば、プロセッサ16はメイン処理に戻る。なお、ステップS107の処理を実行するプロセッサ16は更新手段として機能する。
なお、他の実施例でSFMが利用される場合は、ステップS99の前に次の経由点を推定する処理が追加される。
図29は移動予測プログラム318のサブルーチンである追加処理のフロー図である。更新処理のステップS99が実行されると、ステップS121では、経由点vを識別する変数nを初期化する。たとえば、変数nには「1」が設定される。続いて、ステップS123では、次の経由点Nvnへの移動遷移確率pを読み出す。たとえば、上記更新処理において、たとえば変数mが「1」であり、経由点リストLが図17の状態であり、次の経由点Nvnが「v1」であれば、「p=(v1|vb,vp)」となる、移動遷移確率モデルが移動遷移確率モデルDB34から読み出される。なお、ステップS123の処理を実行するプロセッサ16は移動遷移確率算出手段として機能する。
続いて、ステップS125では、移動遷移確率pが閾値よりも小さいか否かを判断する。つまり、ステップS123で得られた移動遷移確率pが閾値より小さいか否かが判断される。ステップS125で“YES”であれば、たとえば図18(A)の2行目のように、移動遷移確率pが閾値よりも小さければ、ステップS129に進む。
一方、ステップS125で“NO”であれば、たとえば図18(A)の4行目のように、移動遷移確率pが閾値以上であれば、ステップS127で更新バッファ330に経由点Nvnを含む要素eを追加する。たとえば、図18(A)の4行目に対応する経由点系列において、移動時間tおよび移動遷移確率pが算出され、それらを含む要素eが更新バッファ330に追加される。なお、ステップS127の処理を実行するプロセッサ16は追加手段として機能する。
続いて、ステップS129では、変数nをインクリメントする。つまり、他の経由点vを次の経由点Nvとして、更新バッファ330に追加することができるかを判断するために、変数nはインクリメントされる。続いて、ステップS131では、変数nが経由点vの総数Nよりも大きいか否かを判断する。つまり、全ての経由点vに対して、ステップS123−S127の処理が実行されたか否かを判断する。ステップS131で“NO”であれば、つまり全ての経由点vに対して上述の処理が実行されていなければ、ステップS123に戻る。一方、ステップS131で“YES”であれば、つまり全ての経由点vに対して上述の処理が実行されていれば、追加処理を終了する。そして、プロセッサ16は更新処理に戻る。
図30は移動予測プログラム318のサブルーチンである統合処理のフロー図である。メイン処理のステップS77が実行されると、ステップS151では、到達確率データ338を初期化する。つまり、図20に示すように、各経由点vへの到達確率P(v)それぞれに、「0」を設定する。続いて、ステップS153では、更新結果データ336に含まれる要素Eの総数を変数Kに設定する。たとえば、図19(B)に示す行動結果データであれば、変数Kには「4」が設定される。続いて、ステップS155では、要素Eを識別する変数kを初期化する。たとえば、変数kには「1」が設定される。
続いて、ステップS157では、要素Ekに含まれる最後の経由点Fvを抽出する。たとえば、図19(B)に示す更新結果データにおいて、変数kが「4」であれば、最後の経由点Fvとして、経由点v2が抽出される。続いて、ステップS159では、到達確率P(Fv)に要素Ekの移動遷移確率pを足し込む。たとえば、上記したように、経由点vbが抽出された場合、図20に示す到達確率データにおいて、到達確率P(v2)に経由点v2の移動遷移確率p(1.6%)が足し込まれる。このとき、到達確率P(v2)が「40.6%」であれば、足し込まれた結果が「42.2%」となる。なお、ステップS159の処理を実行するプロセッサ16は到達確率算出手段として機能する。
続いて、ステップS161では変数kをインクリメントする。つまり、他の要素Eに対しても、ステップS157,S159の処理を実行するために、変数kはインクリメントされる。続いて、ステップS163では変数kが変数Kよりも大きいか否かを判断する。つまり、全ての要素Eに対して、ステップS157,S159の処理が実行されたか否かを判断する。ステップS163で“NO”であれば、つまり上述の処理が全ての要素Eに対して実行されていなければ、ステップS157に戻る。一方、ステップS163“YES”であれば、つまり上述の処理が全ての要素Eに対して実行されていれば、統合処理を終了する。そして、プロセッサ16は統合処理を終了した後、メイン処理に戻る。
なお、他の実施例でSFMが利用される場合、追加処理では、ステップS121,S129およびS131が省略される。また、ステップS123では、予測された次の経由点に基づいて次の経由点への移動遷移確率pが算出される。
図31はロボット制御処理のフロー図である。たとえば、移動予測処理が終了すると、ロボット制御処理が実行される。プロセッサ16はステップS181で到達確率データ338を読み出す。つまり、各経由点vへの到達確率Pが記録される、到達確率データ338が読み出される。続いて、ステップS183では、到達確率データ338に基づいて、人の到達位置を予測する。たとえば、到達確率Pが最も大きい経由点vを特定し、予測移動時間T後には、その経由点vに人が到達していると予測する。なお、ステップS183の処理を実行するプロセッサ16は予測手段として機能する。
続いて、ステップS185では、予測された到達位置に基づいて、ロボット14の動作を決定する。たとえば、予測移動時間Tに経由点vへ移動して、情報提供などのサービスを行うように、ロボット14の行動が確定される。なお、ステップS185の処理を実行するプロセッサ16は行動確定手段として機能する。
そして、ステップS187では、ロボット14に動作命令を発行する。つまり、上述のような行動を行うための行動命令をロボット14に発信する。そして、ステップS187の処理が終了すれば、ロボット制御処理が終了する。
なお、他の実施例では、各経由点vの位置に基づいてロボット14の動作が確定されてもよい。たとえば、経由点が多い場所にはロボット14が近づかないようにして、少し離れた場所で情報提供のサービスを行うようにしてもよい。また、通路が合流したりする経由点にロボット14を近づけて、道案内のサービスを行うようにしてもよい。
図32は、他の実施例におけるロボット制御処理のフロー図である。ロボット制御処理が実行されると、プロセッサ16はステップS201で、経由点DB32から各経由点vを読み出す。たとえば、図15に示す全ての経由点の位置が読み出される。続いて、ステップS203では、設けられた経由点に基づいてロボット14の行動を確定する。つまり、上述したように、読み出した経由点の位置に基づいてロボット14の行動を確定する。続いて、ステップS205では、ロボット14に動作命令を発行し、他の実施例のロボット制御処理を終了する。なお、ステップS203の処理を実行するプロセッサ16は行動確定手段として機能する。
このように、人々の移動に基づいて設定された経由点を利用して、ロボット14の動作を確定することで、人々の移動が考慮された行動を、ロボット14に行わせることができる。
なお、他の実施例では、対象者が向かう可能性が最も高い経由点vに対してロボット14が向かわないように、ロボット14に行動命令を発行してもよい。
また、本実施例で説明した複数のプログラムは、データ配信用のサーバのHDDに記憶され、ネットワークを介して本実施例と同等の構成のシステムにおける移動予測装置などに配信されてもよい。また、CD, DVD, BD (Blu-ray Disc)などの光学ディスク、USBメモリおよびメモリカードなどの記憶媒体にこれらのプログラムを記憶させた状態で、その記憶媒体が販売または配布されてもよい。そして、上記したサーバや記憶媒体などを通じてダウンロードされた、上記複数のプログラムが、本実施例と同等の構成のシステムにおける移動予測装置にインストールされた場合、本実施例と同等の効果が得られる。
そして、本明細書中で挙げた、一定時間、距離、誤差、自由度、半径、角度、周波数、部分領域の大きさ、Δ、空間の広さ、経由点の数、所定距離、所定角度、予測移動時間T、閾値、移動時間t、移動遷移確率pおよび到達確率Pなどの具体的な数値は、いずれも単なる一例であり、製品の仕様などの必要に応じて適宜変更可能である。