以下、図面を参照して本発明の実施の形態を詳細に説明する。図1に示すように、第1の実施の形態の自車運動推定装置10は、自車両に搭載されたレーザレーダ12に接続されている。
レーザレーダ12は、自車両の前方に対してレーザを1次元(水平方向)に走査しながら照射し、レーザの各反射点座標を計測する。
レーザレーダ12は、車両前方に設置され、装置を基準とする車両前方に存在する物体までの距離を検出する装置であり、出力するレーザを水平方向に走査することで、レーザの反射により自車両前方に存在する複数の物体表面上の複数の点の位置を検出することができる。レーザレーダ12は、レーザの各反射点の位置を表す2次元座標を自車運動推定装置10に逐次出力する。
自車運動推定装置10は、図2に示すように、レーザレーダ12の1スキャン分の反射点座標(x、z)を保持する複数のレジスタA0〜A63と、現時点の1つの反射点座標(x、z)を保持するレジスタBと、複数のレジスタA0〜A63とレジスタBとの間で座標値の引き算を行い2点間の移動ベクトル(dx、dz)を求める複数の演算器20と、移動ベクトル(dx、dz)に関する複数の値のカウント値(度数)を計数するためのカウンタC0〜C255と、複数の演算器20から出力された移動ベクトル(dx、dz)の度数を計数するカウンタCを、カウンタC0〜C255の中から特定し、特定されたカウンタCのカウント値をカウントアップする複数のデコーダ22と、カウンタC0〜C255の中から、最も大きいカウント値を保持するカウンタを特定し、当該カウンタに対応する移動ベクトル(dx、dz)及びカウント値を出力する比較器ツリー24と、比較器ツリーの出力に基づいて、自車運動(並進運動)の推定値を出力する出力部26と、デコーダ22、カウンタC0〜C255、及び比較器ツリー24の動作を制御する制御部28とを備えている。なお、複数のレジスタA0〜A63は、複数の第2レジスタの一例であり、レジスタBは、第1レジスタの一例である。また、比較器ツリー24は、比較器の一例であり、出力部26が、運動推定部の一例である。
複数のレジスタA0〜A63には、レジスタ制御部(図示省略)によって、1時刻前の1スキャン分の反射点座標が格納される。
レジスタBには、現在のレーザの走査により順次得られる1つの反射点座標(x、z)が、レジスタ制御部によって格納される。
演算器20の個数は、レジスタA0〜A63と同数であり、複数の演算器20と複数のレジスタA0〜A63とが一対一に対応して接続されており、各演算器20は、対応するレジスタAが保持する座標とレジスタBが保持している座標との間で引き算をし、2点間の移動ベクトルを求めて出力する。複数の演算器20は、1スキャン分の移動ベクトルを並列に求める。ここでの1スキャン分の移動ベクトルは、同じ値を持つものはない。なぜならレジスタA0〜A63の値は全て異なるからである。
また、1スキャン分の移動ベクトルの分布を求めるため、移動ベクトルの値ごとにカウンタC0〜C255が設けられている。例えば、移動ベクトル(15、15)がカウンタC255に対応する、という具合に、移動ベクトルの各値と、カウンタC0〜C255との対応関係を予め決めておく(実際には、正負を考慮する必要がある)。また、新しいスキャンの処理開始時点で、全てのカウンタC0〜C255の内容は0にリセットされる。
デコーダ22の個数は、演算器20と同数であり、複数のデコーダ22と複数の演算器20とが一対一に対応して接続されており、各デコーダ22は、対応する演算器20で求めた移動ベクトルに対応するカウンタCを特定し、特定したカウンタCのカウント値をカウントアップする。複数のデコーダ22による1スキャン分のカウントアップが並列に行われる。
レーザレーダ12から次の反射点座標が入力されると、レジスタ制御部は、入力された反射点座標で、レジスタBを更新する。
制御部28は、レーザレーダ12から反射点座標が入力される毎に、複数のデコーダ22による並列処理が行われるようにタイミング制御する。これにより、レーザレーダ12から反射点座標が入力される毎に、各演算器20による演算、複数のデコーダ22による並列処理、及びカウンタC0〜C255のカウントアップが繰り返し行われる。これを1スキャン分の反射点座標(例えば64点)について繰り返すことにより、図3に示すように、1時刻前t0の各反射点から現時刻t1の各反射点への全組み合せ分の移動ベクトルを求めて、カウンタC0〜C255のカウントアップを行い、カウンタC0〜C255のカウント値により、移動ベクトルのヒストグラムが作成される。
比較器ツリー24は、2つの入力値から大きい方を選択出力する機能(比較器)を基本ユニットとし、この基本ユニットをツリー状に組み合わせ、n個の入力から、最大値を持つ入力を選択出力するように構成したものである。図2においてはn=4の場合をひとつの長方形で表している。比較のキーはカウント値であるが、基本ユニットの出力はカウント値と移動ベクトル(dx、dz)(つまりカウンタ番号)のセットである。
制御部28は、1スキャン分の反射点座標についてのカウント処理が終わったところで、最大のカウント値をもつカウンタCを探索するため、比較器ツリー24を動作させる。これによって、1スキャン分の反射点座標についてのカウント処理の結果から、最大カウント値を有するカウンタCに対応する移動ベクトル(dx、dz)が出力される。
また、制御部28は、比較器ツリー24の動作が終了すると、カウンタC0〜C255の初期化を行う。
出力部26は、比較器ツリー24から出力される移動ベクトルを、自車運動の推定値として出力する。
次に、第1の実施の形態の自車運動推定装置10の動作について説明する。図4に示すタイミングチャートを用いて説明する。なお、上記図4では、反射点座標を「xz-○□」と表している。○はi, j, kでラインの順番を表し、□は0〜63の数値で反射点の入力されてくる順番を表している。例えば、左の反射点から右の反射点へと順番に入力される。
まず、レジスタA0〜A63レジスタには、レジスタ制御部によって、1時刻前に得られた1走査分の反射点座標が格納される。レジスタBには、次の走査(現時点の走査)の反射点座標が1点ずつ、レジスタ制御部によって格納される。なお、処理開始の指示は、制御部28によって行われる。
そして、複数の演算器20によって、レジスタBの座標と、レジスタA0〜A63が保持している座標との間で移動ベクトルが求められる。64個の移動ベクトルが同時並列に求められる。複数のデコーダ22によって、複数の演算器20から求められた64個の移動ベクトルから、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを特定し、投票先の指示があったカウンタCのカウント値を+1する。
制御部28によって、現時刻のレーザ走査による1ライン分の反射点座標を用いて求められる移動ベクトルについて、カウント値のカウントアップが終了したと判断されると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定し、特定されたカウンタCに対応するカウント値及び移動ベクトルを出力するように指示する。
そして、出力部26により、比較器ツリー24から出力された移動ベクトルを、自車運動の推定値として出力する。
上記の動作が、レーザレーダ12によるレーザの走査毎に、繰り返し行われ、自車運動の推定値が繰り返し求められる。
以上説明したように、第1の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して移動ベクトルを求め、演算器から出力される移動ベクトルの各値の度数を計数し、最大度数を計数したカウンタに基づいて、自車運動を推定することにより、簡易なハードウエア構成で、自車運動推定の実時間処理を実現することができる。
また、異なる時刻のレーザ走査で得られた反射点座標から移動ベクトルを算出し、移動ベクトルの投票処理を行うことで、全ての候補移動ベクトルについて演算する必要がなくなり、演算量を削減できる。また、移動ベクトルの算出から投票までの処理の並列化が簡素な構成で実現可能となり、処理時間を短縮できる。
次に、本発明の第2の実施の形態について説明する。なお、第1の実施の形態と同様の構成となる部分については、第1の実施の形態と同様の符号を付して説明を省略する。
第2の実施の形態では、レジスタA0〜A63にデータをセットする方法が、第1の実施の形態と異なっている。
図5に示すように、第2の実施の形態に係る自車運動推定装置210は、レジスタA0〜A63と、レジスタBBと、レーザレーダ12の1スキャン分の反射点座標(x、z)を保持する複数のレジスタB0〜B63と、複数の演算器20と、カウンタC0〜C255と、複数のデコーダ22と、比較器ツリー24と、出力部26と、制御部28とを備えている。なお、レジスタBBが、第1レジスタの一例である。
複数のレジスタA0〜A63には、レジスタ制御部(図示省略)によって、1時刻前の1スキャン分の反射点座標が格納される。
レジスタBBには、現在のレーザの走査により順次得られる反射点座標(x、z)の1つが、レジスタ制御部によって格納される。
1スキャン分の演算処理が終わるまで、レジスタA0〜A63のデータは移動させることができないため、データ移動用にレジスタB0〜B63を設ける。
反射点座標は、レーザレーダ12から時系列に入力されて来るので、新しい反射点座標が入力されるつど、制御部28によって、座標データをレジスタBB、B63〜B0内でシフトさせ(BB→B63→B62…B1→B0)、レジスタB0〜B63に1スキャン分の反射点座標をデータセットする。制御部28は、1スキャンの終了または開始のタイミングでレジスタB0〜B63の内容をレジスタA0〜A63にコピーし、レジスタA0〜A63に必要な反射点座標のデータをセットする。
次に、第2の実施の形態の自車運動推定装置10の動作について説明する。図6に示すタイミングチャートを用いて説明する。
レーザレーダ12から出力されるスキャンタイミング信号は、1ライン(レーザの1走査に相当)の間“1”となる信号で、ラインとラインの間で“0”となる。また、レーザレーダ12から出力される反射点タイミング信号は、反射点座標が入力されるタイミングを表す信号で、この信号が“1”のとき、入力バス(図示省略)上の反射点座標のデータが有効であることを保証している。制御部28は、レーザレーダ12からのタイミング信号を受けて、レジスタをはじめとする各部の制御を行う。
レーザレーダ12から入力される反射点座標は、反射点タイミング信号が“1”のときに、レジスタBBに取り込まれる。
そして、複数の演算器20によって、レジスタBBの座標と、レジスタA0〜A63が保持している座標との間で移動ベクトルが求められる。64個の移動ベクトルが同時並列に求められる。次に、複数のデコーダ22によって、複数の演算器20から求められた64個の移動ベクトルから、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを特定し、投票先の指示があったカウンタCのカウント値を+1する。
スキャンタイミング信号が“0”になったことで、制御部28は、現時刻のレーザ走査による1ライン分の反射点座標を用いて求められる移動ベクトルについて、カウント値のカウントアップが終了したと判断すると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値及び移動ベクトルを出力するように指示する。
そして、出力部26により、比較器ツリー24から出力された移動ベクトルを、自車運動の推定値として出力する。
一方、一旦レジスタBBに保持された反射点座標は、レジスタB63、レジスタB62・・・と順次移動して行き、1ラインの終わりの時点では、レジスタB0からレジスタB63に1ライン分の反射点座標が保持されている。
スキャンタイミング信号が“0”になったこと(ラインとラインの切れ目)で、制御部28は、現時刻のレーザ走査による1ライン分の反射点座標を用いて求められる移動ベクトルについて、カウント値のカウントアップが終了したと判断すると、制御部28は、レジスタB0〜B63の内容をレジスタA0〜A63にコピーするとともに、カウンタC0〜C255をクリア(カウント値を0にリセット)する。
上記の動作が、レーザレーダ12によるレーザの走査毎に、繰り返し行われ、自車運動の推定値が繰り返し求められる。
このように、反射点座標の入力部分のダブルバッファ化により、レジスタA0〜A63にデータをセットすることができる。
次に、本発明の第3の実施の形態について説明する。なお、第1の実施の形態及び第2の実施の形態と同様の構成となる部分については、第1の実施の形態と同様の符号を付して説明を省略する。
第3の実施の形態では、並進運動だけでなく、回転運動も推定している点が、第1の実施の形態と異なっている。
図7に示すように、第3の実施の形態に係る自車運動推定装置310は、複数のレジスタA0〜A63と、レジスタBBと、複数のレジスタB0〜B63と、仮定した回転運動量の候補の分だけ差し引いた座標に変換する座標変換部320と、複数の演算器20と、カウンタC0〜C255と、複数のデコーダ22と、比較器ツリー24と、出力部26と、制御部28とを備えている。
座標変換部320は、制御部28の制御により、レジスタBBの反射点座標を、仮定した回転運動量θの複数候補の各々について、当該候補の分だけ差し引いた座標に変換する。例えば、回転運動量θの候補が±10°の範囲を1°刻みに21候補ある場合(回転運動量0°を含む)、レジスタBBの反射点座標を、21個の反射点座標に順次変換する。
各演算器20は、回転運動量θの複数候補の各々について、対応するレジスタAが保持する座標と、座標変換部320によって変換された当該候補の分だけ差し引いた座標との間で引き算をし、2点間の移動ベクトル(dx、dz)を求めて出力する。
また、カウンタC0〜C255は、回転運動量を含めた移動ベクトル(dx、dz、θ)の値ごとに設けられている。例えば、移動ベクトル(15、15、10°)がカウンタC255に対応する、という具合に、移動ベクトル(dx、dz、θ)の各値と、カウンタC0〜C255とが対応付けられている。
各デコーダ22は、対応する演算器20で求めた移動ベクトル(dx、dz)と、その移動ベクトルを求めるために用いられた反射点座標の変換に用いられた回転運動量θの候補との組み合わせに対応するカウンタCを特定し、特定したカウンタCの値をカウントアップする。
制御部28は、レーザレーダ12から反射点座標が入力され、回転運動量の候補を差し引いた反射点座標に変換される毎に、複数のデコーダ22による並列処理が行われるようにタイミング制御する。これにより、レーザレーダ12から反射点座標が入力され、回転運動量の候補を差し引いた反射点座標に変換される毎に、各演算器20による演算、複数のデコーダ22による並列処理、及びカウンタC0〜C255のカウントアップが繰り返し行われる。これを1スキャン分の反射点座標(例えば64点)について繰り返すことにより、図8に示すように、1時刻前t0の各反射点から、回転運動量の各候補を差し引いて変換された現時刻t1の各反射点への全組み合せ分の移動ベクトルを求め、カウンタC0〜C255のカウント値により、回転運動量を含む移動ベクトルのヒストグラムが作成される。
比較器ツリー24における基本ユニットの出力はカウント値と移動ベクトル(dx、dz、θ)(つまりカウンタ番号)のセットである。
制御部28は、1スキャン分の反射点座標についての回転運動量の各候補を用いた移動ベクトルに対して、カウント処理が終わったところで、最大のカウント値をもつカウンタCを探索するため、比較器ツリー24を動作させる。これによって、1スキャン分の反射点座標についての回転運動量の各候補を用いた移動ベクトルに対するカウント処理の結果から、最大カウント値を有するカウンタCに対応する移動ベクトル(dx、dz、θ)が出力される。
次に、第3の実施の形態の自車運動推定装置10の動作について説明する。図9に示すタイミングチャートを用いて説明する。
レーザレーダ12から入力される反射点座標は、反射点タイミング信号が“1”のときに、レジスタBBに取り込まれる。
レジスタBBの反射点座標は、座標変換部320によって回転運動量θの各候補を差し引いた座標に各々変換される。回転運動量θの各候補は制御部28から指定される。
そして、複数の演算器20によって、レジスタBBの座標が変換される毎に、変換された座標と、レジスタA0〜A63が保持している座標との間で移動ベクトルが求められる。64個の移動ベクトルが同時並列に求められる。複数のデコーダ22によって、複数の演算器20から求められた、回転運動量を含めた64個の移動ベクトル(dx、dz、θ)から、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを特定し、投票先の指示があったカウンタCのカウント値を+1する。
スキャンタイミング信号が“0”になったことで、制御部28は、現時刻のレーザ走査による1ライン分の反射点座標の各々に対する変換後の座標の各々を用いて求められる移動ベクトルについて、カウント値のカウントアップが終了したと判断すると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値及び移動ベクトル(dx、dz、θ)を出力するように指示する。
そして、出力部26により、比較器ツリー24から出力された移動ベクトル(dx、dz、θ)を、自車運動の推定値として出力する。
以上説明したように、第3の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標から、仮定した回転運動量の候補を差し引いた反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して移動ベクトルを求め、演算器から出力される移動ベクトルの値及び回転運動量の候補の組み合わせの度数を計数し、最大度数を計数したカウンタに基づいて、回転運動量を含む自車運動を推定することにより、簡易なハードウエア構成で、回転運動量を含む自車運動推定の実時間処理を実現することができる。
次に、本発明の第4の実施の形態について説明する。なお、第1の実施の形態と同様の構成となる部分については、第1の実施の形態と同様の符号を付して説明を省略する。
第4の実施の形態では、演算器により求められた移動ベクトルが所定範囲内である場合のみ、移動ベクトルに対応するカウンタをカウントアップしている点が、第1の実施の形態と異なっている。
図10に示すように、第4の実施の形態に係る自車運動推定装置410は、レジスタA0〜A63と、レジスタBと、複数の演算器20と、移動ベクトルの範囲を指定するデータを保持する範囲指定レジスタ418と、演算器20の出力が、指定された移動ベクトルの範囲内であるか否かを判定する複数の比較器420と、カウンタC0〜C255と、複数のデコーダ422と、比較器ツリー24と、出力部26と、制御部28とを備えている。なお、比較器420が、判定器の一例である。
範囲指定レジスタ418には、移動ベクトル(dx、dz)のdz成分の最大値及び最小値、及びdy成分の最大値及び最小値が格納され、移動ベクトルの範囲が指定される。
比較器420の個数は、演算器20と同数であり、複数の比較器420と複数の演算器20とが一対一に対応して接続されており、各比較器420は、対応する演算器20で求めた移動ベクトルが、範囲指定レジスタ418に指定された範囲内であるかを判定し、範囲指定レジスタ418に指定された範囲内である場合に、対応するデコーダ422が動作するように動作許可信号を出力する。複数の比較器420による1スキャン分の比較判定が並列に行われる。
各デコーダ422は、対応する比較器420から動作許可信号が入力された場合に、対応する演算器20で求められた移動ベクトルに対応するカウンタCを特定し、特定したカウンタCの値をカウントアップする。複数のデコーダ22による1スキャン分のカウントアップが並列に行われる。デコーダ422は、対応する比較器420から動作許可信号が入力されない場合には、求めた移動ベクトルが所定の範囲内に入っていないため、カウントアップ動作を行わない。
制御部28は、現時点の自車運動推定値の信頼度が高い場合に、次スキャンでの移動ベクトルの指定範囲を狭く設定するように、範囲指定レジスタ418を更新し、現時点の自車運動推定値の信頼度が低い場合に、次スキャンでの移動ベクトルの指定範囲を広く設定するように、範囲指定レジスタ418を更新する。
例えば、以下のように、現時点の自車運動推定値の信頼度をもとに、次スキャンでの移動ベクトルの指定範囲を設定する。
まず、制御部28は、レーザの1スキャン分の反射点座標について複数の演算器20により求めた全移動ベクトルの分散(標準偏差)を求める。その分散が小さければ信頼度は高いと考えられるため、制御部28は、処理対象の移動ベクトルの範囲を、現在の自車運動推定値から2σ(2×標準偏差)の範囲内に設定するように、範囲指定レジスタ418を更新する。
なお、分散を求めるときに、複数の演算器20により求められる全移動ベクトルを対象とせず、ヒストグラムの度数(カウンタCのカウント値)の大きい方から10個程度を選択し、選択された10個の移動ベクトルにおける度数から、移動ベクトルの分散を求めるようにしてもよい。
また、制御部28は、レーザレーダ12から反射点座標が入力される毎に、複数のデコーダ22による並列処理が行われるようにタイミング制御する。これにより、レーザレーダ12から反射点座標が入力される毎に、各演算器20による演算、各比較器420による比較判定、複数のデコーダ22による並列処理、及びカウンタC0〜C255のカウントアップが繰り返し行われる。これを1スキャン分の反射点座標(例えば64点)について繰り返すことにより、1時刻前t0の各反射点から現時刻t1の各反射点への全組み合せ分の移動ベクトルを求めると共に、指定範囲外の移動ベクトルを排除し、カウンタC0〜C255のカウント値により、指定範囲内の移動ベクトルのヒストグラムが作成される。
次に、第4の実施の形態の自車運動推定装置410の動作について説明する。
まず、レジスタA0〜A63レジスタには、レジスタ制御部によって、1時刻前に得られた1走査分の反射点座標が格納される。レジスタBには、次の走査(現時刻の走査)で得られる反射点座標が1点ずつ、レジスタ制御部によって格納される。なお、処理開始の指示は、制御部28によって行われる。
そして、複数の演算器20によって、レジスタBの座標と、レジスタA0〜A63が保持している座標との間で移動ベクトルが求められる。64個の移動ベクトルが同時並列に求められる。複数の比較器420によって、範囲指定レジスタ418の内容に基づいて、複数の演算器20から求められた64個の移動ベクトルが、指定された範囲内であるか否かを判定し、肯定判定された場合に、動作許可信号を対応するデコーダ422に出力する。
動作許可信号が入力された複数のデコーダ422によって、対応する複数の演算器20から求められた複数の移動ベクトルから、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを特定し、投票先の指示があったカウンタCのカウント値を+1する。
制御部28によって、現時刻のレーザ走査による1ライン分の反射点座標について、カウント値のカウントアップが終了したと判断されると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値及び移動ベクトルを出力するように指示する。
そして、出力部26により、比較器ツリー24から出力された移動ベクトルを、自車運動の推定値として出力する。
また、制御部28によって、レーザの1スキャン分の反射点座標について複数の演算器20により求めた全移動ベクトルの分散(標準偏差)を求め、自車運動の推定値および当該分散に基づ処理対象の移動ベクトルの範囲を求め、範囲指定レジスタ418を更新する。
上記の動作が、レーザレーダ12によるレーザの走査毎に、繰り返し行われ、自車運動の推定値が繰り返し求められる。
以上説明したように、第4の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して移動ベクトルを求め、所定範囲内の移動ベクトルの各値の度数を計数し、最大度数を計数したカウンタに基づいて、自車運動を推定することにより、簡易なハードウエア構成で、自車運動推定の実時間処理を実現することができる。
また、予め分かっている自車運動の範囲内の移動ベクトルのみで投票処理を実施することにより、ノイズを除去することで自車運動推定の信頼度が向上し、演算量も削減できる。
予め自車運動のおよその値が分かっていれば、そこから外れる運動量は考慮する必要がない。むしろ、外れた運動量をカウント対象とすることでノイズが増え、誤った値が最大カウント値を示す可能性がある。本実施の形態では、カウント対象とする運動量にあらかじめ範囲を設けることで、無用のカウント処理を排除するとともに、推定結果の信頼度を向上させる。
また、範囲制限によりカウンタの個数が削減できることに加え、比較器ツリーの規模も小さくなり、ハードウエア量の削減効果もある。
なお、上記の実施の形態では、複数の演算器20により求めた1スキャン分の全移動ベクトルの分散を用いて、移動ベクトルの制限範囲を設定する場合を例に説明したが、これに限定されるものではない。
例えば、スキャン毎に出力される自車運動推定値の時系列での変化が小さければ、信頼度は高いと考えられる。また、自車運動は急激には変化しないため、推定値の時系列変化が小さければ、正しく推定されていると考えられる。また、自車運動の変化の割合は物理的な上限がある(1秒間に時速が0km→100kmという加速は通常はありえない)。そこで、制御部28は、スキャン毎に出力される自車運動推定値の時系列での変化が小さい場合に、処理対象のベクトルの制限範囲を、現在の自車運動推定値から起こり得る範囲に設定するようにしてもよい。
また、ヒストグラムの最大度数と2番目の度数(カウント値)の差が大きければ、信頼度は高いと考えられる。逆に度数の差が小さければ、1番目の移動ベクトルと2番目の移動ベクトルのどちらが真値に近いのか判断できず、信頼度は低い。そこで、制御部28は、カウンタの最大度数と2番目の度数との差が大きく、信頼度が高いと判断できる場合に、処理対象のベクトルの範囲を、現在の自車運動推定値から起こり得る範囲に設定するようにしてもよい。
次に、本発明の第5の実施の形態について説明する。なお、第1の実施の形態及び第4の実施の形態と同様の構成となる部分については、第1の実施の形態及び第4の実施の形態と同様の符号を付して説明を省略する。
第5の実施の形態では、ベース移動ベクトルを差し引いた現時点の反射点座標を用いて、差分移動ベクトルを求めている点が、第4の実施の形態と異なっている。
図11に示すように、第5の実施の形態に係る自車運動推定装置510は、レジスタA0〜A63と、レジスタBBと、ベース移動ベクトルを保持するレジスタBVと、レジスタBと、レジスタBBに保持された座標からレジスタBVに保持されたベース移動ベクトルを差し引いてレジスタBに格納する演算器512と、複数の演算器20と、範囲指定レジスタ418と、複数の比較器420と、カウンタC0〜C255と、複数のデコーダ422と、比較器ツリー24と、演算器524と、出力部26と、制御部28と、を備えている。
レジスタBBには、現在の反射点座標(x、z)が保持される。レジスタBVには、仮定されるベース移動ベクトルが保持される。本実施の形態では、直前に推定された自車運動量の推定値をベース移動ベクトルとしてレジスタBVに格納する。
演算器512は、レジスタBBに保持された反射点座標から、ベース移動ベクトルを差し引いて、1時刻前の反射点座標を推定し、レジスタBに保存する。
各演算器20は、対応するレジスタAが保持する座標とレジスタBが保持している座標との間で引き算をし、2点間の差分移動ベクトルを求めて出力する。
範囲指定レジスタ418には、差分移動ベクトル(dx、dz)のdx成分の絶対値の最大値、及びdz成分の絶対値の最大値が格納され、差分移動ベクトルの範囲が指定される。ここで、差分移動ベクトルの範囲の最小値が指定されていないのは、1時刻前の推定座標からの移動ベクトルを演算しているため、自車運動に変化がなければ、差分移動ベクトルは0となるからである。
各比較器420は、対応する演算器20で求めた移動ベクトルの各成分の絶対値が、範囲指定レジスタ418に指定された範囲内であるかを判定し、範囲指定レジスタ418に指定された範囲内である場合に、対応するデコーダ422が動作するように動作許可信号を出力する。
比較器ツリー24から出力される差分移動ベクトルは、レジスタB(1時刻前を推定した座標)までの移動ベクトルであるため、推定に用いたベース移動ベクトルに当該差分移動ベクトルを加えたものが自車運動の推定値となる。したがって、演算器524は、比較器ツリー24から出力される差分移動ベクトルに、1時刻前の自車運動の推定値である移動ベクトル(ベース移動ベクトル)を加算して、求められた移動ベクトルを出力する。
出力部26は、演算器524から出力される移動ベクトルを、自車運動の推定値として出力する。
次に、第5の実施の形態の自車運動推定装置510の動作について説明する。
まず、レジスタA0〜A63レジスタには、レジスタ制御部によって、1時刻前に得られた1走査分の反射点座標が格納される。また、レジスタ制御部によって、1時刻前に推定された自車運動の推定値である移動ベクトルが、レジスタBVに格納される。レジスタBBには、次の走査(現時刻の走査)の反射点座標が1点ずつ、レジスタ制御部によって格納される。そして、演算器512によって、レジスタBBの反射点座標から、レジスタBVの移動ベクトルを差し引いた座標を求め、レジスタBに格納する。
そして、複数の演算器20によって、レジスタBの座標と、レジスタA0〜A63が保持している座標との間で差分移動ベクトルが求められる。64個の差分移動ベクトルが同時並列に求められる。複数の比較器420によって、範囲指定レジスタ418の内容に基づいて、複数の演算器20から求められた64個の差分移動ベクトルが、指定された範囲内であるか否かを判定し、肯定判定された場合に、動作許可信号をデコーダ422に出力する。
動作許可信号が入力された複数のデコーダ422によって、対応する複数の演算器20から求められた複数の差分移動ベクトルから、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを特定し、投票先の指示があったカウンタCのカウント値を+1する。
制御部28によって、現時刻のレーザ走査による1ライン分の反射点座標を用いて求められた差分移動ベクトルについて、カウント値のカウントアップが終了したと判断されると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値及び差分移動ベクトルを出力するように指示する。
そして、演算器524により、比較器ツリー24から出力された差分移動ベクトルと、現時点のベース移動ベクトルとして用いられている1時刻前の移動ベクトルとを加算して求めた移動ベクトルを出力する。
出力部26により、演算器524から出力された移動ベクトルを、自車運動の推定値として出力する。
以上説明したように、第5の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標から、ベース移動ベクトルを差し引いた反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して差分移動ベクトルを求め、所定範囲内の差分移動ベクトルの値の度数を計数し、最大度数を計数したカウンタに基づいて、自車運動を推定することにより、簡易なハードウエア構成で、自車運動推定の実時間処理を実現することができる。
また、差分移動ベクトルを求めるようにすることにより、差分移動ベクトルの制限範囲を小さく設定することが可能となり、予想される自車運動の制限範囲から外れる差分移動ベクトルは、カウント処理の対象外とすることで、ノイズ除去の効果が得られ、自車運動推定結果の信頼度を向上させることが可能となる。また、範囲制限によりカウンタの個数が削減できることに加え、比較器ツリーの規模も小さくなり、ハードウエア量の削減効果もある。
次に、本発明の第6の実施の形態について説明する。なお、第1の実施の形態、第4の実施の形態、及び第5の実施の形態と同様の構成となる部分については、上記の実施の形態と同様の符号を付して説明を省略する。
第6の実施の形態では、並進運動だけでなく、回転運動も推定している点と、レジスタA0〜A63にデータをセットする方法とが、第5の実施の形態と異なっている。
図12に示すように、第6の実施の形態に係る自車運動推定装置610は、レジスタA0〜A63と、レジスタBBと、複数のレジスタB0〜B63と、レジスタBVAと、レジスタBと、レジスタBBに保持された座標からレジスタBVAに保持されたベース移動ベクトル(並進・回転成分)を差し引くと共に、さらに仮定した回転運動量の候補の分だけ差し引いた座標に変換する座標変換部612と、複数の演算器20と、範囲指定レジスタ418と、複数の比較器420と、カウンタC0〜C255と、複数のデコーダ422と、比較器ツリー24と、演算器624と、出力部26と、制御部28と、を備えている。
座標変換部612は、レジスタBBに保持された反射点座標から、ベース移動ベクトル(dx、dz、θ)を差し引いて、1時刻前の反射点座標を推定すると共に、制御部28の制御により、推定された1時刻前の反射点座標を、仮定した回転運動量θの複数候補の各々について、当該候補の分だけ差し引いた座標に変換し、レジスタBに保持する。
各演算器20は、回転運動量θの複数候補の各々について、対応するレジスタAが保持する座標と、レジスタB(座標変換部320によって変換された当該候補の分だけ差し引いた座標)との間で引き算をし、2点間の差分移動ベクトル(dx、dz)を求めて出力する。
また、カウンタC0〜C255は、差分移動ベクトル(dx、dz)及び回転運動量θの組み合わせごとに設けられている。
比較器420から動作許可信号が入力された各デコーダ22は、対応する演算器20で求めた差分移動ベクトル(dx、dz)と、その差分移動ベクトルを演算するのに用いられた反射点座標の変換に用いられた回転運動量θの候補との組み合わせに対応するカウンタCを特定し、特定したカウンタCのカウント値をカウントアップする。
制御部28は、レーザレーダ12から反射点座標が入力されて、1時刻前の反射点座標が推定され、更に回転運動量の候補を差し引いた反射点座標に変換される毎に、複数のデコーダ22による並列処理が行われるようにタイミング制御する。これにより、レーザレーダ12から反射点座標が入力されて1時刻前の反射点座標が推定され、更に回転運動量の候補を差し引いた反射点座標に変換される毎に、各演算器20による演算、複数の比較器420による比較判定、複数のデコーダ422による並列処理、及びカウンタC0〜C255のカウントアップが繰り返し行われる。これを1スキャン分の反射点座標(例えば64点)について繰り返すことにより、1時刻前t0の各反射点から、1時刻前の反射点座標の推定値から回転運動量の各候補を差し引いて変換された現時刻t1の各反射点への全組み合せ分の差分移動ベクトルを求めると共に、指定範囲外の差分移動ベクトルを排除し、カウンタC0〜C255のカウント値により、指定範囲内の差分移動ベクトル及び回転運動量の組み合わせのヒストグラムが作成される。
比較器ツリー24における基本ユニットの出力はカウント値と差分移動ベクトル(dx、dz)及び回転運動量θの組み合わせ(つまりカウンタ番号)とのセットである。
制御部28は、1スキャン分の反射点座標についての回転運動量の各候補を用いた移動ベクトルに対して、カウント処理が終わったところで、最大のカウント値をもつカウンタCを探索するため、比較器ツリー24を動作させる。これによって、1スキャン分の反射点座標についての回転運動量の各候補を用いた移動ベクトルに対するカウント処理の結果から、最大カウント値を有するカウンタCに対応する差分移動ベクトル(dx、dz)及び回転運動量θの組み合わせが出力される。
演算器624は、比較器ツリー24から出力される差分移動ベクトル(dx、dz)に、1時刻前の自車運動の推定値である移動ベクトル(dx、dz)を加算して、求められた並進成分(dx、dz)と、同じく比較器ツリー24から出力された回転運動量θと1時刻前の自車運動の推定値であるベース移動ベクトルの回転運動量θを加算して求められる回転運動量θからなる移動ベクトル(dx、dz、θ)を出力する。
出力部26は、演算器524から出力される移動ベクトル(dx、dz、θ)を、自車運動の推定値として出力する。
反射点座標は、レーザレーダ12から時系列に入力されて来るので、新しい反射点座標が入力されるつど、制御部28によって、座標データをレジスタBB、B63〜B0内でシフトさせ(BB→B63→B62…B1→B0)、レジスタB0〜B63に1スキャン分の座標をデータセットする。制御部28は、1スキャンの終了または開始のタイミングでレジスタB0〜B63の内容をレジスタA0〜A63にコピーし、レジスタA0〜A63に必要な反射点座標のデータをセットする。
次に、第6の実施の形態の自車運動推定装置610の動作について説明する。
まず、制御部28によって、レジスタA0〜A63レジスタには、レジスタB0〜B63の内容がコピーされ、1時刻前に得られた1走査分の反射点座標が格納される。また、レジスタ制御部によって、1時刻前に推定された自車運動の推定値である移動ベクトルの並進成分と回転成分が、レジスタBVAに格納される。レジスタBBには、次の走査(現時刻の走査)の反射点座標が1点ずつ、制御部28によって格納される。
そして、座標変換部612によって、レジスタBBの反射点座標から、レジスタBVAの移動ベクトル(並進・回転成分)を差し引くと共に、さらに回転運動量θの候補の各々について、回転運動量θの候補を差し引いた座標に各々変換する。回転運動量θの各候補は制御部28から指定される。
そして、複数の演算器20によって、レジスタBBの座標が変換される毎に、変換された座標と、レジスタA0〜A63が保持している座標との間で差分移動ベクトルが求められる。64個の差分移動ベクトルが同時並列に求められる。複数の比較器420によって、範囲指定レジスタ418の内容に基づいて、複数の演算器20から求められた64個の差分移動ベクトルが、指定された範囲内であるか否かを判定し、肯定判定された場合に、動作許可信号をデコーダ422に出力する。
動作許可信号が入力された複数のデコーダ422によって、対応する複数の演算器20から求められた複数の差分移動ベクトル及び回転運動量の組み合わせから、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを決定し、投票先の指示があったカウンタCのカウント値を+1する。
制御部28は、現時刻のレーザ走査による1ライン分の反射点座標の各々に対する変換後の座標の各々から求められる差分移動ベクトルについて、カウント値のカウントアップが終了したと判断すると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値、差分移動ベクトル(dx、dz)、及び回転運動量θを出力するように指示する。
そして、演算器624により、比較器ツリー24から出力された差分移動ベクトル(dx、dz)と、現時点のベース移動ベクトルとして用いられている1時刻前の移動ベクトルの並進成分(dx、dz)とを加算して求めた並進成分(dx、dz)と、同じく、比較器ツリー24から出力された回転運動量θと1時刻前の移動ベクトルの回転成分(θ)とを加算して求めた回転成分とからなる移動ベクトル(dx、dz、θ)を出力する。
出力部26により、演算器624から出力された移動ベクトルを、自車運動の推定値として出力する。
以上説明したように、第6の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標から、ベース移動ベクトル(並進・回転成分)を差し引くと共に、仮定した回転運動量の候補を差し引いた反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して差分移動ベクトルを求め、所定範囲内の差分移動ベクトルの値及び回転運動量の候補の組み合わせの度数を計数し、最大度数を計数したカウンタに基づいて、回転運動量を含む自車運動を推定することにより、簡易なハードウエア構成で、回転運動量を含む自車運動推定の実時間処理を実現することができる。
次に、本発明の第7の実施の形態について説明する。なお、第1の実施の形態と同様の構成となる部分については、第1の実施の形態と同様の符号を付して説明を省略する。
第7の実施の形態では、複数のカウンタが、移動ベクトルの指定された部分桁について、部分桁の値毎の度数を計数している点が、第1の実施の形態と異なっている。
図13に示すように、第7の実施の形態に係る自車運動推定装置710は、レジスタA0〜A63と、レジスタBと、複数の演算器20と、移動ベクトルの上位桁の範囲を指定するデータを保持する範囲指定レジスタ718と、演算器20の出力が、指定された移動ベクトルの範囲内であるか否かを判定する複数の比較器720と、カウンタC0〜C255と、複数のデコーダ722と、比較器ツリー24と、結合部724と、出力部26と、制御部28とを備えている。なお、比較器720が、判定器の一例である。
範囲指定レジスタ718には、移動ベクトル(dx、dz)のdx成分の上位桁(例えば、上位3桁)の最大値及び最小値、及びdy成分の上位桁(例えば、上位3桁)の最大値及び最小値が格納され、移動ベクトルの上位桁の範囲が指定される。
比較器720の個数は、演算器20と同数であり、複数の比較器720と複数の演算器20とが一対一に対応して接続されており、各比較器720は、対応する演算器20で求めた移動ベクトルの上位桁が、範囲指定レジスタ718に指定された範囲内であるかを判定し、範囲指定レジスタ718に指定された範囲内である場合に、対応するデコーダ722が動作するように動作許可信号を出力する。複数の比較器720による1スキャン分の比較判定が並列に行われる。
また、カウンタC0〜C255は、移動ベクトル(dx、dz)の部分桁の値ごとに設けられている。移動ベクトルの部分桁の各値とカウンタC0〜C255との対応関係は、固定的に決めておくのではなく、指定できるようにしておく。例えば、設定1では移動ベクトル(0,0)をカウンタにC0に、移動ベクトル(0,1)をカウンタC1に、移動ベクトル(0,2)をカウンタC2・・・と対応させ、設定2では移動ベクトル(0,4)と(0,5)をカウンタC2・・・と対応させておき、設定1を使用するか設定2を使用するかは、実行時に選択できるように構成しておく。
各デコーダ722は、対応する比較器720から動作許可信号が入力された場合に、対応する演算器20で求められた移動ベクトルの指定された部分桁の値に対応するカウンタCを特定し、特定したカウンタCの値をカウントアップする。複数のデコーダ22による1スキャン分のカウントアップが並列に行われる。デコーダ722は、対応する比較器720から動作許可信号が入力されない場合には、求めた移動ベクトルの上位桁が所定の範囲内に入っていないため、カウントアップ動作を行わない。
デコーダ722には、制御部28から部分桁が指定される。例えば、移動ベクトル(dx、dz)の指定された部分桁(例えば、dxの上位3桁とdzの上位3桁)を採用する。これによって、カウンタC0〜C255により、移動ベクトルの上位3桁の値に関するヒストグラムが作成される。また、部分桁の指定は、上位桁だけに限らず、中間部分(例えば下位4桁目〜3桁目の2桁)や下位部分が指定される。
比較器ツリー24における基本ユニットの出力はカウント値と移動ベクトルの指定された部分桁(dx、dz)とのセットである。
結合部724は、比較器ツリー24から出力される移動ベクトルの部分桁(dx、dz)に、指定された部分桁より上位桁の予め求められた値を結合して、結合された移動ベクトルを出力する。
出力部26は、結合部724から出力される移動ベクトルを、自車運動の推定値として出力する。
また、制御部28は、以下に説明するように、指定する移動ベクトルの部分桁、及びカウンタCと移動ベクトルの部分桁の値との対応関係を適応的に設定する。
例えば、自車運動(簡単のため車速のみで説明)の範囲が0〜40m/sとし、真値が3.7m/sであったとする。また、簡単のため、10進数での部分桁を指定するものとする。この前提で、0.1m/sの桁まで推定しようとすると、ヒストグラムの分割が0.1m/s(より細かい)刻みでなければならない。0〜40を0.1刻みで分割すると、ヒストグラムのビン数は401必要である。
ところが、1m/sの桁までの推定で良ければ、1刻みで分割し、ビン数は41でよい。
そこで、まず制御部28は、移動ベクトルの部分桁として、上位桁(上位2桁)を指定すると共に、ビン数41のヒストグラム(0,1,2,・・・40)に対し、移動ベクトルが示す車速を投票するように、カウンタCと移動ベクトルの部分桁の値との対応関係を設定する。上記の例では、最大度数の車速を探索すると3m/s(真値を3.7と仮定しているので)という結果が得られる。
この段階では、真値は3.0〜3.9 m/sの範囲にあるものと考えられる。
数回のスキャンにわたって、毎回3m/sという同じ自車運動推定結果が得られる場合に、その精度での信頼度は高いと考えられるため、制御部28は、移動ベクトルの部分桁として、中位桁(0.1の位の1桁)を指定すると共に、ヒストグラムの分割を変更し3.0〜3.9の範囲を10分割したビン構成で投票処理を行うように、カウンタCと移動ベクトルの部分桁の値との対応関係を設定する。
このとき、最大度数となるのは、0.7のビンであり、移動ベクトルの上位桁(基礎運動量)である3m/sと結合して、3.7m/sという自車運動推定結果が得られる。この段階では、真値は3.70〜3.79m/sの範囲にあるものと考えられる。
以降、制御部28が同様に処理することにより、順次、精度を高めることができる。
また、上記のように、移動ベクトルの部分桁の値に結合する上位桁の値は、当該部分桁より上位桁の値であって、数回のスキャンにわたって同じ値が得られた自車運動推定結果から求められる。
なお、移動ベクトルの部分桁として中位桁を指定する場合のビン構成は3.0〜3.9を含んでいればよく、2.0〜5.0の範囲を0.1単位で分割したビン構成で投票処理を行うように、カウンタCと移動ベクトルの部分桁の値との対応関係を設定しても良い。この場合、移動ベクトルの上位桁(基礎運動量)としては2.0m/sに設定するのが良く、ビン構成は0.0〜3.0の31ビンとなる。
以上、10進数で説明したが、ハードウエア構成を考慮すると、2進数で切りの良い数値(10ではなく、2のベキ乗数)で分割するのが良い。
自車の運動量は急激に変化しないため、上記のように部分桁の指定を使って、最初は粗い自車運動推定を行い、順次推定精度を上げるように、指定する移動ベクトルの部分桁、及びカウンタCと移動ベクトルの部分桁の値との対応関係を設定する。このとき、精度を上げるためにカウンタの数を増やす必要がない。
次に、第7の実施の形態の自車運動推定装置710の動作について説明する。
まず、レジスタA0〜A63レジスタには、レジスタ制御部によって、1時刻前に得られた1走査分の反射点座標が格納される。レジスタBには、次の走査(現時刻の走査)の反射点座標が1点ずつ、レジスタ制御部によって格納される。なお、処理開始の指示は、制御部28によって行われる。
そして、複数の演算器20によって、レジスタBの座標と、レジスタA0〜A63が保持している座標との間で移動ベクトルが求められる。64個の移動ベクトルが同時並列に求められる。複数の比較器720によって、範囲指定レジスタ718の内容に基づいて、複数の演算器20から求められた64個の移動ベクトルの上位桁が、指定された範囲内であるか否かを判定し、肯定判定された場合に、動作許可信号をデコーダ722に出力する。
動作許可信号が入力された複数のデコーダ722によって、対応する複数の演算器20から求められた複数の移動ベクトルの、制御部28より指定された部分桁の値から、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを特定し、投票先の指示があったカウンタCのカウント値を+1する。
制御部28によって、現時刻のレーザ走査による1ライン分の反射点座標から求められる移動ベクトルについて、カウント値のカウントアップが終了したと判断されると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値及び移動ベクトル(部分桁)を出力するように指示する。
そして、結合部724により、比較器ツリー24から出力された移動ベクトル(部分桁)と、当該部分桁より上位の上位桁の値とを結合して求めた移動ベクトルを出力する。
そして、出力部26により、結合部724から出力された移動ベクトルを、自車運動の推定値として出力する。
このとき、制御部28によって、図14に示す部分桁指定処理ルーチンが実行される。まず、ステップS700において、複数のデコーダ722に対して上位の部分桁を指定すると共に、当該上位の部分桁に応じたカウンタCと部分桁の値との対応関係を設定する。このとき、結合部724に対しては、結合する上位桁がないものとして設定される。
そして、ステップS702において、結合部724からの複数回の出力に基づいて、所定回数連続して同じ出力であるか否かを判定する。同じ出力が所定回数連続してなかった場合には、自車運動推定結果の信頼度が高くないと判断し、上記ステップS700に戻るが、一方、同じ出力が所定回数連続した場合には、自車運動推定結果の信頼度が高いと判断し、ステップS704へ移行する。
ステップS704では、複数のデコーダ722に対して中位の部分桁を指定すると共に、当該中位の部分桁に応じたカウンタCと部分桁の値との対応関係を設定する。このとき、結合部724に対しては、上記ステップS702で得られた結合部724からの出力が、結合する上位桁として設定される。
そして、ステップS706において、結合部724からの複数回の出力に基づいて、所定回数連続して同じ出力であるか否かを判定する。同じ出力が所定回数連続してなかった場合には、自車運動推定結果の信頼度が高くないと判断し、上記ステップS700に戻るが、一方、同じ出力が所定回数連続した場合には、自車運動推定結果の信頼度が高いと判断し、ステップS708へ移行する。
ステップS708では、複数のデコーダ722に対して下位の部分桁を指定すると共に、当該下位の部分桁に応じたカウンタCの対応関係を設定する。このとき、結合部724に対しては、上記ステップS706で得られた結合部724からの出力が、結合する上位桁として設定される。
そして、ステップS710において、結合部724から所定個の出力を得たか否かを判定し、所定個の出力を得たと判定されると、上記ステップS700へ戻り、部分桁としての上位桁の指定から再度開始する。
以上説明したように、第7の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して移動ベクトルを求め、上位桁が所定範囲内の移動ベクトルの部分桁の各値の度数を計数し、最大度数を計数したカウンタに基づいて、自車運動を推定することにより、簡易なハードウエア構成で、自車運動推定の実時間処理を実現することができる。
また、移動ベクトルの指定した部分桁をカウント対象とすることで、必要な精度に合わせた部分桁を指定することが可能となる。このことにより、最初は、上位の部分桁をカウント対象に指定することで、低い精度の自車運動推定を行い、次スキャンでは下位の部分桁をカウント対象に指定することで、順次精度を高める自車運動推定が可能となり、自車運動推定結果の演算精度を向上させることができる。
次に、本発明の第8の実施の形態について説明する。なお、第1の実施の形態、第5の実施の形態、及び第7の実施の形態と同様の構成となる部分については、上記の実施の形態と同様の符号を付して説明を省略する。
第8の実施の形態では、ベース移動ベクトルを差し引いた現時点の反射点座標を用いて、差分移動ベクトルを求めている点が、第7の実施の形態と異なっている。
図15に示すように、第8の実施の形態に係る自車運動推定装置810は、レジスタA0〜A63と、レジスタBBと、ベース移動ベクトルを保持するレジスタBVと、演算器512と、レジスタBと、複数の演算器20と、範囲指定レジスタ418と、複数の比較器820と、カウンタC0〜C255と、複数のデコーダ722と、比較器ツリー24と、演算器524と、出力部26と、制御部28と、を備えている。なお、比較器820が、判定器の一例である。演算器524が、結合部の一例である。
レジスタBBには、現在の反射点座標(x、z)が保持される。レジスタBVには、仮定されるベース移動ベクトルが保持される。
演算器512は、レジスタBBに保持された反射点座標から、ベース移動ベクトルを差し引いて、1時刻前の反射点座標を推定し、レジスタBに保存する。
各演算器20は、対応するレジスタAが保持する座標とレジスタBが保持している座標との間で引き算をし、2点間の差分移動ベクトルを求めて出力する。
各比較器820は、対応する演算器20で求めた差分移動ベクトルの上位桁(例えば、上位3桁)が、0であるかを判定し、差分移動ベクトルの上位桁が、0である場合に、対応するデコーダ722が動作するように動作許可信号を出力する。ここで0とは、ヒストグラム対象外の上位桁に有意の桁が含まれていないことを意味し、差分移動ベクトルが正数の場合は上位桁が2進数で“000・・・”であるかを判定することであるが、負数の場合は(2の補数表現であるとして)2進数で“111・・・”であるかを判定することに注意されたい。また、複数の比較器820による1スキャン分の比較判定が並列に行われる。なお、ヒストグラム対象外の上位桁の指定は、制御部28により行われる。
また、カウンタC0〜C255は、差分移動ベクトル(dx、dz)の部分桁の値ごとに設けられている。差分移動ベクトルの部分桁の各値とカウンタC0〜C255との対応関係は、固定的に決めておくのではなく、指定できるようにしておく。例えば、設定1では差分移動ベクトル(0,0)をカウンタにC0に、差分移動ベクトル(0,1)をカウンタC1に、差分移動ベクトル(0,2)をカウンタC2・・・と対応させ、設定2では差分移動ベクトル(0,4)と(0,5)をカウンタC2・・・と対応させておき、設定1を使用するか設定2を使用するかは、実行時に選択できるように構成しておく。
各デコーダ722は、対応する比較器820から動作許可信号が入力された場合に、対応する演算器20で求められた差分移動ベクトルの指定された部分桁の値に対応するカウンタCを特定し、特定したカウンタCの値をカウントアップする。複数のデコーダ22による1スキャン分のカウントアップが並列に行われる。デコーダ722は、対応する比較器820から動作許可信号が入力されない場合には、求めた差分移動ベクトルの上位桁が0でないため、カウントアップ動作を行わない。
デコーダ722には、制御部28から部分桁が指定される。例えば、差分移動ベクトル(dx、dz)の指定された部分桁(例えば、dxの上位4桁目〜6桁目の中位3桁とdzの上位4桁目〜6桁目の中位3桁)を採用する。これによって、カウンタC0〜C255により、差分移動ベクトルの中位3桁の値に関するヒストグラムが作成される。また、部分桁の指定は、中位桁だけに限らず、当該中位桁より下位部分(例えば下位4桁目〜3桁目の2桁や、更に下位桁)も指定される。
比較器ツリー24から出力される差分移動ベクトルは、レジスタB(1時刻前を推定した座標)までの移動ベクトルであるため、推定に用いたベース移動ベクトルに差分移動ベクトルを加えたものが自車運動の推定値となる。したがって、演算器524は、比較器ツリー24から出力される差分移動ベクトルの部分桁に、1時刻前の自車運動の推定値である移動ベクトルを加算して、求められた移動ベクトルを出力する。これによって、差分移動ベクトルの部分桁の値に、部分桁より上位桁の値が結合された移動ベクトルが求められる。
また、制御部28は、指定する差分移動ベクトルの部分桁、及びカウンタCと部分桁の値との対応関係を適応的に設定する。
例えば、制御部28は、差分移動ベクトルの部分桁として、中位桁(上位4桁目〜6桁の3桁)を指定すると共に、カウンタCと部分桁の値との対応関係を設定する。数回のスキャンにわたって、毎回同じ自車運動推定結果が得られる場合に、制御部28は、差分移動ベクトルの部分桁として、上記中位桁より下位の部分桁(上位7桁目〜9桁の3桁)を指定すると共に、カウンタCと部分桁の値との対応関係を設定する。
また、数回のスキャンにわたって、毎回同じ自車運動推定結果が得られる場合に、制御部28は、差分移動ベクトルの部分桁として、さらに下位の部分桁(上位10桁目〜12桁の3桁)を指定すると共に、カウンタCと部分桁の値との対応関係を設定する。
次に、第8の実施の形態の自車運動推定装置810の動作について説明する。
まず、レジスタA0〜A63レジスタには、レジスタ制御部によって、1時刻前に得られた1走査分の反射点座標が格納される。また、レジスタ制御部によって、1時刻前に推定された自車運動の推定値である移動ベクトルが、レジスタBVに格納される。レジスタBBには、次の走査(現時刻の走査)の反射点座標が1点ずつ、レジスタ制御部によって格納される。そして、演算器512によって、レジスタBBの反射点座標から、レジスタBVの移動ベクトルを差し引いた座標を求め、レジスタBに格納する。
そして、複数の演算器20によって、レジスタBの座標と、レジスタA0〜A63が保持している座標との間で差分移動ベクトルが求められる。64個の差分移動ベクトルが同時並列に求められる。複数の比較器820によって、複数の演算器20から求められた64個の差分移動ベクトルの指定された上位桁が、0であるか否かを判定し、肯定判定された場合に、動作許可信号を対応するデコーダ722に出力する。
動作許可信号が入力された複数のデコーダ722によって、対応する複数の演算器20から求められた複数の差分移動ベクトルの、制御部28より指定された部分桁の値から、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを特定し、投票先の指示があったカウンタCのカウント値を+1する。
制御部28によって、現時刻のレーザ走査による1ライン分の反射点座標を用いて求められる差分移動ベクトルについて、カウント値のカウントアップが終了したと判断されると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値及び差分移動ベクトルの部分桁の値を出力するように指示する。
そして、演算器524により、比較器ツリー24から出力された差分移動ベクトルの部分桁と、現時点のベース移動ベクトルとして用いられている1時刻前の移動ベクトルとを加算して求めた移動ベクトルを出力する。
出力部26により、演算器524から出力された移動ベクトルを、自車運動の推定値として出力する。
このとき、制御部28によって、上記第7の実施の形態と同様に部分桁指定処理ルーチンが実行され、複数のデコーダ722に対して、中位の部分桁から、順次、下位の部分桁が指定される。
以上説明したように、第8の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標から、ベース移動ベクトルを差し引いた反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して差分移動ベクトルを求め、所定範囲内の差分移動ベクトルの部分桁の値の度数を計数し、最大度数を計数したカウンタに基づいて、自車運動を推定することにより、簡易なハードウエア構成で、自車運動推定の実時間処理を実現することができる。
なお、上記の第5の実施の形態及び第8の実施の形態では、ベース移動ベクトルとして、直前に推定された自車運動量を用いる場合を例に説明したが、これに限定されるものではない。例えば、予め定められた基礎運動量を、ベース移動ベクトルとして用いてもよい。この場合には、演算器524により、比較器ツリー24から出力された差分移動ベクトルと、ベース移動ベクトルとして用いられる基礎運動量を加算して求めた移動ベクトルを出力すればよい。
次に、本発明の第9の実施の形態について説明する。なお、第1の実施の形態、第6の実施の形態、第7の実施の形態、及び第8の実施の形態と同様の構成となる部分については、上記の実施の形態と同様の符号を付して説明を省略する。
第9の実施の形態では、並進運動だけでなく、回転運動も推定している点と、レジスタA0〜A63にデータをセットする方法とが、第8の実施の形態と異なっている。
図16に示すように、第9の実施の形態に係る自車運動推定装置910は、レジスタA0〜A63と、レジスタBBと、複数のレジスタB0〜B63と、レジスタBVAと、レジスタBと、座標変換部612と、複数の演算器20と、複数の比較器820と、カウンタC0〜C255と、複数のデコーダ722と、比較器ツリー24と、演算器624と、出力部26と、制御部28と、を備えている。演算器624が、結合部の一例である。
座標変換部612は、レジスタBBに保持された反射点座標から、ベース移動ベクトルの並進・回転成分(dx、dz、θ)を差し引いて、1時刻前の反射点座標を推定すると共に、制御部28の制御により、推定された1時刻前の反射点座標を、仮定した回転運動量θの複数候補の各々について、当該候補の分だけ差し引いた座標に変換し、レジスタBに保持する。
各演算器20は、回転運動量θの複数候補の各々について、対応するレジスタAが保持する座標と、レジスタB(座標変換部320によって変換された当該候補の分だけ差し引いた座標)との間で引き算をし、2点間の差分移動ベクトル(dx、dz)を求めて出力する。
各比較器820は、対応する演算器20で求めた差分移動ベクトルの上位桁(例えば、上位3桁)が、0であるかを判定し、差分移動ベクトルの上位桁が、0である場合に、対応するデコーダ722が動作するように動作許可信号を出力する。
また、カウンタC0〜C255は、差分移動ベクトル(dx、dz)の部分桁の値及び回転運動量θの値の組み合わせ毎に設けられている。差分移動ベクトルの部分桁及び回転運動量の各組み合わせとカウンタC0〜C255との対応関係は、固定的に決めておくのではなく、指定できるようにしておく。
各デコーダ722は、対応する比較器720から動作許可信号が入力された場合に、対応する演算器20で求められた差分移動ベクトル(dx、dz)の指定された部分桁の値と、その差分移動ベクトルを求めるのに用いられた反射点座標の変換に用いられた回転運動量θの候補との組み合わせに対応するカウンタCを特定し、特定したカウンタCの値をカウントアップする。デコーダ722は、対応する比較器820から動作許可信号が入力されない場合には、求めた差分移動ベクトルの上位桁が0でないため、カウントアップ動作を行わない。
デコーダ722には、制御部28から部分桁、及びカウンタCと部分桁の値との対応関係が指定される。
制御部28は、レーザレーダ12から反射点座標が入力されて、1時刻前の反射点座標が推定され、更に回転運動量の候補を差し引いた反射点座標に変換される毎に、複数のデコーダ722による並列処理が行われるようにタイミング制御する。これにより、レーザレーダ12から反射点座標が入力されて1時刻前の反射点座標が推定され、更に回転運動量の候補を差し引いた反射点座標に変換される毎に、各演算器20による演算、複数の比較器820による上位桁の判定、複数のデコーダ722による並列処理、及びカウンタC0〜C255のカウントアップが繰り返し行われる。これを1スキャン分の反射点座標(例えば64点)について繰り返すことにより、1時刻前t0の各反射点から、1時刻前の反射点座標の推定値から回転運動量の各候補を差し引いて変換された現時刻t1の各反射点への全組み合せ分の差分移動ベクトルを求めると共に、指定範囲外の差分移動ベクトルを排除し、カウンタC0〜C255のカウント値により、指定範囲内の差分移動ベクトル及び回転運動量の組み合わせのヒストグラムが作成される。
比較器ツリー24における基本ユニットの出力は、カウント値と、差分移動ベクトル(dx、dz)の部分桁の値および回転運動量θの組み合わせとのセットである。
制御部28は、1スキャン分の反射点座標についての回転運動量の各候補を用いて求められた差分移動ベクトルに対するカウント処理が終わったところで、最大のカウント値をもつカウンタCを探索するため、比較器ツリー24を動作させる。これによって、1スキャン分の反射点座標についての回転運動量の各候補を用いて求められた差分移動ベクトルに対するカウント処理の結果から、最大カウント値を有するカウンタCに対応する差分移動ベクトル(dx、dz)の部分桁の値および回転運動量θが出力される。
演算器624は、比較器ツリー24から出力される差分移動ベクトル(dx、dz、θ)の部分桁の値に、1時刻前の自車運動の推定値である移動ベクトルの並進成分(dx、dz、θ)を加算して、求められた並進成分(dx、dz、θ)と、比較器ツリー24から出力された回転運動量θとからなる移動ベクトル(dx、dz、θ)を出力する。これによって、差分移動ベクトルの部分桁の値に、部分桁より上位桁の値が結合された移動ベクトルが求められる。
出力部26は、演算器624から出力される移動ベクトル(dx、dz、θ)を、自車運動の推定値として出力する。
反射点座標は、レーザレーダ12から時系列に入力されて来るので、新しい反射点座標が入力されるつど、制御部28によって、座標データをレジスタBB、B63〜B0内でシフトさせ(BB→B63→B62…B1→B0)、レジスタB0〜B63に1スキャン分の座標をデータセットする。制御部28は、1スキャンの終了または開始のタイミングでレジスタB0〜B63の内容をレジスタA0〜A63にコピーし、レジスタA0〜A63に必要な反射点座標のデータをセットする。
また、制御部28は、上記第8の実施の形態と同様に、指定する差分移動ベクトルの部分桁、及びカウンタCと部分桁の値との対応関係を適応的に設定する。
次に、第9の実施の形態の自車運動推定装置910の動作について説明する。
まず、制御部28によって、レジスタA0〜A63には、レジスタB0〜B63の内容がコピーされ、1時刻前に得られた1走査分の反射点座標が格納される。また、レジスタ制御部によって、1時刻前に推定された自車運動の推定値である移動ベクトルの並進・回転成分が、レジスタBVAに格納される。レジスタBBには、次の走査(現時刻の走査)の反射点座標が1点ずつ、制御部28によって格納される。
そして、座標変換部612によって、レジスタBBの反射点座標から、レジスタBVAの移動ベクトルを差し引くと共に、回転運動量θの候補の各々について、回転運動量θの候補を差し引いた座標に各々変換する。回転運動量θの各候補は制御部28から指定される。
そして、複数の演算器20によって、レジスタBBの座標が変換される毎に、変換された座標と、レジスタA0〜A63が保持している座標との間で差分移動ベクトルが求められる。64個の差分移動ベクトルが同時並列に求められる。複数の比較器820によって、複数の演算器20から求められた64個の差分移動ベクトルの指定された上位桁が、0であるか否かを判定し、肯定判定された場合に、動作許可信号をデコーダ722に出力する。
動作許可信号が入力された複数のデコーダ722によって、対応する複数の演算器20から求められた複数の差分移動ベクトルの部分桁の値及び回転運動量の組み合わせから、それぞれの投票先(ヒストグラムの対応するビン)のカウンタCを決定し、投票先の指示があったカウンタCのカウント値を+1する。
制御部28は、現時刻のレーザ走査による1ライン分の反射点座標の各々に対する変換後の座標の各々を用いて求められた差分移動ベクトルについて、カウント値のカウントアップが終了したと判断すると、制御部28は、比較器ツリー24に対して、最大のカウント値を有するカウンタCを特定して、特定されたカウンタCに対応するカウント値、差分移動ベクトル(dx、dz)の部分桁の値、及び回転運動量θを出力するように指示する。
そして、演算器624により、比較器ツリー24から出力された差分移動ベクトル(dx、dz)と、現時点のベース移動ベクトルとして用いられている1時刻前の移動ベクトルの並進成分(dx、dz)とを加算して求めた並進成分(dx、dz)と、同じく、比較器ツリー24から出力された回転運動量θと1時刻前の移動ベクトルの回転成分θとを加算して求めた回転成分とからなる移動ベクトル(dx、dz、θ)を出力する。
出力部26により、演算器624から出力された移動ベクトルを、自車運動の推定値として出力する。
このとき、制御部28によって、上記第7の実施の形態と同様に部分桁指定処理ルーチンが実行され、複数のデコーダ722に対して、中位の部分桁から、順次、下位の部分桁が指定される。
以上説明したように、第9の実施の形態に係る自車運動推定装置によれば、レーザレーダから順次得られる推定対象時点のレーザの走査に対する反射点座標から、ベース移動ベクトルを差し引くと共に、仮定した回転運動量の候補を差し引いた反射点座標と、推定対象時点より1時刻前に得られたレーザの1走査分の複数の反射点座標とについて、それぞれの差分を演算して差分移動ベクトルを求め、所定範囲内の差分移動ベクトルの部分桁の値及び回転運動量の候補の組み合わせの度数を計数し、最大度数を計数したカウンタに基づいて、回転運動量を含む自車運動を推定することにより、簡易なハードウエア構成で、回転運動量を含む自車運動推定の実時間処理を実現することができる。
なお、上記の第6の実施の形態及び第9の実施の形態では、ベース移動ベクトルとして、直前に推定された自車運動量を用いる場合を例に説明したが、これに限定されるものではない。例えば、予め定められた基礎運動量を、ベース移動ベクトルとして用いてもよい。この場合には、演算器624により、比較器ツリー24から出力された差分移動ベクトルと、ベース移動ベクトルとして用いられる基礎運動量を加算して、移動ベクトルの並進成分を求めればよい。
なお、上記の第1の実施の形態〜第9の実施の形態において、1スキャン分の反射点座標の数だけ演算器を設ける場合を例に説明したが、これに限定されるものではなく、演算器を少なくとも1つ設けるようにすればよい。この場合には、少なくとも1つの演算器により、現時点の反射点座標と、レジスタA0〜A63の反射点座標との各組み合わせについて移動ベクトル又は差分移動ベクトルを順次求めるようにすればよい。更に、デコーダを少なくとも1つ設けるようにしてもよい。この場合には、少なくとも1つのデコーダにより、演算器により順次演算される移動ベクトル又は差分移動ベクトルに対応するカウンタを順次特定して、カウンタCの値をカウントアップするようにすればよい。
また、1スキャン分の全ての反射点座標を用いて演算する場合を例に説明したが、これに限定されるものではなく、1スキャン分の一部の反射点座標を用いて演算するようにしてもよい。例えば、レーザレーダが1走査あたり128点の反射点座標を出力する場合に、そのうちの100点の反射点座標のみを演算に用いるようにしてもよい。