以下、本発明の実施形態について、図面を参照して説明する。
[第1実施形態の説明]
図1は、本発明の実施形態に係る自己位置算出装置の構成を示すブロック図である。図1に示すように、自己位置算出装置100は、投光器11と、カメラ12(撮像部)と、エンジンコントロールユニット(ECU)13と、を備える。投光器11は、車両に搭載され、車両周囲の路面にパターン光を投光する。パターン光の詳細については後述する。カメラ12は、車両に搭載され、パターン光が投光された領域を含む車両周囲の路面を撮像して画像を取得する。ECU13は、投光器11の作動を制御し、且つカメラ12により取得された画像から車両の移動量を推定する一連の情報処理サイクルを実行する。
カメラ12は、固体撮像素子、例えばCCD及びCMOSを用いたデジタルカメラであって、画像処理が可能なデジタル画像を取得する。カメラ12の撮像対象は車両周囲の路面であって、車両周囲の路面には、車両の前部、後部、側部、車両底部の路面が含まれる。例えば、図2に示すように、カメラ12は、車両10の前部、具体的にはフロントバンパ上に搭載することができる。
車両10の前方の路面31上の特徴点(「テクスチャ」ともいう)及び投光器11により投光されたパターン光32bを撮像できるように、カメラ12が設置される高さ及び向きが調整され、且つ、カメラ12が備えるレンズのピント及び絞りが自動調整される。ここで、「特徴点」とは、アスファルト上に存在する凹凸部分である。
カメラ12は、所定の時間間隔をおいて繰り返し撮像を行い、一連の画像(フレーム)群を取得する。カメラ12により取得された画像データは、撮像周期毎にECU13へ転送され、ECU13が備えるメモリ(図示省略)に記憶される。
投光器11は、図2に示すように、カメラ12の撮像範囲内の路面31に向けて、正方形や長方形の格子像を含む所定の形状を有するパターン光32bを投光する。カメラ12は、パターン光を含む路面31の領域を撮像する。投光器11は、例えば、レーザポインター及び回折格子を備える。レーザポインターから射出されたレーザ光を回折格子で回折することにより、投光器11は、図2〜図4に示すように、格子像、或いは行列状に配列された複数のスポット光からなるパターン光(32b、32a)を生成する。図3及び図4に示す例では、5×7のスポット光Spからなるパターン光32aを生成している。
図3(a)は、路面31にパターン光32aを照射し、この照射領域をカメラ12で撮像する様子を示している。また、図3(b)は、路面31にパターン光32aを照射し、この照射領域とは異なる他の領域33をカメラ12で撮像して特徴点を検出し、該特徴点の時間変化からカメラ12の移動方向34を求める様子を示している。
また、投光器11は、挙動量予測部37にて、車両10の挙動量が第1の閾値挙動量より大きい場合にパターン光32aを投光する。更に、パターン光32aを投光した後、車両10の挙動量が第1の閾値挙動量以下となった場合、予め設定した所定時間(第2の所定時間)の経過後にパターン光32aの投光を停止する。
図1に戻り、ECU13は、CPU、メモリ、及び入出力部を備えるマイクロコントローラからなり、予めインストールされたコンピュータプログラムを実行することにより、自己位置算出装置100が備える複数の情報処理部を構成する。ECU13は、カメラ12により取得された画像から車両10の移動量を推定する一連の情報処理サイクルを、画像(フレーム)毎に繰り返し実行する。ECU13は、車両10に関連する他の制御に用いるECUと兼用してもよい。
複数の情報処理部には、パターン光抽出部21と、姿勢角算出部22と、特徴点検出部23と、姿勢変化量算出部24と、自己位置算出部26と、パターン光制御部27と、挙動量検出部36、及び挙動量予測部37が含まれる。姿勢変化量算出部24には、特徴点検出部23が含まれる。
パターン光制御部27は、投光器11によるパターン光32aの投光を制御する。本実施形態では、挙動量検出部36にて車両の挙動量検出値が予め設定した第1の閾値挙動量より大きい場合に、パターン光32aを投光する。
パターン光抽出部21は、カメラ12により取得された画像をメモリから読み込み、画像からパターン光32aの位置を抽出する。図3(a)に示すように、例えば、投光器11が行列状に配列された複数のスポット光Spからなるパターン光32aを路面31に向けて投光し、路面31で反射したパターン光32aをカメラ12で検出する。パターン光抽出部21は、カメラ12により取得された画像に対して二値化処理を施すことにより、図4(a)及びその拡大図である図4(b)に示すように、スポット光Spの画像のみを抽出する。パターン光抽出部21は、図4(c)に示すように、各スポット光Spの重心の位置He、即ち、スポット光Spの画像上の座標(Uj,Vj)を算出することにより、パターン光32aの位置を抽出する。座標は、カメラ12の撮像素子の画素を単位とし、5×7のスポット光Spの場合、「j」は1以上35以下の自然数である。スポット光Spの画像上の座標(Uj,Vj)は、パターン光32aの位置を示すデータとしてメモリに記憶される。
姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、カメラ12により取得された画像におけるパターン光32aの位置から、路面31に対する車両10の距離及び姿勢角を算出する。例えば、図3(a)に示すように、投光器11とカメラ12の間の基線長Lbと、各スポット光の画像上の座標(Uj,Vj)とから、三角測量の原理を用いて、各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置として算出する。そして、該姿勢角算出部22は、カメラ12に対する各スポット光の相対位置から、パターン光32aが投光された路面31の平面式、即ち、路面31に対するカメラ12の距離及び姿勢角(法線ベクトル)を算出する。
なお、車両10に対するカメラ12の搭載位置及び撮像方向は既知であるので、実施形態においては、路面31に対する車両10の距離及び姿勢角の一例として、路面31に対するカメラ12の距離及び姿勢角を算出する。換言すれば、路面31に対するカメラ12の距離及び姿勢角を算出することにより、路面31と車両10との間の距離、及び路面31に対する車両10の姿勢角を求めることができる。以下では、路面31に対するカメラ12の距離及び姿勢角を、「距離及び姿勢角」と略す。姿勢角算出部22により算出された距離及び姿勢角は、メモリに記憶される。
具体的に説明すると、カメラ12及び投光器11は車両10にそれぞれ固定されているので、パターン光32aの照射方向と、カメラ12と投光器11との距離(図3の基線長Lb)は既知である。そこで、姿勢角算出部22は、三角測量の原理を用いて、各スポット光の画像上の座標(Uj,Vj)から各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置を3次元座標(Xj,Yj,Zj)として求めることができる。
なお、カメラ12に対する各スポット光の相対位置(Xj,Yj,Zj)は同一平面上に存在しない場合が多い。なぜなら、路面31に表出するアスファルトの凹凸に応じて各スポット光の相対位置が変化するからである。そこで、最小二乗法を用いて、各スポット光との距離誤差の二乗和が最小となるような平面式を求めてもよい。こうして算出される距離及び姿勢角のデータは、図1に示す自己位置算出部26にて用いられることになる。
特徴点検出部23は、カメラ12により取得された画像をメモリから読み込み、メモリから読み込んだ画像から、路面31上の特徴点を検出する。特徴点検出部23は、路面31上の特徴点を検出するために、例えば、「D.G. Lowe,“Distinctive Image Features from Scale-Invariant Keypoints,” Int. J. Comput. Vis., vol.60, no.2, pp. 91-110, Nov. 200 」、或いは、「金澤 靖, 金谷健一, “コンピュータビジョンのための画像の特徴点抽出,” 信学誌, vol.87, no.12, pp.1043-1048, Dec. 2004」に記載の手法を用いることができる。
具体的には、特徴点検出部23は、例えば、ハリス(Harris)作用素又はSUSANオペレータを用いて、物体の頂点のように周囲に比べて輝度値が大きく変化する点を特徴点として検出する。或いは、特徴点検出部23は、SIFT(Scale-Invariant Feature Transform)特徴量を用いて、その周囲で輝度値がある規則性のもとで変化している点を特徴点として検出してもよい。そして、特徴点検出部23は、1つの画像から検出した特徴点の総数Nを計数し、各特徴点に識別番号(i(1≦i≦N))を付す。各特徴点の画像上の位置(Ui,Vi)は、ECU13内のメモリに記憶される。図6(a)及び図6(b)は、カメラ12により取得された画像から検出された特徴点Teの例を示す。各特徴点の画像上の位置(Ui,Vi)は、メモリに記憶される。更に、各特徴点Teの変化方向及び変化量をベクトルDteとして示している。
なお、実施形態において、路面31上の特徴点は、主に大きさが1cm以上2cm以下のアスファルト混合物の粒を想定している。この特徴点を検出するために、カメラ12の解像度はVGA(約30万画素)である。また、路面31に対するカメラ12の距離は、おおよそ70cmである。更に、カメラ12の撮像方向は、水平面から約45degだけ路面31に向けて傾斜させる。また、カメラ12により取得される画像をECU13に転送するときの輝度数値は、0〜255(0:最も暗い、255:最も明るい)の範囲内である。
姿勢変化量算出部24は、一定の情報処理サイクル毎に撮像される各フレームの画像のうち、前回(時刻t)フレームの画像に含まれる複数の特徴点の画像上の位置座標(Ui,Vi)をメモリから読み込み、更に、今回(時刻t+Δt)フレームの画像に含まれる複数の特徴点の画像上の位置座標(Ui,Vi)をメモリから読み込む。そして、複数の特徴点の画像上での位置変化に基づいて、車両10の姿勢変化量を求める。ここで、「車両の姿勢変化量」とは、路面に対する車両10の「距離及び姿勢角の変化量」、及び路面上での「車両の移動量」の双方を含んでいる。以下、「距離及び姿勢角の変化量」及び「車両の移動量」の算出方法について説明する。
距離及び姿勢角の変化量は、例えば、以下のようにして求めることができる。図6(a)は、時刻tに取得された第1フレームの画像38の一例を示す。図5及び図6(a)に示すように、画像38において、例えば3つの特徴点Te1、Te2、Te3の相対位置(xi,yi,zi)がそれぞれ算出されている場合を考える。この場合、特徴点Te1、Te2、Te3によって特定される平面G(図6(a)参照)を路面と見なすことができる。よって、姿勢変化量算出部24は、各特徴点の相対位置(xi,yi,zi)から、路面(平面G)に対するカメラ12の距離及び姿勢角(法線ベクトル)を求めることができる。更に、姿勢変化量算出部24は、既知のカメラモデルによって、各特徴点Te1、Te2、Te3の間の距離(l1,l2,l3)及び夫々の特徴点Te1、Te2、Te3を結ぶ直線が成す角度を求めることができる。図5のカメラ12は、第1フレーム(時刻t)におけるカメラの位置を示す。
なお、カメラ12に対する特徴点の相対位置を示す3次元座標(xi,yi,zi)として、カメラ12の撮像方向をZ軸に設定し、撮像方向を法線とし且つカメラ12を含む平面内に、互いに直交するX軸及びY軸を設定する。一方、画像38上の座標として、水平方向及び垂直方向をそれぞれV軸及びU軸に設定する。
図6(b)は、時刻tから時間Δtだけ経過した時刻(t+Δt)に取得された第2フレームの画像38’を示す。図5のカメラ12’は、第2フレームの画像38’を撮像したときのカメラ12の位置を示す。図5及び図6(b)に示すように、画像38’において、カメラ12’が特徴点Te1、Te2、Te3を撮像し、特徴点検出部23が特徴点Te1、Te2、Te3を検出する。この場合、姿勢変化量算出部24は、時刻tにおける各特徴点Te1、Te2、Te3の相対位置(xi,yi,zi)と、各特徴点の画像38’上の位置P1(Ui,Vi)と、カメラ12のカメラモデルとから、時間Δtにおけるカメラ12の移動量ΔL(図5参照)を算出でき、ひいては車両10の移動量を算出できる。更には、距離及び姿勢角の変化量も算出することができる。例えば、以下の(1)〜(4)式からなる連立方程式を解くことにより、姿勢変化量算出部24は、カメラ12(車両)の移動量(ΔL)、及び、距離及び姿勢角の変化量を算出することができる。なお、下記の(1)式はカメラ12が歪みや光軸ずれのない理想的なピンホールカメラとしてモデル化したものであり、λiは定数、fは焦点距離である。カメラモデルのパラメータは、予めキャリブレーションをしておけばよい。
なお、姿勢変化量算出部24は、時刻tと時刻t+Δtで検出される各画像中で相対位置が算出された特徴点の全てを用いるのではなく、特徴点同士の位置関係に基づいて最適な特徴点を選定してもよい。選定方法としては、例えば、エピポーラ幾何(エピ極線幾何,R.I. Hartley: “A linear method for reconstruction from lines and points,” Proc. 5th International Conference on Computer Vision, Cambridge, Massachusetts, pp.882-887(1995))を用いることができる。
このように、姿勢変化量算出部24が、時刻tのフレーム画像38で相対位置(xi,yi,zi)が算出された特徴点Te1、Te2、Te3を、時刻t+Δtにおけるフレーム画像38’からも検出された場合に、該姿勢変化量算出部24は、路面上の複数の特徴点の相対位置(xi,yi,zi)と特徴点の画像上の位置(Ui,Vi)の時間変化から、「車両の姿勢角変化量」を算出することができる。更には、車両10の移動量を算出することができる。
即ち、前回フレームと今回フレームの間で対応関係が取れる3点以上の特徴点を検出し続けることができれば、距離及び姿勢角の変化量を加算する処理(即ち、積分演算)を継続することにより、パターン光32aを用いることなく、距離及び姿勢角を更新し続けることができる。但し、最初の情報処理サイクルにおいては、パターン光32aを用いて算出された距離及び姿勢角、或いは所定の初期的な距離及び姿勢角を用いてもよい。つまり、積分演算の起点となる距離及び姿勢角は、パターン光32aを用いて算出しても、或いは、所定の初期値を用いても構わない。所定の初期的な距離及び姿勢角は、少なくとも車両10への乗員及び搭載物を考慮した距離及び姿勢角であることが望ましい。例えば、車両10のイグニションスイッチがオン状態であって、且つシフトポジションがパーキングから他のポジションへ移動した時に、パターン光32aを投光し、パターン光32aから算出された距離及び姿勢角を、所定の初期的な距離及び姿勢角として用いればよい。これにより、車両10の旋回や加減速によるロール運動或いはピッチ運動が発生していない時の距離や姿勢角を求めることができる。
なお、前後フレーム間で特徴点を対応付けるには、例えば、検出した特徴点の周辺の小領域の画像をメモリに記録しておき、輝度や色情報の類似度から判断すればよい。具体的には、ECU13は、検出した特徴点を中心とする5×5(水平×垂直)画素分の画像をメモリに記録する。姿勢変化量算出部24は、例えば、輝度情報が20画素以上で誤差1%以下に収まっていれば、前後フレーム間で対応関係が取れる特徴点であると判断する。そして、上記の処理で取得した姿勢変化量は、後段の自己位置算出部26にて車両10の自己位置を算出する際に用いられる。
図1に示す自己位置算出部26は、姿勢変化量算出部24で算出された「距離及び姿勢角の変化量」から車両10の距離及び姿勢角を算出する。更に、姿勢変化量算出部24で算出された「車両の移動量」から車両10の自己位置を算出する。
具体的に、姿勢角算出部22(図1参照)にて算出された距離及び姿勢角(パターン光を用いて算出された距離及び姿勢角)が起点として設定された場合について説明する。この場合には、この起点(距離及び姿勢角)に対して、自己位置算出部26は、姿勢角算出部22で算出された距離及び姿勢角に対して、姿勢変化量算出部24で算出された各フレーム毎の距離及び姿勢角の変化量を逐次加算して(積分演算して)、距離及び姿勢角を最新な数値に更新する。また、自己位置算出部26は、姿勢角算出部22で距離及び姿勢角が算出された際の車両位置を起点(車両の初期位置)とし、この初期位置からの車両10の移動量を逐次加算して(積分演算して)、車両10の自己位置を算出する。例えば、地図上の位置と照合された起点(車両の初期位置)を設定することで、地図上の車両の現在位置を逐次算出することができる。
従って、姿勢変化量算出部24は、時間Δtの間でのカメラ12の移動量(ΔL)を求めることにより、車両10の自己位置を算出することができる。更には、距離及び姿勢角の変化量も同時に算出することができる。その結果、姿勢変化量算出部24は、車両10の距離及び姿勢角の変化量を考慮して、6自由度(前後、左右、上下、ヨー、ピッチ、ロール)の移動量(ΔL)を精度よく算出することができる。即ち、車両10の旋回や加減速によるロール運動或いはピッチ運動によって距離や姿勢角が変化しても、移動量(ΔL)の推定誤差を抑制することができる。
なお、実施形態では、距離及び姿勢角の変化量を算出し、距離及び姿勢角を更新することにより、カメラ12の移動量(ΔL)を算出したが、路面31に対するカメラ12の姿勢角だけを変化量算出及び更新の対象としても構わない。この場合、路面31とカメラ12との距離は一定と仮定すればよい。これにより、姿勢角の変化量を考慮して、移動量(ΔL)の推定誤差を抑制しつつ、ECU13の演算負荷を軽減し、且つ演算速度を向上させることもできる。
挙動量検出部36は、車両10に搭載される各種のセンサから車両の挙動量を取得する。挙動量の一例として、車両に搭載されるジャイロセンサの検出値を積分演算して車両のピッチ角、ロール角を算出する。そして、ピッチ角或いはロール角が車両の静止しているとき(例えば、水平状態のとき)のピッチ角、ロール角と対比して0.05[rad]以上変化した際に、挙動量検出値が第2の閾値挙動量より大きくなったと判断する。ここで、0.05[rad]とする理由は、路面に対する車両の姿勢角が0.05[rad]以上変化すると、姿勢角が変化していない場合と対比して路面に存在する特徴点の移動量の算出結果に5%以上の誤差が生じるからである。換言すれば、移動量の算出結果を5%以内に抑えるためには、第2の閾値挙動量を0.05[rad]に設定する必要がある。
挙動量予測部37は、運転者による操作機器の操作量等に基づいて、将来の挙動量を予測し、これを挙動量予測値とする。例えば、アクセルの操作量、ブレーキの操作量、及びステアリングの操作量に対して、車両の挙動量との対応を示すマップを設定し、これをメモリ(図示省略)に記憶する。一例として、アクセル開度と車速に対応した車両の前後方向の加速度によって生じる最大ピッチ角をマップとして記憶する。或いは、ステアリング操作と車速に対応した車両の横方向加速度によって生じる最大ロール角をマップとして記憶する。該挙動量予測部37は、運転者によりアクセルが操作された際に、この操作量に対応する最大ピッチ角を参照し、この最大ピッチ角が閾値として設定したピッチ角(第1の閾値挙動量)より大きくなるものと判断した場合に、車両の挙動量が第1の閾値挙動量より大きくなるものと予測する。
第1の閾値挙動量は、第2の閾値挙動量より小さい値に設定する。例えば、移動量の算出結果を5%以内に抑えるためには、第2の閾値挙動量を0.05[rad]に設定する必要があるので、それに達する前に、パターン光32aの投光が開始されるように、第1の閾値挙動量を0.03[rad]等、事前に判定できる値を実験的に設定しておく。
また、挙動量予測部37は、挙動量予測値を取得する方法として、上述した運転者による操作機器の操作量を用いる場合以外で、先行車両との間の相対速度、GPS情報に基づいて挙動量を予測することもできる。
例えば、車両の前方方向を向くように取り付けたステレオカメラ或いはレーザレンジファインダにより、自車両と先行車両との間の相対速度を算出し、車間距離が短くなった場合に、運転者がブレーキを踏むことを予測して挙動量予測値が第1閾値挙動量より大きくなると予測することもできる。更に、自車両のGPS情報と地図データを利用し、前方に急カーブが存在する場合に、ステアリング操作が行われると判断し、挙動量予測値が第1の閾値挙動量より大きくなると予測することもできる。
そして、本実施形態では、挙動量予測部37にて将来における車両10の挙動量予測値が第1の閾値挙動量より大きくなると予測される場合には、投光器11によるパターン光32aの投光を開始し、挙動量検出部36にて、車両10の挙動量検出値が第2の閾値挙動量(第1の閾値挙動量よりも大きい)より大きくなった場合に、パターン光32aから算出した距離及び姿勢角を起点に設定する。こうすることにより、パターン光32aにより求められる距離及び姿勢角が必要となった時点で、すでにパターン光32aは画像38で捉えており、迅速に演算し設定することができる。
また、挙動量検出部36にて、車両10の挙動量検出値が第1の閾値挙動量より大きくなった場合には、投光器11によるパターン光32aの投光を開始するようにした場合でも、車両10の挙動量検出値が第2の閾値挙動量(第1の閾値挙動量よりも大きい)より大きくなった場合に、パターン光32aから算出した距離及び姿勢角を起点に設定されるので、パターン光32aにより求められる距離及び姿勢角が必要となった時点で、すでにパターン光32aは画像38で捉えており、迅速に演算し設定することができる。
[第1実施形態の作用]
次に、カメラ12により取得された画像38(図5参照)から車両10の自己位置、即ち、「車両の距離及び姿勢角」、及び「車両の移動量」を算出する算出方法の一例として、ECU13により繰り返し実行される情報処理サイクルを、図7及び図8に示すフローチャートを参照して説明する。図7に示す情報処理サイクルは、車両10のイグニションスイッチがオン状態となり、自己位置算出装置100が起動すると同時に開始され、該自己位置算出装置100が停止するまで、繰り返し実行される。
初めに、図7のステップS11において、ECU13は、今回の情報処理サイクルが初回であるか否かを判断する。そして、初回である場合、即ち、前回の情報処理サイクルのデータが無い場合にはステップS14に処理を進め、初回でない場合にはステップS12に処理を進める。
ステップS12において、挙動量予測部37は、車両10に搭載される操作機器の操作量に基づいて挙動量予測値を取得する。この処理では、前述したように、アクセル操作やブレーキ操作、或いはステアリング操作の操作量を取得し、この操作量を、車両の挙動量との対応関係を示すマップに当てはめて将来における車両の挙動量を予測する。そして、これを挙動量予測値とする。
ステップS13において、挙動量予測部37は、ステップS12の処理で予測した挙動量予測値が予め設定した第1の閾値挙動量Qthより大きくなるか否かを判断する。そして、第1の閾値挙動量Qthより大きくなると判断した場合には(ステップS13でYES)、ステップS14に処理を進め、そうでなければ(ステップS13でNO)、ステップS17に処理を進める。
ステップS14において、投光器11は、路面に向けてパターン光32aを投光する。その結果、例えば、図4に示した如くの複数のスポット光からなるパターン光32aが路面上に投光される。
つまり、ステップS12〜S14の処理では、車両10の挙動量予測値を取得し、この挙動量予測値が第1の閾値挙動量Qthより大きくなると判断される場合、換言すれば、数秒後に車両10の挙動量が大きくなると予測される場合には、投光器11よりパターン光32aを投光する。こうすることにより、車両10の挙動量が増大する前に先行して路面上にパターン光32aを投光することができる。
ステップS15において、ECU13は、カメラ12を制御して、パターン光32aを投光する領域を含む車両周囲の路面31を撮像し、画像38を取得する。ECU13は、カメラ12により取得された画像データを、メモリに記憶する。
なお、ECU13はカメラ12の絞りを自動制御できる。前回の情報処理サイクルで取得した画像38の平均輝度から、輝度値の最大値と最小値の中間値になるようにカメラ12の絞りをフィードバック制御してもよい。また、パターン光32aが投光されている領域は輝度値が高いため、パターン光32aを抽出した部分を除いた領域から、平均輝度値を求めてもよい。
ステップS16に進み、パターン光抽出部21は、カメラ12により取得された画像38をメモリから読み込み、図4(c)に示したように、画像38からパターン光32aの位置を抽出する。パターン光抽出部21は、パターン光32aの位置を示すデータとして算出されたスポット光Spの画像上の座標(Uj,Vj)をメモリに記憶する。更に、ステップS16では、姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から、距離及び姿勢角を算出し、メモリに記憶する。距離及び姿勢角の算出方法は、前述した通りである。なお、姿勢角算出部22で算出した距離及び姿勢角は、後述するように、情報処理サイクルが初回の場合、及び後述する条件となった場合に、積分演算を実行する際の新たな起点として設定する。その後、ステップS19に処理を進める。
一方、ステップS17において、投光器11は、スポット光を消灯する。即ち、車両の挙動量予測値が第1の閾値挙動量Qth以下の場合には、車両の移動量、距離及び姿勢角の積分演算は高精度に実行されるものと考えられるので、パターン光32aの検出による距離及び姿勢角の設定処理を行わない。
ステップS18において、ECU13は、前述したステップS15と同様の処理を実行して、パターン光32aを投光する領域を含む車両周囲の路面31を撮像し画像38を取得する。その後、ステップS19に処理を進める。
ステップS19において、ECU13は、画像38から特徴点(例えば、アスファルト上に存在する凹凸部位)を検出し、前回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点を抽出し、特徴点の画像上の位置(Ui,Vi)から距離及び姿勢角の変化量を算出する。更に、車両10の移動量を算出する。
具体的には、まず特徴点検出部23は、カメラ12により取得された画像38をメモリから読み込み、画像38から路面31上の特徴点を検出し、各特徴点の画像上の位置(Ui,Vi)をメモリに記憶する。
姿勢変化量算出部24は、各特徴点の画像上の位置(Ui,Vi)をメモリから読み込み、距離及び姿勢角と、特徴点の画像上の位置(Ui,Vi)とから、カメラ12に対する特徴点の相対位置(xi,yi,zi)を算出する。なお、姿勢変化量算出部24は、前回の情報処理サイクルのステップS20(後述)において選択された距離及び姿勢角を用いる。姿勢変化量算出部24は、カメラ12に対する特徴点の相対位置(xi,yi,zi)をメモリに記憶する。
そして、姿勢変化量算出部24は、特徴点の画像上の位置(Ui,Vi)と、前回の情報処理サイクルのステップS19において算出された特徴点の相対位置(xi,yi,zi)をメモリから読み込む。姿勢変化量算出部24は、今回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点の相対位置(xi,yi,zi)及び画像上の位置(Ui,Vi)を用いて、距離及び姿勢角の変化量を算出する。更に、前回の特徴点の相対位置(xi,yi,zi)と今回の特徴点の相対位置(xi,yi,zi)から、車両10の移動量を算出する。そして、この処理で算出した「距離及び姿勢角の変化量」及び「車両の移動量」は、ステップS21の処理で用いられる。
ステップS20に進み、ECU13は、車両10の走行時の挙動量に応じて、距離及び姿勢角を積分演算にて算出する際の起点を設定する。詳細な処理手順については、図8に示すフローチャートを参照して後述する。
ステップS21に進み、自己位置算出部26は、ステップS20の処理で設定された積分演算の起点、及びステップS19の処理で算出された車両10の移動量から、車両10の自己位置を算出する。
こうして、本実施形態に係る自己位置算出装置100は、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の自己位置を算出することができる。
次に、図8のフローチャートを参照して、図7のステップS20の詳細な手順を説明する。初めに、ステップS31において、挙動量検出部36は、車両10の挙動量を検出する。例えば、車両10に搭載されるヨーレートセンサの出力信号に基づき、車両のピッチ角、ロール角を求める。
ステップS32において、挙動量検出部36は、車両の挙動量検出値が予め設定した第2の閾値挙動量Aより大きいか否かを判断する。例えば、ピッチ角の最大値、及びロール角の最大値を閾値挙動量として設定し、車両のピッチ角、ロール角が最大値となった際に、挙動量が第2の閾値挙動量Aより大きいと判断し(ステップS32でYES)、ステップS33に処理を進める。一方、第2の閾値挙動量A以下である場合には(ステップS32でNO)、ステップS36に処理を進める。
ステップS33において、姿勢角算出部22は、パターン光抽出部21で抽出されたパターン光32aに基づき、距離及び姿勢角が算出されているか否かを判断する。具体的な例として、投光器11より照射される35点のスポット光のうち、3点以上のスポット光が検出されている場合に距離及び姿勢角の算出が可能なので、3点以上のスポット光が検出されているか否かを判断する。そして、距離及び姿勢角が算出されている場合には(ステップS33でYES)、ステップS34に処理を進める。一方、距離及び姿勢角が算出されていない場合には(ステップS33でNO)、ステップS35に処理を進める。
ステップS34において、ECU13は、車両10の現在位置を起点とし、更に、同じ情報処理サイクルのステップS16(図7参照)で算出された距離及び姿勢角、即ち、パターン光32aの位置から算出された距離及び姿勢角を積分演算の起点として設定する。従って、距離及び姿勢角は、パターン光32aから算出された距離及び姿勢角に設定される。この距離及び姿勢角を起点として新たな積分演算が開始される。また、車両10の移動量算出の起点が新たに設定される。つまり、この位置を起点として新たに車両10の移動量の積分演算を開始する。
ステップS35において、ECU13は、車両10の現在位置を起点とし、更に、前回の情報処理サイクルで採用した距離及び姿勢角を積分演算の起点として設定する。この距離及び姿勢角を起点として新たな積分演算が開始される。また、車両10の移動量算出の起点が新たに設定される。つまり、この位置を起点として新たに車両10の移動量の積分演算を開始する。その後、図7のステップS21に処理を進める。
つまり、車両の挙動量検出値が第2の閾値挙動量Aより大きい場合(ステップS32でYESの場合)には、車両10の距離及び姿勢角が大きく変動し、これに伴って、カメラ12の距離及び姿勢角が大きく変動するので、特徴点の位置座標を正確に求められなくなる可能性が高い。従って、このような場合には姿勢変化量算出部24は、距離及び姿勢角の変化量を算出せず、パターン光32aから算出した距離及び姿勢角(ステップS34)、或いは、前回の情報処理サイクルで採用した距離及び姿勢角(ステップS35)を起点として設定する。即ち、車両10の初期位置、距離及び姿勢角を、その時点の位置、距離及び姿勢角に設定して、距離及び姿勢角の変化量の加算を開始する。こうすることにより、距離及び姿勢角に大きな誤差が生じることを防止し、車両10の移動量の算出の精度が低下することを防止する。
一方、図8のステップS36において、ECU13は、現在の設定されている起点を維持する。車両の挙動量検出値が第2の閾値挙動量A以下である場合(ステップS32でNOの場合)には、現在の起点を維持しても車両10の移動量の算出に大きな誤差は発生しないものと判断されるので、起点を維持する。その後、図7のステップS21に処理を進める。
上記の処理をまとめると、以下の通りである。カメラ12を用いて路面に存在する特徴点を含む画像を撮影し、この特徴点の時間的な変化から車両10の移動量(6自由度の移動量)を算出する場合には、カメラ12と路面との位置関係が一定であることが条件となる。しかし、実際にはカメラ12は車両10に搭載されるので、該車両10の走行状態、或いは路面環境に応じて路面との相対的な位置が時々刻々と変化する。従って、カメラ12と路面との間の位置関係、即ち、距離及び姿勢角を時間経過に伴って更新する必要がある。
ここで、距離及び姿勢角の測定方法として、投光器11より投光したパターン光32aを用いる方法がある。従って、各情報処理サイクル毎に常にパターン光32aを用いて距離及び姿勢角を算出し、更に、特徴点の時間的な変化を検出すれば、車両10の移動量を算出でき、ひいては車両10の自己位置を算出できる。しかし、路面がコンクリートの場合等、路面が平坦でパターン光32aをよく反射する状況下であればこの方法は有効であるが、実際の路面は凹凸が多く存在するアスファルトの路面であることが多い。この場合には、パターン光32aを用いるよりも、特徴点の時間的な変化に基づいて、距離及び姿勢角の変化量を算出し、起点として設定されている距離及び姿勢角に対して、変化量を逐次加算する処理(積分演算)を実行する方が距離及び姿勢角を高精度に求めることができる。
そこで、本実施形態では、初回にパターン光32aを用いた距離及び姿勢角の算出を行ってこれを起点とし、それ以後は、特徴点の時間的な変化に基づく距離及び姿勢角の変化量を算出して、この算出結果を逐次加算することにより、距離及び姿勢角を最新なものに更新する。更に、車両のロール角、或いはピッチ角等の挙動量が大きくなった場合には、特徴点の検出精度が低下するので、本実施形態では、車両の挙動量予測値が第1の閾値挙動量より大きくなることが予測される場合には、予めパターン光32aを照射する。この際、挙動量の予測に、例えば、アクセル、ブレーキ、ステアリング等の操作機器の操作信号を用いることができる。
その後、実際に挙動量検出値が第2の閾値挙動量より大きくなった際に、パターン光32aを用いて距離及び姿勢角を算出し、更に車両10の移動量を算出する。こうして、車両10の自己位置の算出精度を向上させている。
次に、図9に示すタイミングチャートを参照して、車両の挙動量予測値、及び検出値の変化、パターン光32aの投光タイミング、及び起点を演算するタイミングの関係について説明する。図9(a)は、距離及び姿勢角の起点を設定するタイミングを示す図、(b)は、パターン光32aを投光するタイミングを示す図、(c)は、車両の挙動量予測値Q1、及び検出値Q2の変化を示す図である。
例えば、図9(c)の時刻t1にて、車両10にてブレーキ操作が行われ、その操作量が過多となり、前述したブレーキ操作と車両の挙動量との対応を示すマップに基づき、車両10の挙動量予測値Q1(ピッチ角等)が第1の閾値挙動量Qthより大きくなるものと判断された場合(挙動量予測値Q1が第1の閾値挙動量Qthより大きくなる場合)には、その直後の情報処理サイクルでパターン光32aの投光を開始する。即ち、図9(b)に示すように、時刻t2にてパターン光32aの投光を開始する。なお、車両機器の操作は、ブレーキ操作に限らず、アクセル操作、ステアリング操作等を採用し、これらの操作量に基づいて挙動量予測値を求めてもよい。その後、挙動量検出値Q2が第2の閾値挙動量Aに達しない場合(図8のステップS33でNOの場合)には、距離及び姿勢角を起点とする処理は行われない。そして、車両10の挙動量検出値Q2が第2の閾値挙動量Aよりも低く設定した第1の閾値挙動量Qth以下となった時点である時刻t3にてパターン光32aの投光が終了する。
また、図9(c)の時刻t4にて、再度車両10の挙動量予測値Q1が第1の閾値挙動量Qthより大きくなると予測された場合には、前述と同様に図9(b)に示すように、時刻t5にてパターン光32aの投光を開始する。その後、時刻t6にて挙動量検出値Q2が第2の閾値挙動量Aより大きくなった場合には、図9(a)に示すように距離及び姿勢角を起点として設定する処理を行う。その後、時刻t7にて車両の挙動量検出値Q2が低下し第1の閾値挙動量Qth以下となった時点でパターン光32aの投光は停止し、更に、起点設定の処理が終了する。
この際、図9(b)、(c)から理解されるように、時刻t5にて先行してパターン光32aが投光され、その後、所定時間が経過した時刻t6にてパターン光32aに基づく距離及び姿勢角の算出が行われる。換言すれば、挙動量検出値Q2が第2の閾値挙動量Aより大きくなった時点では、既にパターン光32aの投光が開始されているので、パターン光32aを用いた距離及び姿勢角の算出を迅速に行うことができる。
このようにして、本願発明の第1実施形態に係る自己位置算出装置100では、以下の作用効果が得られる。即ち、ブレーキ操作、アクセルの操作、或いはステアリング操作等の車両機器の操作により、将来の車両の挙動量が予め設定した第1の閾値挙動量Qthより大きくなると予測される場合(挙動量予測値Q1が第1の閾値挙動量Qthより大きくなる場合)には、投光器11よりパターン光32aを投光する。従って、車両の挙動量検出値Q2が第2の閾値挙動量Aより大きくなる前の時点で先行してパターン光32aを投光することができ、パターン光32aを用いた距離及び姿勢角の算出を迅速に行うことができる。
その後、車両10の挙動量検出値Q2が第2の閾値挙動量Aより大きくなった場合には、特徴点の時間変化に基づく距離及び姿勢角の積分演算を停止する。そして、パターン光32aを用いた距離及び姿勢角が求められている場合には、この距離及び姿勢角を新たな起点として設定する。即ち、自己位置算出部26は、車両の挙動量検出値Q2が第1の閾値挙動量Qthよりも大きい場合、そのときの車両10の現在位置と距離及び姿勢角を、車両10の初期位置と距離及び姿勢角に設定し、再び、距離及び姿勢角の変化量の加算を開始する。また、パターン光32aを用いた距離及び姿勢角が求められていない場合には、前回のサイクルで更新された距離及び姿勢角を新たな起点として設定する。従って、車両の挙動量が増大した場合においても、車両の移動量を高精度に算出することが可能となる。
更に、挙動量予測値Q1が第1の閾値挙動量Qth以下となった場合、及び挙動量検出値Q2が閾値挙動量Qth以下となった場合には、パターン光32aの投光を停止するので、不要なパターン光32aの投光を省略でき、制御負荷の軽減し消費電力を低減することができる。
また、第1実施形態に係る自己位置算出装置100では、挙動量予測部37で車両10の挙動量Q1が第1の閾値挙動量Qthより大きくなるものと予測された場合に、パターン光32aを照射する例について説明したが、挙動量予測値Q1が第1の閾値挙動量Qthより大きくなった場合、予め設定した第1の所定時間の経過後に、パターン光32aを照射するようにしてもよい。こうすることにより、挙動量予測値Q1が第1の閾値挙動量Qthの付近で上下して変動するような場合に、パターン光32aの投光、停止が頻繁に繰り返されることを防止することができる。
更に、運転者によるブレーキ、アクセル、ステアリング等の操作機器の操作量に基づいて、将来における車両の挙動量を予測するので、より高精度に挙動量を予測することができる。
[第2実施形態の説明]
次に、本発明に係る自己位置算出装置100の第2実施形態について説明する。前述した第1実施形態では、パターン光32aが投光された後、車両10の挙動量検出値Q2が第1の閾値挙動量Qth以下となった場合(図9の時刻t7)に、パターン光32aの投光を停止した。これに対して、第2実施形態では、車両10の挙動量検出値Q2が第1の閾値挙動量Qth以下となった後、所定時間(第2の所定時間)だけ継続してパターン光32aの投光を継続する。以下詳細に説明する。
装置構成は、第1実施形態で示した図1と同一である。但し、パターン光制御部27は、挙動量予測値が予め設定した閾値挙動量Qthより大きくなると予測された場合に、パターン光32aを投光し、更に、該挙動量予測値が第1の閾値挙動量Qth以下となった場合には、その後、第2の所定時間だけパターン光32aの投光を継続する点で相違する。それ以外の構成は、図1と同一であるので、同一符号を付して構成説明を省略する。
以下、図10に示すフローチャートを参照して、第2実施形態に係る自己位置算出装置100の作用について説明する。図10に示すように、第2実施形態では第1実施形態で説明した図7と対比して、ステップS17aを追加している点で相違する。以下、詳細に説明する。
初めに、図10のステップS11において、ECU13は、今回の情報処理サイクルが初回であるか否かを判断する。そして、初回である場合、即ち、前回の情報処理サイクルのデータが無い場合にはステップS14に処理を進め、初回でない場合にはステップS12に処理を進める。
ステップS12において、挙動量予測部37は、車両の挙動量予測値を取得する。この処理では、一例として前述したように、アクセル操作やブレーキ操作、或いはステアリング操作に基づいて、挙動量予測値を求める。
ステップS13において、挙動量予測部37は、ステップS12の処理で求めた挙動量予測値が予め設定した第1の閾値挙動量Qthより大きくなるか否かを判断する。そして、第1の閾値挙動量Qthより大きくなると判断した場合には(ステップS13でYES)、ステップS14に処理を進め、そうでなければ(ステップS13でNO)、ステップS17aに処理を進める。
ステップS14以降の処理は、前述した第1実施形態と同様であるので、同一符号を付して説明を省略する。
ステップS17aにおいて、挙動量予測部37は、挙動量予測値が第1の閾値挙動量Qth以下となってから、第2の所定時間が経過したか否かを判断する。そして、経過していない場合には(ステップS17aでNO)、ステップS14に処理を進める。一方、経過している場合には(ステップS17aでYES)、ステップS17に処理を進める。ステップS17以降の処理は、前述した第1実施形態と同様であるので、同一符号を付して説明を省略する。
次に、図11に示すタイミングチャートを参照して、車両10の挙動量の変化、パターン光32aの投光タイミング、及び起点を演算するタイミングの関係について説明する。図11(a)は、距離及び姿勢角の起点を設定するタイミングを示す図、(b)は、パターン光32aを投光するタイミングを示す図、(c)は、車両10の挙動量予測値Q1、及び挙動量検出値Q2の変化を示す図である。
いま、図11(c)の時刻t11にて、例えば、ブレーキの操作量、アクセルの操作量、或いはステアリングの操作量に基づき、挙動量予測値Q1が第1の閾値挙動量Qthより大きくなるものと予測された場合には、パターン光32aの投光を開始する。即ち、図11(b)に示すように、時刻t12にてパターン光32aの投光を開始する。その後、車両の挙動量検出値Q2が第2の閾値挙動量Aに達しない場合には、距離及び姿勢角を起点とする処理は行われない。そして、車両10の挙動量検出値Q2が時刻t13にて第1の閾値挙動量Qth以下となった場合にパターン光32aの投光を停止する。
また、時刻t14で、再度、挙動量予測値Q1が第1の閾値挙動量Qthより大きくなるものと予測された場合には、時刻t15にてパターン光32aの投光を開始する。その後、時刻t16にて車両10の挙動量検出値Q2が第1の閾値挙動量Qth以下となった場合、第2の所定時間の経過後にパターン光32aの投光を継続する。即ち、時刻t17までパターン光32aの投光を継続する。
即ち、投光器11は、車両10の挙動量検出値Q2が第1の閾値挙動量Qthより大きくなった状態から、挙動量検出値Q2が低下して、第1の閾値挙動量Qthを以下となった場合、第2の所定時間の経過後にパターン光32aの投光を停止する。
このようにして、第2実施形態に係る自己位置算出装置100では、前述した第1実施形態と同様に、車両10の挙動量予測値Q1が増大する場合には、パターン光32aを先行して投光することができる。従って、パターン光32aを用いた距離及び姿勢角の算出を迅速に行うことができる。また、車両10の挙動量検出値Q2が低下して、第1の閾値挙動量Qth以下となった場合には、その後、第2の所定時間T1だけパターン光32aの投光が継続される。従って、車両10の挙動量予測値Q1、及び挙動量検出値Q2が上下に変動する場合において、パターン光32aの投光、停止が頻繁に繰り返されることを防止できる。その結果、車両の移動量の算出精度の向上に寄与することができる。
なお、上述した第1、第2実施形態では、挙動量予測値を取得する際に、アクセル操作、ブレーキ操作、或いはステアリング操作等、運転者による操作機器の操作量を用いる例について説明した。本願発明は、これに限定されるものではなく、例えば、GPS情報と地図情報に基づいて、走行路の前方にカーブ路が存在する場合や、先行車両との間の相対速度が大きくなった場合等、運転者が操作機器を操作すると考えられる場合に、挙動量予測値が増大すると予測することも可能である。具体的には、走行路前方のカーブ路の曲率半径が所定値以上である場合、先行車両との間の相対速度が所定値以上である場合に、将来の挙動量が閾値挙動量以上になるものと予測することが可能である。
以上、本発明の自己位置算出装置及び自己位置算出方法を図示の実施形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置き換えることができる。
例えば、図2では、カメラ12と投光器11を車両10の前面に取り付ける例について示したが、本発明はこれに限定されず、車両10の側方、後方、真下に向けて設置してもよい。また、上記した各実施形態では車両10に搭載した場合について記述したが、オートバイや建設機械など、道路の路面或いは壁面上の特徴点を撮像することが可能な移動体すべてに適用可能である。