以下に、本願の開示する移動体検出プログラムおよび移動体検出装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図2は、本実施例2にかかるサービスロボットの構成を示す図である。図2に示すように、このサービスロボットは、リアルタイムクロック110、カメラ120a、LRF120b、人検知部130、駆動部140、通知部150、記憶部160、制御部170を有する。
リアルタイムクロック110は、現在の時間データを順次生成し、生成した時間データを人検知部130、制御部170に出力する装置である。カメラ120aは、画像を順次撮影し、撮影した画像データを人検知部130に出力する装置である。
LRF(Laser Range Finder)120bは、検索範囲内の物体の座標を検出する装置である。LRF120bは、検出した物体の座標データを人検知部130に出力する。以下において、LRF120bが、物体の座標を検出する処理の一例について説明する。図3は、LRFの処理を説明するための図である。
図3のXg軸およびYg軸は、所定の位置を基準とした座標軸であり、この座標軸系をグローバル座標軸系とする。図3のXr軸およびYr軸は、サービスロボット100を基準とした座標軸であり、この座標軸をローカル座標軸系とする。図3の検索範囲5は、LRF120bのレーザーの照射範囲に対応する。
LRF120bは、水平方向にレーザーを照射し、照射したレーザーが物体に当たって反射してくる時間を測定することにより、サービスロボット100と物体との距離およびサービスロボット100と物体との角度を計測する。LRF120bは、計測した距離および角度から、ローカル座標軸上の物体の座標を算出する。そして、LRF120bは、グローバル座標軸上のサービスロボット100の座標と、ローカル座標軸上の物体の座標とを加算することで、グローバル座標軸上の物体の座標を算出する。LRF120bは、グローバル座標軸上の物体の座標データを人検知部130に出力する。
人検知部130は、LRF120bから各物体の座標データを取得し、取得した座標データのうち、人の座標データを検出する処理部である。例えば、人検知部130は、人の画像の特徴を含むテンプレートを保持しており、かかるテンプレートとカメラ120aからの画像データとを比較することで、サービスロボット100の前方に人が存在するか否かを判定する。
例えば、人検知部130は、サービスロボット100の前方に人が存在していると判定している間に、LRF120bから取得した物体の座標データを、人の座標データとして検出し、ID(Identification)を付与する。そして、人検知部130は、IDと、座標データと、この座標データを取得した時間データとを対応づけたデータを制御部170に出力する。
駆動部140は、制御部170からの制御命令に応答して、サービスロボット100を駆動する装置である。例えば、駆動部140には、図示しない車輪などが取り付けられており、駆動部140はこの車輪を駆動させることで、サービスロボット100を移動させる。通知部150は、制御部170から出力される各種のデータを上位アプリケーションに通知する処理部である。
記憶部160は、制御部170が各種の処理を実行するために利用するデータを記憶する記憶装置である。この記憶部160は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
制御部170は、サービスエリア内の複数人の移動の流れ、複数人に注目される位置、一時的に複数人に影響を与えるイベントの位置を検知する制御装置である。この制御部170は、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。または、この制御部170は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路に対応する。
次に、図2に示した記憶部160および制御部170の具体的な構成について説明する。図4は、記憶部および制御部の構成を示す機能ブロック図である。図4に示すように、記憶部160は、原始データ161、移動軌跡スプラインリスト162、流れリスト163、減速座標点リスト164、交点リスト165を記憶する。制御部170は、原始データ登録部171、移動軌跡統合部172、注目場所検出部173、リアルタイム行動認識部174、駆動制御部175を有する。
原始データ登録部171は、人検知部130から人のIDと人の座標データと時間データとを取得し、取得した情報を基にして原始データ161を生成する処理部である。図5は、原始データのデータ構造を示す図である。図5に示すように、この原始データ161は、タイムスタンプ、ID(Identification)、x座標、y座標、x方向の速度、y方向の速度を有する。
このうち、IDは人を一意に識別する情報である。x座標は、グローバル座標軸上の人のx座標を示す。y座標は、グローバル座標軸上の人のy座標を示す。タイムスタンプは、x座標、y座標に人が存在した時点での時間を示す。x方向の速度は、タイムスタンプの示す時間において、人のx方向の速度を示す。y方向の速度は、タイムスタンプの示す時間において、人のy方向の速度を示す。
例えば、原始データ登録部171は、前後のx座標の差分値を、前後のタイムスタンプの差分値で除算することで、x方向の速度を算出する。原始データ登録部171は、前後のy座標の差分値を、前後のタイムスタンプの差分値で除算することで、y方向の速度を算出する。
移動軌跡統合部172は、複数人の移動軌跡を統合することで、複数人全体の移動の流れを抽出する処理部である。複数人の全体の移動の流れは、複数人の全体の移動推移と同様の意味である。図6は、移動軌跡統合部の処理を説明するための図である。図6に示すように、移動軌跡統合部172は、原始データ161のx座標、y座標を基にして、ID毎に移動軌跡スプラインを算出する(ステップS10)。ここで、移動軌跡スプラインは、人の移動軌跡に対応する。
移動軌跡統合部172は、移動軌跡スプラインを算出した後に、類似する移動軌跡スプライン毎に移動軌跡スプラインを分類する(ステップS11)。そして、移動軌跡統合部172は、分類した移動軌跡スプライン毎に平均化を行い、平均化を行った後の軌跡を複数人の流れとして検出する(ステップS12)。
ここで、図6のステップS10に示した移動軌跡統合部172の処理について説明する。移動軌跡統合部172は、最小二乗法を利用して、x、y座標の近似曲線を算出することで、移動軌跡スプラインデータを算出する。図7は、移動軌跡スプラインの一例を示す図である。図7の曲線1Aは、ID「○○」に対応する移動軌跡スプラインであり、曲線2Aは、ID「××」に対応する移動軌跡スプラインである。
移動軌跡統合部172は、原始データ161に記憶された全てのIDに対する移動軌跡スプラインを算出した後に、各移動軌跡スプラインを移動軌跡スプラインリスト162に登録する。図8は、移動軌跡スプラインリストのデータ構造を示す図である。図8に示すように、この移動軌跡スプラインリスト162は、人のID毎に移動軌跡スプラインを記憶している。また、移動軌跡スプラインリスト162は、始点の座標、終点の座標もあわせて記憶している。なお、移動軌跡スプラインリスト162に記憶された移動軌跡スプラインは、連続するx、y座標のデータでもよいし、上記最小二乗法で求めた近似式であってもよい。
次に、図6のステップS11に示した移動軌跡統合部172の処理について説明する。まず、移動軌跡統合部172は、移動軌跡スプラインリスト162に記憶された各移動軌跡スプラインを、長いものから順に並べ替え、一番長い移動軌跡スプラインを取り出す。移動軌跡統合部172は、取り出した移動軌跡スプラインを、移動軌跡スプラインリスト162から削除する。以下の説明において、移動軌跡スプラインリスト162に記憶された複数の移動軌跡スプラインのうち、最も長い移動軌跡スプラインを参照スプラインと表記する。
移動軌跡統合部172は、参照スプラインと移動軌跡スプラインリスト162に記憶された残りの移動軌跡スプラインとを順次比較して、方向差、最短距離の平均値、分散を求め、参照スプラインに類似する移動軌跡スプラインを判定する。
まず、方向差について説明する。移動軌跡統合部172は、参照スプラインの始点から終点への方向と、移動軌跡スプラインの始点から終点への方向との差分を求めることで、方向差を算出する。
続いて、最短距離の平均値について説明する。移動軌跡統合部172は、移動軌跡スプラインを所定のサンプル数だけサンプリングする。そして、移動軌跡統合部172は、サンプリングした移動軌跡スプラインのn番目の座標から参照スプラインまでの最短距離を算出する。例えば、サンプル数をSiとすると、nは、1〜Siまでの整数となる。移動軌跡統合部172は、各最短距離の合計値をSiで除算することで、最短距離の平均値を算出する。
図9は、最短距離の平均値を説明するための図である。図9では、参照スプライン1B、移動軌跡スプライン2B、3Bを用いて説明する。また、サンプル数を3とする。移動軌跡統合部172は、参照スプライン1Bと移動軌跡スプライン2Bとの最短距離の平均値を求める場合には、距離1C、2C、3Cを加算した値を3で除算する。移動軌跡統合部172は、参照スプライン1Bと、移動軌跡スプライン3Bとの最短距離の平均値を求める場合には、距離1D、2D、3Dを加算した値を3で除算する。
続いて、分散について説明する。まず、移動軌跡統合部172は、上記最短距離の平均値を算出する手法と同様にして、平均値を算出する。そして、移動軌跡統合部172は、各最短距離から平均値を除算した値をそれぞれ二乗し、二乗した値を合計する。移動軌跡統合部172は、合計した値を平均値の二乗で除算することで、分散を算出する。
移動軌跡統合部172は、参照スプライン毎に方向差が第1閾値未満、かつ、最短距離の平均値が第2閾値未満、かつ、分散が第3閾値未満となる移動軌跡スプラインを検出する。上記条件を満たす移動軌跡スプラインは、参照スプラインに類似するものとなる。移動軌跡統合部172は、参照スプラインと該参照スプラインに類似する移動軌跡スプラインとを対応づけて、流れリスト163に記憶する。
図10は、流れリストのデータ構造を示す図である。図10に示すように、この流れリスト163は、参照スプラインを一意に識別する参照スプラインID、参照スプライン、移動軌跡スプラインを有する。
次に、図6のステップS12に示した移動軌跡統合部172の処理について説明する。移動軌跡統合部172は、流れリスト163を参照し、参照スプラインID毎に、参照スプラインと各移動軌跡スプラインとを平均化することで、全体の流れを算出する。図11は、全体の流れの算出を説明するための図である。例えば、ある参照スプラインIDには、参照スプライン4Aと、移動軌跡スプライン4Bとが存在したとする。この場合には、移動軌跡統合部172は、各スプライン4A、4Bの各座標x、yの値に対して最小二乗法を適用することで、全体の流れ4Cを算出する。
図12は、移動軌跡統合部が算出した全体の流れを示す図である。図12に示す例では、移動軌跡スプライン5B、5C、参照スプライン5Aが平均化されることで、全体の流れ5Dが得られる。また、移動軌跡スプライン6A、参照スプライン6Bが平均化されることで、全体の流れ6Cが得られる。移動軌跡統合部172は、全体の流れのデータを駆動制御部175に出力する。
なお、移動軌跡統合部172は、平均化を行う場合に、参照スプラインの長さとその他の移動軌跡スプラインの長さに基づいて、サンプル数を調整してもよい。例えば、移動軌跡統合部172は、参照スプラインのサンプル数Smaxを決める。そして、移動軌跡統合部172は、他の移動軌跡スプラインの長さをSPi、参照スプラインの長さをSPmaxとした場合、他の移動軌跡スプラインのサンプル数Siを、式(1)により算出する。
Si=SPmax/SPi×Smax・・・(1)
式(1)に示すように、参照スプラインが長いほど他の移動軌跡スプラインのサンプル数が多くなり、全体の流れを算出する場合の計算に大きく影響する。
図4の説明に戻る。注目場所検出部173は、注目度の高い場所を人が通過する際に、人の移動速度が減速することを利用して、注目度の高い場所を検出する処理部である。図13は、注目場所検出部の処理を説明するための図である。図13の縦軸は速度を示し、横軸は時間を示す。曲線7Aは、人物aの時間と速度との関係を示すものであり、曲線7Bは、人物bの時間と速度との関係を示すものであり、曲線7Cは、人物cの時間と速度との関係を示すものである。各曲線7A〜7Cは、原始データ161のタイムスタンプと、x、y方向の速度から求めることができる。各人物a〜cには所定のIDが割り振られているものとする。
まず、注目場所検出部173は、各人の減速する時間帯を抽出する。人が減速することは、人の加速度がマイナスになることに等しい。このため、注目場所検出部173は、原始データ161に基づいて、人毎の加速度を算出し、算出した加速度がマイナスとなる時間帯を抽出する。図13に示す例では、人物aが減速する時間帯は8Aとなり、人物bが減速する時間帯は8Bとなり、人物cが減速する時間帯は8Cとなる。
注目場所検出部173は、各人が減速した時間帯を抽出した後に、この減速した時間帯に対応する各人の移動軌跡を移動軌跡スプラインリスト162から取得する。そして、注目場所検出部173は、減速した時間帯の移動軌跡を等間隔にサンプリングし、サンプリングしたx、y座標点および移動方向を対応づけて減速座標点リスト164に登録する。なお、注目場所検出部173は、移動軌跡の始点および終点の関係から移動方向を算出するものとする。
図14は、減速座標点リストのデータ構造を示す図である。図14に示すように、この減速座標点リスト164は、ID、移動方向、減速座標点とを対応づけて記憶する。IDは、人を一意に識別するものであり、減速座標点は、減速した時間帯の移動軌跡を等間隔にサンプリングした場合のx、y座標に対応する。
注目場所検出部173は、ID毎の減速座標点を利用して、階級DX、DYで2Dヒストグラムを作成する。そして、注目場所検出部173は、ヒストグラムの度数が高い順で場所を抽出し、度数が所定の度数以上となる領域を注目度の高い場所として抽出する。図15は、注目度の高い場所を説明するための図である。
図15において、場所9Aは、人物aが減速した時間帯8Aに移動した領域であり、場所9Bは、人物bが減速した時間帯8Bに移動した領域であり、場所9Cは、人物cが減速した時間帯8Cに移動した領域である。例えば、各人物a〜cが移動したx、y座標を基にヒストグラムを作成すると、場所9Dに対応する領域の度数が所定の度数以上となる。この場合には、注目場所検出部173は、場所9Dを注目度の高い場所として判定する。例えば、興味深い展示品9Eが場所9D付近に存在している可能性が高い。
また、注目場所検出部173は、ID毎の移動方向を利用して、階級DAでヒストグラムを作成する。そして、注目場所検出部173は、ヒストグラムの度数が一番高い移動方向を、注目度の高い場所に対する移動方向として判定する。注目場所検出部173は、注目度の高い場所と、注目度の高い場所に対する移動方向のデータを、駆動制御部175に出力する。
なお、注目度が高くなくても、障害物が存在する場合には、人の移動速度が減少するものと考えられる。このため、注目場所検出部173は、障害物の存在する場所情報を保持しておき、この場所情報に含まれる注目度の高い場所を除いた後に、残りの注目度の高い場所のデータを駆動制御部175に出力してもよい。
ところで、上記の注目場所検出部173の処理では、ヒストグラムを利用して、注目度の高い場所を検出していたが、これに限定されるものではない。注目場所検出部173は、カーネル密度推定方法を用いることで、注目度の高い場所を検出してもよい。図16は、注目場所検出部のその他の処理を説明するための図である。
図16の横軸は時間を示す。縦軸は、各曲線に応じて異なる値を示す。具体的には、曲線10Aに対しては、縦軸は位置に対応する。曲線10Bに対しては、縦軸は速度に対応する。曲線10Cに対しては、縦軸は加速度に対応する。注目場所検出部173は、曲線10A、10Bは、原始データ161を基に作成する。また、注目場所検出部173は、前後の速度と前後の時間差に基づいて、時間毎の加速度を算出し、曲線10Cを作成する。
注目場所検出部173は、曲線10Cの加速度の推移に着目し、加速度が減少する時間を減速開始時間Tniとして特定する。また、注目場所検出部173は、曲線10Cの加速度の推移に着目し、加速度が減少した後に、加速度が増加する時間を減速完了時間Tnjとして特定する。
そして、注目場所検出部173は、減速開始時間Tniおよび減速完了時間Tnjの間の位置を特定する。図16に示す例では、減速開始時間Tniおよび減速完了時間Tnjの間の位置範囲は、位置範囲10Dとなる。注目場所検出部173は、位置範囲10Dを間隔DTでサンプリングを行い、サンプリング結果となるx、y座標を減速座標点リスト164に登録する。注目場所検出部173は、その他の人についても上記処理を実行することで、人が減速した位置範囲をそれぞれ算出する。そして、注目場所検出部173は、各位置範囲をサンプリングして、サンプリング結果を減速座標点リスト164に登録する。
なお、注目場所検出部173が減速開始時間Tni、減速完了時間Tnjを特定する方法は下記のとおりとなる。注目場所検出部173は、曲線10Cの開示時間をTn0とし、dtの時間間隔で、曲線10Cを微分する。微分した値をJerkとする。そして、注目場所検出部173は、Jerkがマイナスとなる時間帯を減速時間帯とし、この減速時間帯の開始時間を減速開始時間Tni、減速時間帯の終了時間を減速完了時間Tnjとする。
注目場所検出部173がサンプリングを行う場合の分解能は、運用によって適宜切り替えられる。例えば、注目場所の検出に高い精度が求められる場合には、サンプリング間隔は短い間隔に設定される。このように、サンプリング間隔を短くすることで、注目場所の検出精度が向上する。これに対して、注目場所の検出に高い精度が求められない場合には、サンプリング間隔は長い間隔に設定される。このように、サンプリング間隔を長くすることで、計算コストを削減することができる。
図4の説明に戻る。リアルタイム行動認識部174は、ある時間Tnにおいて瞬間的に発生するイベントの位置を検出する処理部である。リアルタイム行動認識部174は、人検知部130から人のIDと人の座標データと時間データとを取得し、ID毎に人の移動速度を算出する。例えば、リアルタイム行動認識部174は、前後の座標の差を前後の時間の差で除算することで、移動速度を順次算出する。
リアルタイム行動認識部174は、時間Tnの人の位置を通り、移動速度の向きと同方向の直線を算出する。リアルタイム行動認識部174は、人毎に上記直線をそれぞれ算出する。そして、リアルタイム行動認識部174は、各直線の交点を算出し、算出した交点の座標を、瞬間的に発生するイベントの位置として検出する。リアルタイム行動認識部174は、各直線の交点を交点リスト165に登録する。また、リアルタイム行動認識部174は、イベントの位置のデータを駆動制御部175に出力する。
図17は、リアルタイム行動認識部の処理を説明するための図(1)である。図17において、11A、11B、11Cは、時間Tnにおける人物a、b、cの位置を示す。12A、12B、12Cは、時間Tnにおける人物a、b、cの移動速度の向きを示す。直線13Aは、位置11Aを通り、向き12Aと同方向の直線であり、直線13Bは、位置11Bを通り、向き12Bと同方向の直線であり、直線13Cは、位置11Cを通り、向き12Cと同方向の直線である。直線13A、13B、13Cの交点は交点14Aとなる。この場合には、リアルタイム行動認識部174は、交点14Aを、瞬間的に発生するイベントの位置として検出する。
図17に示す例では、各人が交点に向かっている場合について説明したが、交点から人が離れる場合にも、交点に対応する位置に何かしらのイベントが発生したものと考えられる。図18は、リアルタイム行動認識部の処理を説明するための図(2)である。図18において、11D、11E、11Fは、時間Tnにおける人物d、e、fの位置を示す。12D、12E、12Fは、時間Tnにおける人物d、e、fの移動速度の向きを示す。直線13Dは、位置11Dを通り、向き12Dと同方向の直線であり、直線13Eは、位置11Eを通り、向き12Eと同方向の直線であり、直線13Fは、位置11Fを通り、向き12Fと同方向の直線である。直線13D、13B、13Cの交点は交点14Bとなる。この場合には、リアルタイム行動認識部174は、交点14Bを、瞬間的に発生するイベントの位置として検出する。
なお、リアルタイム行動認識部174は、各直線の交点を算出した後に、一定範囲内に存在する交点の数が閾値以上となる場合に、この一定範囲内の位置を、瞬間的に発生するイベントの位置として検出してもよい。上記交点は、2本の直線の交点でもよいし、3本以上の直線の交点でもよい。
図4の説明に戻る。駆動制御部175は、移動軌跡統合部172から取得する複数人の流れ、注目場所検出部173から取得する注目度の高い場所、リアルタイム行動認識部174から取得する瞬間的に発生するイベントの位置を基にして、駆動部140を駆動させる処理部である。例えば、駆動制御部175は、複数人の流れに添うようにサービスロボット100が移動するように、制御命令を駆動部140に出力する。また、駆動制御部175は、サービスロボット100が注目度の高い位置に移動するように、制御命令を駆動部140に出力する。また、駆動制御部175は、サービスロボット100が、瞬間的に発生するイベントの位置に移動するように、制御命令を駆動部140に出力する。
次に、図2に示した制御部170の処理手順について説明する。図19は、本実施例2にかかる制御部の処理手順を示すフローチャートである。図19に示す処理は、例えば、サービスロボット100が起動したことを契機として実行される。図19に示すように、制御部170は、検知サイクルをCiに設定する(ステップS101)。Ciの値は例えば100msである。
制御部170は、人のID、座標、速度をタイムスタンプ付きで記憶部160に保存する(ステップS102)。また、制御部170は、移動軌跡スプラインを作成し、記憶部160に保存する(ステップS103)。
制御部170は、一定時間内のデータを統計する場合には(ステップS104,Yes)、一定時間内の複数人の流れ、注目度の高い場所を検出し、検出結果を出力し(ステップS105)、ステップS106に移行する。ここで一定時間は、例えば、10分程度の時間である。
一方、制御部170は、一定時間内のデータを統計しない場合には(ステップS104,No)、リアルタイム行動認識を行うか否かを判定する(ステップS106)。制御部170は、リアルタイム行動認識を行う場合には(ステップS106,Yes)、リアルタイム行動認識を実行し、実行結果を出力し(ステップS107)、ステップS108に移行する。
一方、制御部170は、リアルタイム行動認識を行わない場合には(ステップS106,No)、処理を終了するか否かを判定する(ステップS108)。制御部170は、処理を終了する場合には(ステップS108,Yes)、処理を終了する。制御部170は、処理を継続する場合には(ステップS108,No)、Ciに1を加算し(ステップS109)、ステップS101に再度移行する。
次に、図4に示した移動軌跡統合部172の処理手順について説明する。図20は、移動軌跡統合部の処理手順を示すフローチャートである。図20に示す処理は、例えば、原始データ登録部171により、原始データ161が生成されたことを契機に実行される。
図20に示すように、移動軌跡統合部172は、移動軌跡スプラインリスト162を作成し、この移動軌跡スプラインリスト162を空に設定する(ステップS201)。また、移動軌跡統合部172は、所定時間内の全ての人の移動軌跡スプラインを移動軌跡スプラインリスト162に追加する(ステップS202)。
移動軌跡統合部172は、移動軌跡スプラインの長さに基づいて移動軌跡スプラインリスト162をソートする(ステップS203)。移動軌跡統合部172は、各移動軌跡スプラインの始点、終点の位置で方向を計算し、計算結果を保存する(ステップS204)。
移動軌跡統合部172は、移動軌跡スプラインリスト162に含まれる移動軌跡スプラインのうち、一番長い移動軌跡スプラインiを取得する(ステップS205)。そして、移動軌跡統合部172は、移動軌跡スプラインiを参照スプラインとし、流れリスト163を作成する(ステップS206)。
移動軌跡統合部172は、移動軌跡スプラインiとの方位差が第1閾値未満となる移動軌跡スプラインjを取得する(ステップS207)。移動軌跡統合部172は、移動軌跡スプラインjを等間隔にN点サンプリングし、移動軌跡スプラインiとの最短距離を計算する(ステップS208)。
移動軌跡統合部172は、最短距離の平均値および分散が閾値以上の場合には(ステップS209,No)、jに1を加算し(ステップS210)、ステップS207に移行する。一方、移動軌跡統合部172は、最短距離の平均値および分散が閾値未満の場合には(ステップS209,Yes)、移動軌跡スプラインiの流れリスト163に移動軌跡スプラインjを追加する。また、移動軌跡統合部172は、移動軌跡スプラインiを移動軌跡スプラインリスト162から削除する(ステップS211)。なお、上記のように、最短距離の平均値と比較される閾値は、第2閾値であり、分散と比較される閾値は第3閾値である。
移動軌跡統合部172は、移動軌跡スプラインiとの方位差が第1閾値未満となる移動軌跡スプラインが存在する場合には(ステップS212,Yes)、ステップS210に移行する。一方、移動軌跡統合部172は、移動軌跡スプラインiとの方位差が第1閾値未満となる移動軌跡スプラインが存在しない場合には(ステップS212,No)、移動軌跡スプラインリスト162が空であるか否かを判定する(ステップS213)。
移動軌跡統合部172は、移動軌跡スプラインリスト162が空ではない場合には(ステップS213,No)、iに1を加算し(ステップS214)、ステップS205に移動する。
一方、移動軌跡統合部172は、移動軌跡スプラインリスト162が空の場合には(ステップS213,Yes)、流れリスト163に含まれる全ての移動軌跡スプラインを、重みを考慮して平均化する(ステップS215)。そして、移動軌跡統合部172は、平均化した移動軌跡スプラインを該当流れモデルに設定し、駆動制御部175に出力する(ステップS216)。
次に、図4に示した注目場所検出部173の処理手順について説明する。図21は、注目場所検出部の処理手順を示すフローチャートである。図21に示す処理は、例えば、原始データ登録部171により、原始データ161が生成されたことを契機に実行される。
注目場所検出部173は、所定時間内の全ての人の移動位置の軌跡、速度の軌跡、加速度の軌跡を取得する(ステップS301)。また、注目場所検出部173は、減速座標点リスト164を生成する(ステップS302)。
注目場所検出部173は、N番目の人が減速する時間帯[Tni、Tnj]を抽出し(ステップS303)、時間帯[Tni、Tnj]内の移動軌跡を取得し、間隔DTにて移動軌跡をリサンプリングする(ステップS304)。
注目場所検出部173は、リサンプリングしたX、Y座標点および移動方向を減速座標点リスト164に追加する(ステップS305)。注目場所検出部173は、登録が完了してない場合には(ステップS306,No)、再度ステップS303に移行する。
一方、注目場所検出部173は、登録が完了した場合には(ステップS306,Yes)、減速座標点リスト164のX、Y座標点を利用して、階級DX、DYで2Dヒストグラムを作成する(ステップS307)。
注目場所検出部173は、ヒストグラムの度数がN以上となる場所を判定し(ステップS308)、判定した場所において、移動方向のヒストグラムを作成する(ステップS309)。そして、注目場所検出部173は、ヒストグラムの最も高い度数の角度を該当場所の移動方向として判定する(ステップS310)。
次に、図4に示したリアルタイム行動認識部174の処理手順について説明する。図22は、リアルタイム行動認識部の処理手順を示すフローチャートである。図22に示す処理は、例えば、人検知部130から、人のID、座標データ、時間データを取得したことを契機に実行される。
リアルタイム行動認識部174は、検知サイクルで検知した全ての人の位置、速度を取得し(ステップS401)、各人の位置を通り、速度と同方向の直線を作成する(ステップS402)。
リアルタイム行動認識部174は、直線iと直線i以外の直線との交点のX,Y座標を算出し(ステップS403)、交点リスト165に登録する(ステップS404)。リアルタイム行動認識部174は、登録が完了していない場合には(ステップS405,No)、iに1を加算し(ステップS406)、ステップS403に移行する。
一方、リアルタイム行動認識部174は、登録が完了した場合には(ステップS405,Yes)、交点リスト165のX,Y座標を利用し、階級DRで2Dヒストグラムを作成する(ステップS407)。リアルタイム行動認識部174は、ヒストグラムの度数が閾値Nを超えた場合に、その階級の平均値をイベントの発生位置として検出する(ステップS408)。
上述してきたように、サービスロボット100に含まれる制御部170は、複数の人の移動軌跡スプラインのうち、最も長い移動軌跡スプラインを参照スプラインとして特定する。そして、制御部170は、参照スプラインの特徴に類似する他の移動スプラインを統合することで複数人の流れを検出する。このように、複数人の流れを検出することができるので、例えば、サービスロボット100は、単一の人の動きに影響されず、サービスを行う場合の最適な位置に移動することができる。
また、制御部170は、人の速度を算出し、速度が減速した時点での人の位置を検出する。一般的に、人は注目度の高い場所にさしかかると、移動する速度が減速するものと考えられる。このため、制御部170は、注目度の高い場所を検出することができるので、サービスロボット100は、注目度の高い場所に移動して、サービスを提供することができる。
また、制御部170は、人が移動するたびに、一時的な各人の移動方向をそれぞれ算出し、算出した各移動方向と同方向の直線に基づいて、各人の移動に影響を与える位置を検出する。このため、制御部170は、リアルタイムに各人に注目される場所を検出することができ、サービスロボット100は、注目される場所に移動することで、サービスを適切に実行することができる。
ところで、上記実施例2では、制御部170がサービスエリア内の複数人の移動の流れ、複数人に注目される位置、一時的に複数人に与えるイベントの位置を検出し、該当場所にサービスロボット100を移動させる場合について説明した。しかし、制御部170の機能をサービスロボット100以外の装置に適用することも可能である。例えば、制御部170の機能をカメラを制御する監視システムに適用し、複数人の移動の流れ、複数人に注目される位置、一時的に複数人に与えるイベントの位置を検出した場合に、該当場所の方向にカメラを向けて監視を行うようにしてもよい。
また、上記実施例2では、LRF120bをサービスロボット100に搭載する場合について説明したが、これに限定されるものではない。例えば、LRF120bをサービスロボット100以外の所定の位置に設置してもよい。
また、駆動制御部175は、移動軌跡統合部172から取得する複数人の移動推移と、注目場所検出部173から取得する注目度の高い場所とを比較し、複数人の移動推移と注目度の高い場所とが重なる領域を検出してもよい。例えば、駆動制御部175は、検出した領域に向けてサービスロボット100が移動するように、制御命令を駆動部140に出力する。
なお、上記の制御部170は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、制御部170等の各機能を搭載することによって実現することもできる。
図23は、本実施例にかかる制御部を構成するコンピュータのハードウェア構成を示す図である。このコンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置203とを有する。また、コンピュータ200は、カメラ204と、LRF205と、リアルタイムクロック206とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM(Random Access Memory)207と、ハードディスク装置208とを有する。各装置201〜208は、バス209に接続される。
そして、ハードディスク装置208は、図2に示した人検知部130、制御部170と同様の機能を有する検出プログラム208aを記憶する。また、ハードディスク装置208は、図2の記憶部160に記憶されたデータに対応する各種データ208bを記憶する。
CPU201は、検出プログラム208aを読み出してRAM207に展開する。そうすると、検出プログラム208aは、検出プロセス207aとして機能するようになる。この検出プロセス207aは、図2の人検知部130、制御部170に対応する。なお、CPU201は、ハードディスク装置208に記憶された各種データ208bを読み出して、RAM207に記憶させる。
検出プロセス207aは、各種データ207b、および、カメラ204、LRF205、リアルタイムクロック206からのデータを利用して、複数人の移動の流れ、注目度の高い場所、一時的に発生するイベントの位置を検出する。
なお、検出プログラム208aは、必ずしもハードディスク装置208に格納されている必要はない。コンピュータ200は、CD−ROM等の記憶媒体に記憶された検出プログラム208aを読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等にこの検出プログラム208aを記憶させておき、コンピュータ200が検出プログラム208aを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
移動体の位置を示す位置情報と該移動体が前記位置に存在した時間を示す時間情報とを対応づけて記憶部に記憶する記憶手順と、
前記位置情報および前記時間情報に基づいて、複数の移動体の移動軌跡を移動体毎に算出する移動軌跡算出手順と、
前記移動軌跡算出手順により算出された複数の移動軌跡のうち、移動軌跡の長さが他の移動軌跡の長さと比較して長い移動軌跡を示す基準移動軌跡を特定する移動軌跡特定手順と、
前記基準移動軌跡の特徴に類似する他の移動軌跡を統合することで、複数の移動体の移動推移を検出する移動推移検出手順と
を実行させることを特徴とする移動体検出プログラム。
(付記2)前記記憶部に記憶された前記位置情報および前記時間情報に基づいて、移動体の加速度を算出し、該加速度が減少した時点での前記移動体の位置を検出する位置検出手順を更にコンピュータに実行させることを特徴とする付記1に記載の移動体検出プログラム。
(付記3)前記移動推移検出手順において検出された複数の移動体の移動軌跡と、前記位置検出手順において検出された移動体の位置とが重なる位置を検出する重なり位置検出手順を更にコンピュータに実行させることを特徴とする付記2に記載の移動体検出プログラム。
(付記4)一定の時間間隔毎に、一時的な各移動体の移動方向をそれぞれ算出し、各移動体の位置から前記移動方向への直線がそれぞれ重複する領域または各移動体の位置から前記移動方向とは正反対の方向への直線がそれぞれ重複する領域を検出する重複領域検出手順を更にコンピュータに実行させることを特徴とする付記1、2または3に記載の移動体検出プログラム。
(付記5)移動体の位置を示す位置情報と該移動体が前記位置に存在した時間を示す時間情報とを対応づけて記憶する記憶部と、
前記位置情報および前記時間情報に基づいて、複数の移動体の移動軌跡を移動体毎に算出する移動軌跡算出部と、
前記移動軌跡算出部により算出された複数の移動軌跡のうち、移動軌跡の長さが他の移動軌跡の長さと比較して長い移動軌跡を示す基準移動軌跡を特定する移動軌跡特定部と、
前記基準移動軌跡の特徴に類似する他の移動軌跡を統合することで、複数の移動体の移動推移を検出する移動推移検出部と
を備えたことを特徴とする移動体検出装置。
(付記6)前記記憶部に記憶された前記位置情報および前記時間情報に基づいて、移動体の加速度を算出し、該加速度が減少した時点での前記移動体の位置を検出する位置検出部を更に備えたことを特徴とする付記5に記載の移動体検出装置。
(付記7)前記移動推移検出部において検出された複数の移動体の移動軌跡と、前記位置検出部において検出された移動体の位置とが重なる位置を検出する重なり位置検出部を更に備えたことを特徴とする付記6に記載の移動体検出装置。
(付記8)一定の時間間隔毎に、一時的な各移動体の移動方向をそれぞれ算出し、各移動体の位置から前記移動方向への直線がそれぞれ重複する領域または各移動体の位置から前記移動方向とは正反対の方向への直線がそれぞれ重複する領域を検出する重複領域検出部を更に備えたことを特徴とする付記5、6または7に記載の移動体検出装置。
(付記9)移動体検出装置が、
移動体の位置を示す位置情報と該移動体が前記位置に存在した時間を示す時間情報とを対応づけて記憶部に記憶する記憶ステップと、
前記位置情報および前記時間情報に基づいて、複数の移動体の移動軌跡を移動体毎に算出する移動軌跡算出ステップと、
前記移動軌跡算出ステップにより算出された複数の移動軌跡のうち、移動軌跡の長さが他の移動軌跡の長さと比較して長い移動軌跡を示す基準移動軌跡を特定する移動軌跡特定ステップと、
前記基準移動軌跡の特徴に類似する他の移動軌跡を統合することで、複数の移動体の移動推移を検出する移動推移検出ステップと
を含んだことを特徴とする移動体検出方法。
(付記10)前記記憶部に記憶された前記位置情報および前記時間情報に基づいて、移動体の加速度を算出し、該加速度が減少した時点での前記移動体の位置を検出する位置検出ステップを更に含んだことを特徴とする付記9に記載の移動体検出方法。
(付記11)前記移動推移検出ステップにおいて検出された複数の移動体の移動軌跡と、前記位置検出ステップにおいて検出された移動体の位置とが重なる位置を検出する重なり位置検出ステップを更に含んだことを特徴とする付記10に記載の移動体検出方法。
(付記12)一定の時間間隔毎に、一時的な各移動体の移動方向をそれぞれ算出し、各移動体の位置から前記移動方向への直線がそれぞれ重複する領域または各移動体の位置から前記移動方向とは正反対の方向への直線がそれぞれ重複する領域を検出する重複領域検出ステップを更に含んだことを特徴とする付記9、10または11に記載の移動体検出方法。