(57)【要約】【課題】歩行速度などの変化に影響されずに的確に歩行動作の評価ができるようにする。【解決手段】測距センサから周囲の物体までの距離を示す測距データを取得し、測距データから、想定される脚のサイズを満たす物体を脚候補として抽出する。そして、脚候補の座標の変化に基づいて、立脚期と遊脚期を区別し、立脚期とその立脚期に続いた遊脚期とを示す立脚・遊脚ペアを取得する。その後、立脚・遊脚ペアとその近傍の立脚とから歩行者中心を算出して、算出した歩行者中心の変化から歩行軌跡を得る。【選択図】図４
2019083857.tif 000002
【特許請求の範囲】
【請求項１】
測距センサと、
前記測距センサから周囲の物体までの距離を示す測距データを取得する測定部と、
前記測定部で取得された測距データから、想定される脚のサイズを満たす物体を脚候補として抽出する脚候補抽出部と、
前記脚候補抽出部により得られた脚候補の座標の変化に基づいて、脚候補から立脚期と遊脚期を判別する脚候補状態判定部と、
前記脚候補状態判定部で判定された立脚期と遊脚期のデータから、立脚期とその立脚期に続いた遊脚期とを示す立脚・遊脚ペアを取得する歩行者抽出部と、
前記歩行者抽出部により得られた立脚・遊脚ペアと、その立脚・遊脚ペアの近傍の立脚とから歩行者中心を算出して、算出した歩行者中心の変化から歩行軌跡を得る歩行者中心算出部と、を備える
歩行者認識装置。
【請求項２】
前記脚候補抽出部は、前記測距データで得られない隠れ脚を補間して、脚候補の中心又は重心を求める
請求項１に記載の歩行者認識装置。
【請求項３】
前記脚候補状態判定部は、脚候補の中心又は重心の座標の移動状態から、立脚期と遊脚期を分類する
請求項１又は２に記載の歩行者認識装置。
【請求項４】
前記測定部で取得される測距データは、歩行者の足首近傍の高さで距離を計測したデータである
請求項１〜３のいずれか１項に記載の歩行者認識装置。
【請求項５】
測距センサから周囲の物体までの距離を示す測距データを前記測距センサにより取得する測定処理と、
前記測定処理により取得された測距データから、想定される脚のサイズを満たす物体を脚候補として抽出する脚候補抽出処理と、
前記脚候補抽出処理により得られた脚候補の座標の変化に基づいて、脚候補から立脚期と遊脚期を判別する脚候補状態判定処理と、
前記脚候補状態判定処理で判定された立脚期と遊脚期のデータから、立脚期とその立脚期に続いた遊脚期とを示す立脚・遊脚ペアを取得する歩行者抽出処理と、
前記歩行者抽出処理で得られた立脚・遊脚ペアと、その立脚・遊脚ペアの近傍の立脚とから歩行者中心を算出して、算出した歩行者中心の変化から歩行軌跡を得る歩行者中心算出処理と、を含む
歩行者認識方法。
【請求項６】
測距センサから周囲の物体までの距離を示す測距データを前記測距センサにより取得する測定手順と、
前記測定手順により取得された測距データから、想定される脚のサイズを満たす物体を脚候補として抽出する脚候補抽出手順と、
前記脚候補抽出手順により得られた脚候補の座標の変化に基づいて、脚候補から立脚期と遊脚期を判別する脚候補状態判定手順と、
前記脚候補状態判定手順で判定された立脚期と遊脚期のデータから、立脚期とその立脚期に続いた遊脚期とを示す立脚・遊脚ペアを取得する歩行者抽出手順と、
前記歩行者抽出手順で得られた立脚・遊脚ペアと、その立脚・遊脚ペアの近傍の立脚とから歩行者中心を算出して、算出した歩行者中心の変化から歩行軌跡を得る歩行者中心算出手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、測距センサの検出信号に基づいて歩行者を認識する歩行者認識装置及び歩行者認識方法、ならびに歩行者認識方法を実行するプログラムに関する。
【背景技術】
【０００２】
自律移動ロボットなどの移動体を開発する上では、その移動体の周囲の歩行者を認識して、その歩行者を避けた自律移動を行うことが重要である。従来、自律移動ロボットには、レーザ測定器などの測距センサを搭載して、自律移動ロボットの周囲の物体や人物を検出することが行われている。測距センサが検出した対象物が静止した物体である場合には、自律移動ロボットがその物体を避けた移動を行えばよく、比較的容易に対処が可能である。一方、歩行者の場合には、歩行者の移動状態を正しく認識して、その歩行者の移動経路を考慮して、自律移動ロボットの移動経路を決める必要があり、歩行者の歩行状態を正確に認識することが重要である。
【０００３】
特許文献１には、レーザ測定器を使って歩行者の脚部位置を検出して、歩行状態を計測するシステムの例が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７６４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されるように、歩行状態を計測するシステムは従来から各種提案されているが、測距センサを使用するシステムでは、歩行者と測距センサの位置関係によっては、歩行者の検出が困難になる場合がある。具体的には、歩行者が測距センサの前方を横切るように歩行した場合には、測距センサが２本の脚をほぼ連続して検出することができるので、歩行者を比較的精度よく補足することが可能である。これに対して、測距センサに近づいて来るように歩行している歩行者や、測距センサから遠ざかるように歩行している歩行者の場合には、歩行状態によって一方の脚の一部又は全てが他方の脚の後方に隠れることがあり、そのような状態が発生すると、歩行者を見失ってしまう場合がある。特に、測距センサを搭載した自律移動ロボットの周囲に多数の歩行者が存在している環境では、周囲の全ての歩行者の動きを常時正確に検出することは困難であった。
【０００６】
本発明は、かかる点に鑑み、一方の脚が他方の脚の背後に隠れるような状況でも歩行者を的確に補足することができる歩行者認識装置及び歩行者認識方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の歩行者認識装置は、測距センサと、測距センサから周囲の物体までの距離を示す測距データを取得する測定部と、測定部で取得された測距データから、想定される脚のサイズを満たす物体を脚候補として抽出する脚候補抽出部と、脚候補抽出部が得た脚候補の座標の変化に基づいて、脚候補から立脚期と遊脚期を判別する脚候補状態判定部と、脚候補状態判定部で判定された立脚期と遊脚期のデータから、立脚期とその立脚期に続いた遊脚期とを示す立脚・遊脚ペアを取得する歩行者抽出部と、歩行者抽出部で得られた立脚・遊脚ペアと、その立脚・遊脚ペアの近傍の立脚とから歩行者中心を算出して、算出した歩行者中心の変化から歩行軌跡を得る歩行者中心算出部と、を備える。
【０００８】
また、本発明の歩行者認識方法は、測距センサから周囲の物体までの距離を示す測距データを測距センサで取得する測定処理と、測定処理により取得した測距データから、想定される脚のサイズを満たす物体を脚候補として抽出する脚候補抽出処理と、脚候補抽出処理により得られた脚候補の座標の変化に基づいて、脚候補から立脚期と遊脚期を判別する脚候補状態判定処理と、脚候補状態判定処理で判定された立脚期と遊脚期のデータから、立脚期とその立脚期に続いた遊脚期とを示す立脚・遊脚ペアを取得する歩行者抽出処理と、歩行者抽出処理で得られた立脚・遊脚ペアと、その立脚・遊脚ペアの近傍の立脚とから歩行者中心を算出して、算出した歩行者中心の変化から歩行軌跡を得る歩行者中心算出処理と、を含む。
【０００９】
また、本発明のプログラムは、上記歩行者認識方法の測定処理、脚候補抽出処理、脚候補中心座標分類処理、歩行者抽出処理、及び歩行者中心算出処理のそれぞれを実行する手順を、コンピュータに実行させるものである。
【発明の効果】
【００１０】
本発明によれば、測距センサの周囲の歩行者の歩行軌跡を的確に取得できるようになる。また、複数の歩行者が存在する環境であっても、それぞれの歩行者の歩行軌跡を的確に取得してトラッキングすることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施の形態例による歩行者認識装置の構成例を示すブロック図である。
【図２】人間の歩行時の立脚期と遊脚期を示す図である。
【図３】人間の歩行時の左右の脚と中心軌跡の例を示す図である。
【図４】本発明の一実施の形態例による歩行者認識処理の流れを示すフローチャートである。
【図５】本発明の一実施の形態例による脚候補抽出処理の詳細を示すフローチャートである。
【図６】本発明の一実施の形態例による測定環境の例を示す図である。
【図７】本発明の一実施の形態例による測距データ配列の例を示す図である。
【図８】本発明の一実施の形態例による測距データ配列の例を示す図である。
【図９】本発明の一実施の形態例による差分の配列diffの例を示す図である。
【図１０】本発明の一実施の形態例による条件を満たす要素番号の例を示す図である。
【図１１】本発明の一実施の形態例による正負差分エッジを示す図である。
【図１２】本発明の一実施の形態例によるクラスタリング例を示す図である。
【図１３】本発明の一実施の形態例による立脚期と遊脚期のペアの生成処理例を示す図である。
【図１４】本発明の一実施の形態例の処理で実際に生成された立脚期と遊脚期のペアの例を示す図である。
【図１５】本発明の一実施の形態例による歩行者中心検出の具体例（歩行状態）を示す図である。
【図１６】本発明の一実施の形態例による歩行者中心検出の具体例（検出状態）を示す図である。
【図１７】本発明の一実施の形態例による歩行者中心検出の具体例（中心検出状態）を示す図である。
【図１８】本発明の一実施の形態例の処理で実際に歩行者中心を計算した例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施の形態例（以下、「本例」と称する）について、添付図面を参照して説明する。
【００１３】
［１．歩行者認識装置の構成］
図１は、本例の歩行者認識装置の構成を示す機能ブロック図である。本例の歩行者認識装置は、例えばコンピュータ装置に歩行者認識処理を実行するプログラムを実装することで構成される。
【００１４】
図１に示す歩行者認識装置は、中央制御ユニット（以下、「ＣＰＵ」と称する）１１、プログラムメモリ１２、外部入出力インタフェース１３、脚候補抽出部１４、脚候補中心座標分類部１５、脚候補状態判定部１６、歩行者抽出部１７、歩行者中心算出部１８、及び歩行者特徴量算出部１９を備える。
また、歩行者認識装置は、それぞれの処理部で得たデータを記憶するメモリとして、脚候補中心メモリ２１、脚候補クラスメモリ２２、歩行者クラスメモリ２３、歩行者中心メモリ２４、及び歩行者特徴量メモリ２５を備える。
【００１５】
また、歩行者認識装置は、測定部３１と２次元領域センサ３２を備える。測定部３１は、歩行者認識を行う上で必要な測定データ（測距データ）を取得する。すなわち、測定部３１には、２次元領域センサ３２から測距データが供給され、測定部３１は、この測距データに基づいて測定処理を行う。なお、測距データは、２次元領域センサ３２から周囲の物体までの距離を示すデータである。本例の場合には、２次元領域センサ３２として、２Ｄレーザレンジファインダ（laser range finder：２Ｄ−ＬＲＦ）が使用される。２次元領域センサ３２は、地面から約２０cmの高さの物体までの距離を検出する。測定部３１で得られた測距データは、２次元距離データメモリ３３に記憶される。ここでは、２次元距離データメモリ３３には、２次元領域センサ３２からの距離Ｌと、２次元領域センサ３２から見た方位角θが記憶される。
【００１６】
ＣＰＵ１１は、プログラムメモリ１２に記憶されたプログラムを実行することで、歩行者認識装置による歩行者認識処理動作を実行する。プログラムメモリ１２は、ＲＯＭとＲＡＭで構成される。
外部入出力インタフェース１３は、歩行者認識装置で得られた歩行者認識結果を外部に出力する。また、外部入出力インタフェース１３は、外部から歩行者認識装置の動作モードなどを設定するデータを受信する。
【００１７】
脚候補抽出部１４は、測定部３１で取得される測距データに基づいて、人間の脚候補を抽出する脚候補抽出処理を行う。また、脚候補抽出部１４は、測距データでは見えていない、いわゆる隠れ脚候補を補間する脚候補補間部としての機能も持つ。脚候補抽出部１４で抽出される脚候補の中心座標は、脚候補中心メモリ２１に記憶される。そして、脚候補抽出部１４で得られた脚候補のデータ（中心座標のデータ）は、脚候補中心座標分類部１５に供給される。
【００１８】
脚候補中心座標分類部１５は、脚候補の中心座標の変化に基づいて、脚候補をクラスタリングする脚候補中心座標分類処理を行う。脚候補中心座標分類部１５で得られたクラスタリング結果は、脚候補クラスメモリ２２に記憶される。脚候補中心座標分類部１５で得られた脚候補のクラスタリング結果は、脚候補状態判定部１６に供給される。
【００１９】
脚候補状態判定部１６は、脚候補中心座標分類部１５のクラスタリング結果から、脚候補を立脚期と遊脚期に分ける脚候補状態判定処理を行う。立脚期と遊脚期については後述する。脚候補状態判定部１６で分類された立脚と遊脚のそれぞれを示す番号（クラス番号）は、歩行者クラスメモリ２３に記憶される。脚候補状態判定部１６で得られた脚候補の立脚期と遊脚期のデータは、歩行者抽出部１７に供給される。
歩行者抽出部１７は、脚候補の立脚期と遊脚期のデータに基づいて、立脚期と、その立脚期に続いた遊脚期で構成される立脚・遊脚ペアを生成する歩行者抽出処理を行う。
【００２０】
歩行者中心算出部１８は、立脚・遊脚ペアと、その立脚・遊脚ペアの近傍の立脚とを使って、歩行者中心座標を求める歩行者中心算出処理を行う。すなわち、歩行者中心算出部１８は、脚候補中心座標分類部１５が分類する上で必要な歩行者中心の算出処理を、脚候補の座標から行う。歩行者中心算出部１８で算出された歩行者中心は、歩行者中心メモリ２４に記憶される。
歩行者特徴量算出部１９は、歩行者中心算出部１８で算出された歩行者中心に基づいて、歩行者特徴量を算出する。ここで算出する歩行者特徴量は、例えばタグ番号、歩容、移動方向、移動速度、一時停止状態、停止時間、滞留時間などのデータである。歩行者特徴量算出部１９で算出された歩行者特徴量は、歩行者特徴量メモリ２５に記憶される。
【００２１】
［２．歩行者の歩行状態の説明］
図２は、歩行者の左右の脚の立脚期と遊脚期を示す図である。
立脚期は、それぞれの脚が地面と接触した状態を示す。この立脚期では、地面に脚が静止している。遊脚期は、それぞれの脚が地面から離れた状態を示す。この遊脚期では、脚の位置が地面上を移動する。
図２に示すように、左脚の立脚期と遊脚期の期間と、右脚の立脚期と遊脚期の期間とが交互にずれている。ここで、左右の脚の片方が立脚期で一方は遊脚期となる区間は、歩行動作に特有のものであり、歩行１サイクルの約８０％を占める。すなわち、図２に示すように右遊脚期が約４０％であり、図２には示さないが左遊脚期についても同様に約４０％であり、合計すると歩行１サイクルの約８０％を占める。
【００２２】
ここで、立脚期と遊脚期における足首周りの動きに注目すると、立脚期はほとんど移動せず、遊脚期は歩幅分大きく移動することから、足首周りの動きから脚の状態を判別することができる。
そして、同一人物の２つの脚の内の片脚が立脚で一方が遊脚となる場合に、それを同一人物の歩行動作であると推定して、これを判定することができれば、各脚の重心位置から両脚間の中心（重心）位置を推定することができる。その結果、歩行の中心（重心）の軌跡を得ることができる。
【００２３】
図３は、左右の脚の立脚位置（実線で示す位置）及び遊脚位置（破線で示す位置）を示す。図３では、検出した立脚位置及び遊脚位置の中心をプロットした位置を白丸で示し、そのプロットした位置を接続した中心軌跡ｍ１を示す。この中心軌跡ｍ１が、歩行者の歩行軌跡になる。本例の歩行者認識装置では、このような歩行者の歩行軌跡を検出して、歩行者を認識するものである。
左右の脚は、２次元領域センサ３２の検出信号から検出される。本例の場合、２次元領域センサ３２は、地面から約２０cmの高さの面で、物体を検出して、歩行者の足首を検出する。
【００２４】
ところで、図３に示すように歩行重心の予測を行う上で、脚の中心（重心）位置を正確に推定することは重要である。しかしながら、実際には、２次元領域センサ３２から常に左右の脚が見えているとは限らず、２次元領域センサ３２の検出データで見えていない脚（以下、これを「隠れ脚」と称する）に対しては、測定点を十分に得ることができない。隠れ脚の形状を予測することで隠れ脚の中心を予測することは不可能ではないが、正確な隠れ脚の中心予測を行うのは難しい。そこで本例の場合には、隠れ脚の中心座標を推定することなく、２次元領域センサ３２の検出信号で見えている脚の中心座標のみを参照して、歩行者中心抽出を行っている。
【００２５】
例えば２次元領域センサ３２から遠ざかる歩行者の場合、遊脚となった左脚は、右立脚の横を通過して、右立脚よりも前の位置で再び立脚となるが、右立脚の横を通過した後は、２次元領域センサ３２との位置関係から隠れ脚となる場合が多く、中心座標の検出が安定しない。そこで、本例の場合には、左脚が右立脚近傍へ到達した時点で脚候補軌跡の追従を打ち切り、脚候補中心検出の正確性を確保する。
また、２次元領域センサ３２から遠ざかる歩行者の場合、あるタイミングで２次元領域センサ３２が左立脚を検出したとき、そのタイミングから後の検出は、左立脚→左遊脚→右立脚となる可能性が高い。
そこで、立脚と遊脚のペアが検出された時点で、そのペアで示される中心座標を保持し、その後、さらに次の立脚と遊脚のペア（左右が逆）が検出されたときに、これらの中心座標を保持し、歩行軌跡を検出する処理を行う。
【００２６】
これらの本例の歩行者認識装置が行う歩行者認識処理の詳細を、以下、順に説明する。なお、以下の説明で中心位置や中心軌跡などの「中心」と述べた場合には、距離の二等分などで中心となる位置を求める場合の他に、全体のバランスなどを考慮して重心を求める場合も含まれる。また、「中心」を求めると述べた場合には、「重心」を求める処理も含むと考えてよい。
【００２７】
［３．歩行者認識処理の詳細］
図４は、本例の歩行者認識装置が行う歩行者認識処理全体の流れを示すフローチャートである。歩行者認識処理は、歩行者認識装置のＣＰＵ１１の制御下で実行される。
まず、測定部３１が２次元領域センサ（２Ｄ−ＬＲＦ）３２から距離データを取得する（ステップＳ１１）。そして、脚候補抽出部１４が、距離データから脚候補となる物体を抽出し（ステップＳ１２）、脚候補の座標位置（重心座標位置又は中心座標位置）を算出して保持する（ステップＳ１３）。
【００２８】
その後、ＣＰＵ１１は、予め決められた指定実行頻度に該当するか否かを判断する（ステップＳ１４）。ここで、指定実行頻度に該当しない場合には（ステップＳ１４のＮＯ）、ステップＳ１１での測定部３１の距離データ取得処理に戻る。そして、ステップＳ１４で指定実行頻度に該当する場合（ステップＳ１４のＹＥＳ）、脚候補抽出部１４が抽出した脚候補から脚候補状態判定部１６が立脚の脚候補を抽出し、ここで抽出された脚候補が脚候補クラスメモリ２２に保持される（ステップＳ１５）。
【００２９】
その後、ＣＰＵ１１は、脚候補クラスメモリ２２に保持された立脚が存在するか否かを判断し（ステップＳ１６）、保持された立脚が存在する場合（ステップＳ１６のＹＥＳ）、脚候補抽出部１４は、既検出済みの立脚に対応する遊脚を抽出する。そして、歩行者抽出部１７は、脚候補抽出部１４で抽出された立脚と遊脚に基づいて、立脚と遊脚とのペアの生成処理を行う（ステップＳ１７）。なお、ステップＳ１６で保持された立脚が存在しない場合（ステップＳ１６のＮＯ）には、ステップＳ１１での測定部３１の距離データ取得処理に戻る。
【００３０】
そして、ＣＰＵ１１は、立脚と遊脚とのペアに対応する立脚が存在するか否かを判断し（ステップＳ１８）、対応する立脚が存在する場合（ステップＳ１８のＹＥＳ）、歩行者中心算出部１８は、立脚と遊脚との間の中心座標を算出し、中心座標を歩行者中心メモリ２４に保存する（ステップＳ１９）。また、ステップＳ１８で対応する立脚が存在しない場合（ステップＳ１８のＮＯ）には、ステップＳ１１での測定部３１の距離データ取得処理に戻る。
【００３１】
そして、ステップＳ１９で中心座標を計算して保存した後、ＣＰＵ１１は、各メモリに保存された不要な立脚及び立脚・遊脚ペアのデータを削除する（ステップＳ２０）。その後、ＣＰＵ１１は、歩行者認識動作を終了するか否かを判断し（ステップＳ２１）、終了しない場合（ステップＳ２１のＮＯ）、ステップＳ１１での測定部３１の距離データ取得処理に戻る。また、ステップＳ２１で歩行者認識動作を終了する場合（ステップＳ２１のＹＥＳ）、図４のフローチャートの処理を終了する。
【００３２】
次に、図４のフローチャートのステップＳ１２で行われる脚候補抽出処理について説明する。
本例の場合、ステップＳ１２の脚候補抽出処理では、２次元領域センサ３２の検出データに基づいて、地面から２０cmの高さに存在する脚の形状を取得している。地面から２０cmの高さに存在する脚の形状を取得することは、おおよそ人間の足首周りの形状を取得することになる。したがって、脚候補抽出部１４で行われる脚候補抽出処理では、２次元領域センサ３２の検出データに基づいて、一定の幅より小さい物体を脚候補として抽出し、その中心座標を取得するようにしている。
【００３３】
図５は、脚候補抽出部１４で行われる脚候補の抽出処理の詳細の一例を示すフローチャートである。
まず、脚候補抽出部１４は、１フレーム分の測距データ配列の各要素に対して、次の(1)式を適用することにより、配列中の各要素の前後差分を計算し配列diffとして格納する（ステップＳ２１）。ここで、iは配列の要素番号を表す。なお、ここでは２次元領域センサ３２から得られる測距配列の要素数が１０８１であり、要素番号ｉは０から１０８０までの値になる。
diff[i]＝測距データ配列[i+1]−測距データ配列[i]・・・・(1)
但し、i＝0,1,2,…,1080
【００３４】
その後、脚候補抽出部１４は、前後差分diff[1080]のうち、| diff[i] |＞EDGE_TH （i＝0,1,...1080）を満たすものを差分エッジとして抽出し、diff_edge[x]配列に格納する（ステップＳ２２）。ここでは、物体の端点で測距データの値は大きく変化することを利用して、前後差分配列diffの各要素のうち、絶対値が一定値以上（EDGE_THという変数で定義）となる場所の要素番号を、差分エッジとして取得する処理を行う。
【００３５】
次に、脚候補抽出部１４は、ループ処理に移る。すなわち、最初にループ変数ｊに０を代入し（ステップＳ２３）、diff_edge[j]及びdiff_edge[j+1]の値を取得する（ステップＳ２４）。
その後、脚候補抽出部１４は、条件式diff[a]＞０かつdiff[b]＜０となる条件を満たすか否かを判断して、正負の差分エッジに挟まれた部分を抽出する（ステップＳ２５）。
ステップＳ２５の条件を満たすとき（正負の差分エッジに挟まれた部分であるとき：ステップＳ２５のＹＥＳ）、脚候補抽出部１４は、端点間の距離が、予め決められた脚のサイズより決まる閾値TH_FOOTより小さいか否かを判断する（ステップＳ２６）。
ここで、閾値TH_FOOTより小さいと判断したとき（ステップＳ２６のＹＥＳ）、脚候補抽出部１４は、脚候補の中心を算出して、その算出した中心を記憶させる（ステップＳ２７）。
【００３６】
ステップＳ２７の処理を行った後と、ステップＳ２５で条件を満たさない場合（ステップＳ２５のＮＯ）及びステップＳ２６で条件を満たさない場合（ステップＳ２６のＮＯ）には、脚候補抽出部１４は、ループ変数を１つ増加させ（ステップＳ２８）、次のループに備える。
その後、脚候補抽出部１４は、［ｊ＝＝ｘ−１］の終了条件を満たすか否か判断し（ステップＳ２９）、この終了条件を満たす場合（ステップＳ２９のＹＥＳ）に処理を終了する。また、ステップＳ２９で終了条件を満たさない場合（ステップＳ２９のＮＯ）に、脚候補抽出部１４は、ステップＳ２３のループ処理の最初に戻る。
【００３７】
次に、図５のフローチャートに示す脚候補抽出処理を、図６〜図１８を参照して説明する。
図６は、２次元領域センサ（２Ｄ−ＬＲＦ）３２の検出データから、脚候補を検出する例を示す。図６の例では、２次元領域センサ３２から離れた箇所に壁が存在し、その壁の手前に脚と物体（脚よりも大きな物体）が配置された状態を示す。図６に示す黒丸は２次元領域センサ３２の検出データで得られる測距点を示す。図６の例では、２０個の測距点を示す。この場合、上述した(1)式のｉが０〜１９になる。
【００３８】
図７は、図６の例の２０個の測距点（ｉ＝０，１，２，・・・，１９）の距離データの例を示す。図７の下側に示すデータ列の上段は、測距点ｉの要素番号を示し、下段は距離値を示す。ここでは、物体に対応した要素番号ｉ＝２〜８で、距離２が検出され、脚に対応した要素番号ｉ＝１３〜１５でも、距離２が検出される。また、物体や脚が存在しない箇所では、壁までの距離に相当する距離４が検出される。
図８は、図７とは要素番号の配列を逆（左から右）にしたものである。
【００３９】
この図８に示すデータ列に、上述した(1)式を適用することで（但しｉ＝０〜１９）、図９の差分を示す配列diff[19]が得られる。
ここで、ステップＳ２２では、前後差分diff[19]のうち、| diff[i] |＞EDGE_TH （i＝0,1,...19）を満たすものを差分エッジとして抽出し、diff_edge[x]配列に格納する。図９の例の場合、条件を満たす要素は、要素番号１，８，１２，１５の４つであるため、図１０に示すdiff_edge[4]配列が得られる。
【００４０】
次に、図５のフローチャートのステップＳ２３からステップＳ２９までのループ処理について説明する。
ステップＳ２３でループ変数ｊに０を代入し、ステップＳ２４でdiff_edge[j]及びdiff_edge[j+1]の値を取得する処理を、図１０のdiff_edge[4]配列に対して適用する。これにより、脚候補抽出部１４は、１回目のループでdiff_edge[0]→”1”とdiff_edge[1]→”8”を取得し、ステップＳ２５のdiff[a]、diff[b]における変数a、bに代入する。
【００４１】
このdiff_edge配列は、測距データ配列の前後差分であるdiff配列の変化の大きい部分を抽出したものである。したがって、ステップＳ２５でdiff[a],diff[b]を参照すると、測距データ中の差分エッジを得ることができる。また、a=1、b=8とすればdiff[1]＝-2、diff[8]＝2を得る。続いて、ステップＳ２５の条件式（diff[a]＞０かつdiff[b]＜０）を適用することで、正負の差分エッジに挟まれた部分を抽出する。
【００４２】
ここでは、２次元領域センサ３２から見て遮蔽するものがない物体（脚）の場合には、その物体の左端と右端から正と負の差分エッジがそれぞれ検出されるのに対し、例えば図１１に示すように、一部が遮蔽される物体（隠れ脚）では、両端ともに負の差分エッジが検出される。
すなわち、図１１の例は、左脚１００Ｌと、それより２次元領域センサ３２から見て遠い位置の右脚１００Ｒがある例である。この例の場合、２次元領域センサ３２から見て２つの脚１００Ｌ，１００Ｒの一部が重なっている場合には、左脚１００Ｌの右端の検出データと右脚１００Ｒの左端の検出データとの間に、負の差分エッジが発生する。
したがって、ステップＳ２５の条件式（diff[a]＞０かつdiff[b]＜０）を満たす物体のみを抽出すれば、負の差分エッジが発生する状況が排除され、隠れ脚は抽出されなくなる。
脚候補抽出部１４は、このようにして抽出された脚候補のそれぞれの中心（重心）座標を求め、その中心座標を順に保持する。
【００４３】
なお、脚候補抽出部１４は、隠れ脚を補間で算出する脚候補補間部としての処理も行う。すなわち、抽出された脚候補の内で、次に説明する遊脚として検出された脚候補がある程度離れて検出された場合には、脚候補抽出部１４は、その遊脚の候補位置を補間して、遊脚の補間位置を求める処理を行う。
【００４４】
次に、脚候補状態判定部１６が、脚候補から立脚を抽出して保持する処理について説明する。
立脚を検出する保持処理では、脚候補の検出処理で一定フレームをスタックして得られた脚候補の中心に対して、クラスタリングアルゴリズム（例えばDBSCAN：Density-Based Spatial Clustering）を適用して、密度ベースクラスタリングを行う。そして、脚候補の中心が集まっている箇所を立脚クラスタとして抽出する。すなわち、立脚期には、該当する脚はある程度の期間ほぼ静止しており、その静止状態から立脚期を判別する。
【００４５】
図１２は、脚候補をクラスタリングして、立脚候補を抽出する例を示す。この図１２は、脚候補の中心座標の変化を示す。すなわち、白丸が立脚としてクラスタリングした脚候補を示し、黒丸が立脚でない（つまり遊脚）としてクラスタリングした脚候補を示している。
【００４６】
図１２に示すように、立脚が検出された場合には、立脚クラスタに固有の識別記号（ＩＤ）を割り当て、立脚クラスタの中心座標と向き（進行方向）を取得し、これを保持する。また、次に行われる立脚・遊脚ペアの生成の精度を向上させるため、立脚クラスタを構成する点群のうち、時系列的に最も新しいものを、立脚座標として扱う。そして、クラスタリングアルゴリズムでクラスが割り振られなかった脚候補の中心座標は、遊脚の中心座標として扱い、その遊脚の中心座標を保持する。
【００４７】
次に、歩行者抽出部１７が、立脚・遊脚ペアを生成する処理について説明する。
立脚・遊脚ペアを生成する処理では、脚候補状態判定部１６での判定によって保持されている立脚情報をもとに、それぞれの立脚から伸びる遊脚を検出し、立脚と遊脚を結びつける処理を行う。一つの脚が立脚から遊脚に遷移する場合、脚中心座標には連続性があるので、立脚クラスタの終点座標の近傍にある足候補座標を遊脚の始点として結びつけていく。
【００４８】
具体的には、図１３に示すように、立脚クラスタの方向ベクトルと立脚中心から遊脚候補へのベクトルがなす角度θ（図１３（Ｂ））を計算し、その角度θが閾値以内で、かつ立脚終点座標からのユークリッド距離が最小となる脚候補を、図１３（Ａ）に示すように遊脚の始点として結合する。その後は、最近傍点を結合していき、立脚と遊脚のペアである立脚・遊脚ペアを作成し、一定フレーム間保持する。なお、この立脚・遊脚ペアが生成された時点で、立脚を管理する配列から、該当する立脚クラスを削除する。
【００４９】
図１４は、２次元領域センサ３２の検出データ（座標データ）から立脚・遊脚ペアを生成した具体例を示す。この例では、歩行者の進行方向の左右に壁があり、その壁の間の通路を、２次元領域センサ３２から離れる歩行者を検出したものである。
図１４において、大きな丸は立脚期の座標を示し、小さな丸は遊脚期の座標を示す。図１４は、立脚とそれに続いた遊脚が立脚・遊脚ペアとして生成されることを示している。
【００５０】
次に、歩行者中心算出部１８が行う歩行者中心座標の算出処理について説明する。
左右の脚の内の一方の脚の遊脚・立脚ペアが生成された後、もう一方の脚の立脚（対応立脚）が検出されれば、歩行者中心算出部１８は、立脚・遊脚ペアの全座標と対応立脚の中点を求め、歩行者中心を算出することができる。具体的には、立脚・遊脚ペアの終点の近傍に別の立脚クラスが生成された場合、歩行者中心算出部１８は、これら立脚・遊脚ペアと立脚を同一歩行者のものであると確定して、左右脚の中点座標を計算し、これを歩行者中心とする。なお、この歩行者重心計算が行われた時点で、立脚・遊脚ペア管理配列から、計算に用いたクラスを削除する。
【００５１】
図１５（Ａ）〜（Ｅ）は、歩行者が２次元領域センサ（ＬＲＦ）３２から遠ざかる方向に歩行する様子を時系列で表したものである。図１５において、「Ｌ」は左脚の位置を示し、「Ｒ」は右脚の位置を示す。以下、図１５（Ａ），（Ｂ），（Ｃ），・・・と時間が進むごとに、左脚と右脚の位置が２次元領域センサ３２から遠ざかっている。
【００５２】
この図１５の状態を２次元領域センサ３２で検出したとき、図１６に示すように、２つの脚の内で、２次元領域センサ３２からより離れている脚が、隠れ脚になって、検出されない可能性が高い。
具体的には、図１５（Ａ）の脚位置を検出した図１６（Ａ）の検出データでは、左脚「Ｌ」が隠れ脚となる。また、図１５（Ｂ）の脚位置を検出した図１６（Ｂ）の検出データでは、右脚「Ｒ」が隠れ脚となる。以下、一方の脚が隠れ脚となった状態が図１６（Ａ）〜（Ｅ）に示すように継続していく。
【００５３】
ここで、本例においては、立脚・遊脚ペアを使って歩行者中心算出部１８が歩行者中心座標検出処理を行うことで、隠れ脚を使うことなく、正確な歩行者の中心座標の検出処理を行うことができる。
図１７（Ａ）〜（Ｅ）は、図１５（Ａ）〜（Ｅ）の歩行状態で、この歩行者の中心座標を検出する状態を示す。この図１７に従って検出処理状態を説明すると、まず図１７（Ａ）に示すように、右足を立脚として検出（「立」として示す位置）し、立脚管理配列に保持する処理が行われる。
【００５４】
その後、図１７（Ｂ）に示すように、検出した右足立脚の近傍に存在する右足遊脚を結合して、立脚・遊脚ペアを生成させる。このとき、遊脚座標の結合個数が一定数を超えれば、遊脚・立脚ペアが完成したものとみなし、立脚・遊脚ペア管理配列に保持する。
さらに、図１７（Ｃ）に示すように、右足立脚・遊脚ペアに対応する左足立脚を検出する。この右足立脚・遊脚ペアに対応する左足立脚は、右足立脚・遊脚ペアの近傍に存在する立脚の候補から検出される。
【００５５】
右足立脚・遊脚ペアに対応する左足立脚が検出されると、図１７（Ｃ）に示すように、右足立脚・遊脚ペアを構成する各脚の位置と、左足立脚とを結ぶラインの中点に、歩行者中心を設定し、歩行者中心座標の列を得る。この歩行者中心座標は、歩行者管理配列によって、歩行者ＩＤ毎に管理される。この歩行者中心の計算が完了した時点で、脚候補状態判定部１６で判定された右足立脚・遊脚ペアのデータは不要となり、立脚管理配列及び立脚・遊脚ペア管理配列から当該クラスを削除する。
このようにして、図１７（Ｄ）に示すように、歩行者中心座標の列が得られる。
そして、図１７（Ｅ）に示すように、次の立脚・遊脚ペアと、その立脚・遊脚ペアの近傍の立脚との間で、歩行者中心座標を検出する処理が行われる。
【００５６】
図１８は、実際に歩行者中心の変化を示す歩行経路の検出例を示す。この図１８に示す例は、図１４に示す例と同様に、２次元領域センサ３２から離れる方向に移動する歩行者を補足したものである。図１８は、歩行者の移動軌跡αが、立脚や遊脚の検出座標に基づいて検出された状態を示している。なお、図１８に示す検出座標列ｗ１，ｗ２は、歩行者が歩くときの両側の壁を示している。
【００５７】
このように歩行者中心座標を時系列で示すことで、歩行者の歩行経路を取得することができる。また、歩行者認識装置の歩行者特徴量算出部１９は、歩行者中心座標の変化に基づいて、該当する歩行者の歩容、移動方向、移動速度、一時停止状態、停止時間、滞留時間などを算出することができる。歩行者中心算出部１８で算出された中心座標で示される歩行経路や、歩行者特徴量算出部１９で算出された特徴量は、例えばＣＰＵ１１の制御で外部入出力インタフェース１３から外部に出力して表示することができる。
また、本例の歩行者認識装置が、自律移動型ロボットに搭載されている場合には、自律移動型ロボットが移動経路を算出する場合に、周囲の歩行者の歩行経路を避けた移動ルートを算出することができる。これにより、自律移動型ロボットは、歩行者の邪魔にならない移動経路で自律移動することができる。
特に本例の場合には、測距データに基づいて一人一人の歩行者を確実に補足して歩行者中心座標の変化を検出できるため、歩行者認識装置の周囲に多数の歩行者が存在する環境でも、その多数の歩行者を同時に補足することが容易にできるようになる。
【００５８】
なお、上述した実施の形態例では、図１に示す歩行者認識装置として構成した例を示したが、図４や図５のフローチャートに示す歩行者認識処理を実行するプログラムをコンピュータ装置に実装して、コンピュータ装置が歩行者認識処理を行うようにしてもよい。
また、上述した実施の形態例では、測距データを取得するセンサとして、２Ｄレーザレンジファインダよりなる２次元領域センサを使用したが、その他の測距データが得られる測距センサを使用してもよい。
【符号の説明】
【００５９】
１１…中央制御ユニット（ＣＰＵ）、１２…プログラムメモリ、１３…外部入出力インタフェース、１４…脚候補抽出部（脚候補補間部）、１５…脚候補中心座標分類部、１６…脚候補状態判定部、１７…歩行者抽出部、１８…歩行者中心算出部、１９…歩行者特徴量算出部、２１…脚候補中心メモリ、２２…脚候補クラスメモリ、２３…歩行者クラスメモリ、２４…歩行者中心メモリ、２５…歩行者特徴量メモリ、３１…測定部、３２…２次元領域センサ、３３…２次元距離データメモリ
【図１】
2019083857.tif 000003
【図２】
2019083857.tif 000004
【図３】
2019083857.tif 000005
【図４】
2019083857.tif 000006
【図５】
2019083857.tif 000007
【図６】
2019083857.tif 000008
【図７】
2019083857.tif 000009
【図８】
2019083857.tif 000010
【図９】
2019083857.tif 000011
【図１０】
2019083857.tif 000012
【図１１】
2019083857.tif 000013
【図１２】
2019083857.tif 000014
【図１３】
2019083857.tif 000015
【図１４】
2019083857.tif 000016
【図１５】
2019083857.tif 000017
【図１６】
2019083857.tif 000018
【図１７】
2019083857.tif 000019
【図１８】
2019083857.tif 000020