以下、図面を参照して、実施形態を説明する。図面の記載において同一部分には同一符号を付して説明を省略する。
(第1実施形態)
(ハードウェア構成)
先ず、図1を参照して、第1実施形態に係る自己位置算出装置のハードウェア構成を説明する。自己位置算出装置は、パターン光投光器11と、カメラ12と、エンジンコントロールユニット(ECU)13と、路面投光器14とを備える。パターン光投光器11は、車両に搭載され、車両周囲の路面にパターン光を投光する。カメラ12は、車両に搭載され、パターン光が投光された領域を含む車両周囲の路面を撮像して画像を取得する撮像部の一例である。ECU13は、パターン光投光器11及び路面投光器14を制御し、且つカメラ12により取得された画像から車両の移動量を推定する一連の情報処理サイクルを実行する制御部の一例である。路面投光器14は、車両に搭載され、車両周囲の路面を照らす光源の一例である。路面投光器14は、パターン光投光器11と一体の投光器として、パターン光及び車両周囲の路面を照らす光を投光することもできる。
カメラ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に示すように、格子像、或いは行列状に配列された複数のスポット光Spからなるパターン光(32b、32a)を生成する。図3及び図4に示す例では、5×7のスポット光Spからなるパターン光32aを生成している。また、パターン光投光器11は、パターン光を投光するだけでなく路面投光器14の代わりに、カメラ12の撮像範囲内の路面を照らす光源として利用してもよい。
路面投光器14は、カメラ12の撮像範囲内の路面31を照らす光源であり、ヘッドライトやフォグランプ等の予め車両に搭載されたものでもよいし、別途車両に搭載されたものでもよい。
ECU13は、CPU、メモリ、及び入出力部を備えるマイクロコントローラからなり、予めインストールされたコンピュータプログラムを実行することにより、自己位置算出装置が備える複数の情報処理部を構成する。ECU13は、カメラ12により取得された画像から車両の現在位置を算出する一連の情報処理サイクルを、画像(フレーム)毎に繰り返し実行する。ECU13は、車両10にかかわる他の制御に用いるECUと兼用してもよい。
複数の情報処理部には、検出領域設定部20と、パターン光抽出部21と、姿勢角算出部22と、姿勢変化量算出部24と、自己位置算出部26と、パターン光制御部27とが含まれる。姿勢変化量算出部24には、特徴点検出部23が含まれる。
検出領域設定部20は、カメラ12で取得した画像から、路面投光器14の光源によって作られる路面の凹凸による画像上の影の位置を検出し、この影の位置に基づいて画像上に検出領域を設定する。特に、本実施形態では、画像上の影の位置から路面投光器14の光源方向の領域を除いて検出領域を設定する。
具体的に説明すると、図5に示すように、路面に影を作る路面上の凸部には図5(a)に示すような一部だけ突き出た小さな凸部51もあれば、図5(b)に示すような光源方向に長く突き出た凸部53もある。しかし、カメラ12で撮像した画像上では、凸部51と凸部53の高さと幅が同一であれば、図5(c)に示すように影55は同一形状になる。したがって、カメラ12で撮像した画像上で、路面上の凸部51、53の形状を判別することは難しい。
また、後述する特徴点検出部23による特徴点の検出や姿勢角算出部22による車両の距離及び姿勢角の算出は、路面が平坦であることを前提としている。したがって、凸部の画像から特徴点を検出したり、凸部に投光されたパターン光から距離及び姿勢角を算出することは好ましくない。
そこで、本実施形態では、路面上に凸部が存在する可能性のある領域を除いて検出領域を設定し、設定された検出領域内で特徴点の検出や距離及び姿勢角の算出を行う。これにより、路面上に凹凸があったとしても車両の自己位置を精度良く算出することができる。
次に、検出領域設定部20による検出領域の設定方法を説明する。まず、検出領域設定部20は、カメラ12により取得された画像をメモリから読み込み、この画像から路面の凹凸による画像上の影の位置を検出する。本実施形態では、カメラ12の撮像画像の輝度値を閾値Bthで2値化して2値化画像を生成し、暗いほうの部分を影の領域と判定する。閾値Bthは、光源の強さやカメラ及び光源の路面に対する距離や角度、設置位置に応じて変化するので、予め実験等で求めておいてメモリに記憶させておけばよい。
そして、画像上で影の位置が検出されると、検出領域設定部20は、影の位置に基づいて画像上に検出領域を設定する。具体的に、本実施形態では、画像上の影の位置から路面投光器14の光源方向の領域を除いて検出領域を設定する。
例えば、図6(a)に示すように影61a〜61eが検出された場合には、図6(b)に示すように影の位置から路面投光器14の光源方向となる点線で囲まれた領域を除外領域63a〜63eとして設定し、この除外領域63a〜63eを除いて検出領域を設定する。除外領域63a〜63eの幅は影61a〜61eの横方向(車幅方向)の最大の幅に対応して設定され、その幅で影61a〜61eの位置から光源となるパターン光投光器11または路面投光器14の方向に画像の端まで、除外領域63a〜63eが設定される。そして、検出領域設定部20は、図6(b)の画像から除外領域63a〜63eを除いて検出領域を設定し、メモリに記憶する。これにより、図5(a)、(b)に示すような凸部51、53が存在する可能性のある領域を除いて検出領域を設定できるので、路面上に凹凸があったとしても車両の自己位置を精度良く算出することができる。
パターン光抽出部21は、カメラ12により取得された画像のうち検出領域の画像をメモリから読み込み、この画像からパターン光の位置を抽出する。図3(a)に示すように、例えば、パターン光投光器11が行列状に配列された複数のスポット光からなるパターン光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の距離及び姿勢角を、「距離及び姿勢角」と略す。姿勢角算出部22により算出された距離及び姿勢角は、メモリに記憶される。
具体的には、カメラ12及びパターン光投光器11は車両10にそれぞれ固定されているため、パターン光32aの照射方向と、カメラ12とパターン光投光器11との距離(基線長Lb)は既知である。そこで、姿勢角算出部22は、三角測量の原理を用いて、各スポット光の画像上の座標(Uj、Vj)から各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置(Xj,Yj,Zj)として求めることができる。
なお、カメラ12に対する各スポット光の相対位置(Xj,Yj,Zj)は同一平面上に存在しない場合が多い。なぜなら、路面31に表出するアスファルトの凹凸に応じて各スポット光の相対位置が変化するからである。そこで、最小二乗法を用いて、各スポット光との距離誤差の二乗和が最小となるような平面式を求めてもよい。
特徴点検出部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内のメモリに記憶される。図8(a)及び図8(b)は、カメラ12により取得された画像から検出された特徴点Teの例を示す。各特徴点の画像上の位置(Ui、Vi)は、メモリに記憶される。
なお、実施形態において、路面31上の特徴点は、主に大きさが1cm以上2cm以下のアスファルト混合物の粒を想定している。この特徴点を検出するために、カメラ12の解像度はVGA(約30万画素)である。また、路面31に対するカメラ12の距離は、おおよそ70cmである。更に、カメラ12の撮像方向は、水平面から約45degだけ路面31に向けて傾斜させる。また、カメラ12により取得される画像をECU13に転送するときの輝度数値は、0〜255(0:最も暗い,255:最も明るい)の範囲内である。
姿勢変化量算出部24は、一定の情報処理サイクル毎に撮像されるフレームのうち、前回フレームに含まれる複数の特徴点の画像上の位置(Ui、Vi)をメモリから読み込む。更に、今回フレームに含まれる複数の特徴点の画像上の位置(Ui、Vi)をメモリから読み込む。そして、複数の特徴点の画像上での位置変化に基づいて、車両の姿勢変化量を求める。ここで、「車両の姿勢変化量」とは、路面31に対する「距離及び姿勢角」の変化量、及び路面上での「車両(カメラ12)の移動量」の双方を含んでいる。以下、距離及び姿勢角の変化量及び車両の移動量の算出方法について説明する。
図8(a)は、時刻tに取得された第1フレーム(画像)38の一例を示す。図7或いは図8(a)に示すように、第1フレーム38において、例えば3つの特徴点Te1、Te2、Te3の相対位置(Xi,Yi,Zi)がそれぞれ算出されている場合を考える。この場合、特徴点Te1、Te2、Te3によって特定される平面Gを路面と見なすことができる。よって、姿勢変化量算出部24は、相対位置(Xi,Yi,Zi)から、路面(平面G)に対するカメラ12の距離及び姿勢角(法線ベクトル)を求めることができる。更に、姿勢変化量算出部24は、既知のカメラモデルによって、各特徴点Te1、Te2、Te3の間の距離(l1、l2、l3)及び夫々の特徴点Te1、Te2、Te3を結ぶ直線が成す角度を求めることができる。図7のカメラ12は、第1フレームにおけるカメラの位置を示す。
なお、カメラ12に対する相対位置を示す3次元座標(Xi,Yi,Zi)として、カメラ12の撮像方向をZ軸に設定し、撮像方向を法線とし且つカメラ12を含む平面内に、互いに直交するX軸及びY軸を設定する。一方、画像38上の座標として、水平方向及び垂直方向をそれぞれV軸及びU軸に設定する。
図8(b)は、時刻tから時間Δtだけ経過した時刻(t+Δt)に取得された第2フレームを示す。図7のカメラ12’は、第2フレーム38’を撮像したときのカメラの位置を示す。図7或いは図8(b)に示すように、第2フレーム38’において、カメラ12’が特徴点Te1、Te2、Te3を撮像し、特徴点検出部23が特徴点Te1、Te2、Te3を検出する。この場合、姿勢変化量算出部24は、時刻tにおける各特徴点Te1、Te2、Te3の相対位置(Xi,Yi,Zi)と、各特徴点の第2フレーム38’上の位置P1(Ui、Vi)と、カメラ12のカメラモデルとから、時間Δtにおけるカメラ12の移動量(ΔL)だけでなく、距離及び姿勢角の変化量も算出することができる。例えば、以下の(1)〜(4)式からなる連立方程式を解くことにより、姿勢変化量算出部24は、カメラ12(車両)の移動量(ΔL)、及び距離及び姿勢角の変化量を算出することができる。なお、(1)式はカメラ12が歪みや光軸ずれのない理想的なピンホールカメラとしてモデル化したものであり、λiは定数、fは焦点距離である。カメラモデルのパラメータは、予めキャリブレーションをしておけばよい。
図3(b)は、カメラ12の撮像範囲のうち、パターン光32aが照射された領域とは異なる他の領域33から検出された特徴点の時間変化から、カメラ12の移動方向34を求める様子を模式的に示す。また、図8(a)及び図8(b)には、各特徴点Teの位置の変化方向及び変化量を示すベクトルDteを画像に重畳して示す。姿勢変化量算出部24は、時間Δtにおけるカメラ12の移動量(ΔL)だけでなく、距離及び姿勢角の変化量も同時に算出することができる。よって、姿勢変化量算出部24は、距離及び姿勢角の変化量を考慮して、6自由度の移動量(ΔL)を精度よく算出することができる。すなわち、車両10の旋回や加減速によるロール運動或いはピッチ運動によって距離や姿勢角が変化しても、移動量(ΔL)の推定誤差を抑制することができる。
なお、姿勢変化量算出部24は、相対位置が算出された特徴点すべてを用いるのではなく、特徴点同士の位置関係に基づいて最適な特徴点を選定してもよい。選定方法としては、例えば、エピポーラ幾何(エピ極線幾何,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))を用いることができる。
前後フレーム間で特徴点を対応付けるには、例えば、検出した特徴点の周辺の小領域の画像をメモリに記録しておき、輝度や色情報の類似度から判断すればよい。具体的には、ECU13は、検出した特徴点を中心とする5×5(水平×垂直)画素分の画像をメモリに記録する。姿勢変化量算出部24は、例えば、輝度情報が20画素以上で誤差1%以下に収まっていれば、前後フレーム間で対応関係が取れる特徴点であると判断する。
このように、相対位置(Xi,Yi,Zi)が算出された特徴点Te1、Te2、Te3が、後のタイミングで取得された画像38’からも検出された場合に、姿勢変化量算出部24は、路面上の複数の特徴点の時間変化に基づいて、「車両の姿勢変化量」を算出することができる。
自己位置算出部26は、姿勢変化量算出部24で算出された「距離及び姿勢角の変化量」から距離及び姿勢角を算出する。更に、姿勢変化量算出部24で算出された「車両の移動量」から車両の現在位置を算出する。
具体的には、姿勢角算出部22(図1参照)にて算出された距離及び姿勢角が起点として設定された場合、この起点(距離及び姿勢角)に対して、姿勢変化量算出部24で算出された各フレーム毎の距離及び姿勢角の変化量を逐次加算する(積分演算する)ことにより、距離及び姿勢角を最新な数値に更新する。また、姿勢角算出部22にて距離及び姿勢角が算出された際の車両位置が起点(車両の初期位置)として設定され、この初期位置から車両の移動量を逐次加算する(積分演算する)ことにより、車両の現在位置を算出する。例えば、地図上の位置と照合された起点(車両の初期位置)を設定することで、地図上の車両の現在位置を逐次算出することができる。
このように、前後フレーム間で対応関係が取れる3点以上の特徴点を検出し続けることができれば、距離及び姿勢角の変化量を加算する処理(積分演算)を継続することにより、パターン光32aを用いることなく、距離や姿勢角を最新な数値に更新し続けることができる。ただし、最初の情報処理サイクルにおいては、パターン光32aを用いて算出された距離及び姿勢角、或いは所定の初期距離及び初期姿勢角を用いてもよい。つまり、積分演算の起点となる距離及び姿勢角は、パターン光32aを用いて算出しても、或いは、所定の初期値を用いても構わない。所定の初期距離及び初期姿勢角は、少なくとも車両10への乗員及び搭載物を考慮した距離及び姿勢角であることが望ましい。例えば、車両10のイグニションスイッチがオン状態であって、且つシフトポジションがパーキングから他のポジションへ移動した時に、パターン光32aを投光し、パターン光32aから算出された距離及び姿勢角を、所定の初期距離及び初期姿勢角として用いればよい。これにより、車両10の旋回や加減速によるロール運動或いはピッチ運動が発生していない時の距離や姿勢角を求めることができる。
なお、実施形態では、距離及び姿勢角の変化量を算出し、距離及び姿勢角の変化量を逐次加算することにより、距離及び姿勢角を最新な数値に更新した。しかし、路面31に対するカメラ12の姿勢角だけをその変化量の算出及び更新の対象としても構わない。この場合、路面31に対するカメラ12の距離は一定と仮定すればよい。これにより、姿勢角の変化量を考慮して、移動量(ΔL)の推定誤差を抑制しつつ、ECU13の演算負荷を軽減し、且つ演算速度を向上させることもできる。
また、自己位置算出部26は、車両の初期位置及び姿勢角に姿勢変化量を加算してゆくことで、車両の現在位置及び姿勢角を算出するが、このとき予め設定された条件を満たしている場合には、積分演算の起点を維持して姿勢変化量を加算してゆく。一方、予め設定された条件を満たしていない場合には、同じ情報処理サイクルにおいて、姿勢角算出部22で算出された距離及び姿勢角、及びその時の車両位置を新たな起点(車両の初期距離及び初期姿勢角、及び初期位置)に設定する。そして、当該起点から車両の姿勢変化量の加算を開始する。積分演算の起点を維持するための条件としては、特徴点が正常に検出されている、誤差要因を含んでいない、あるいは所定時間または所定のサイクル数を経過していない等の条件を予め設定しておけばよい。このような条件は、車両10の移動量の誤差が積分演算によって拡大しないように設定されたものであれば、その他の条件であってもよい。
パターン光制御部27は、パターン光投光器11によるパターン光32aの投光を制御する。例えば、車両10のイグニションスイッチがオン状態となり、自己位置算出装置が起動すると同時に、パターン光制御部27は、パターン光32aの投光を開始する。その後、パターン光制御部27は、自己位置算出装置が停止するまで、パターン光32aを連続して投光する。或いは、所定の時間間隔をおいて、投光のオン/オフを繰り返してもよい。
また、パターン光制御部27は、検出領域設定部20が凹凸による影の位置を検出できるように、パターン光投光器11の投光及び路面投光器14の点灯を制御する。具体的には、車両10のイグニションスイッチがオン状態となって自己位置算出装置が起動するのと同時に投光及び点灯を開始してもよいし、必要に応じて投光及び点灯してもよい。
(情報処理サイクル)
次に、カメラ12により取得された画像38から車両10の移動量を推定する自己位置算出方法の一例として、ECU13により繰り返し実行される情報処理サイクルを、図9及び図10を参照しながら説明する。図9のフローチャートに示す情報処理サイクルは、車両10のイグニションスイッチがオン状態となり、自己位置算出装置が起動すると同時に開始され、自己位置算出装置が停止するまで、繰り返し実行される。
図9のステップS01において、パターン光制御部27は、パターン光投光器11を制御して、車両周囲の路面31にパターン光32aを投光する。図9のフローチャートでは、パターン光32aを連続して投光する例を説明する。また、パターン光制御部27は、路面が暗い場合等には車両周囲の路面31に対してパターン光投光器11から投光するか、あるいは路面投光器14を点灯する。
ステップS03に進み、ECU13は、カメラ12を制御して、パターン光32aが投光された領域を含む車両周囲の路面31を撮像して画像38を取得する。ECU13は、カメラ12により取得された画像データを、メモリに記憶する。
なお、ECU13はカメラ12の絞りを自動制御できる。前の情報処理サイクルで取得した画像38の平均輝度から、輝度値の最大値と最小値の中間値になるようにカメラ12の絞りをフィードバック制御してもよい。また、パターン光32aが投光されている領域は輝度値が高いため、パターン光32aを抽出した部分を除いた領域から、平均輝度値を求めてもよい。
ステップS05において、検出領域設定部20は、カメラ12で取得した画像をメモリから読み込み、路面の凹凸による画像上の影の位置を検出し、この影の位置に基づいて画像上に検出領域を設定する。本実施形態では、画像上の影の位置から光源方向の領域を除いて検出領域を設定し、メモリに記憶する。
ステップS07に進み、先ず、パターン光抽出部21は、カメラ12により取得された画像38のうち検出領域の画像をメモリから読み込み、この画像から図4(c)に示すようにパターン光32aの位置を抽出する。パターン光抽出部21は、パターン光32aの位置を示すデータとして算出されたスポット光Spの画像上の座標(Uj、Vj)をメモリに記憶する。
ステップS07において、姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から路面に対する車両の距離及び姿勢角を算出してメモリに記憶する。
ステップS09に進み、ECU13は、画像38のうち検出領域の画像から特徴点を検出し、前後の情報処理サイクルの間で対応関係が取れる特徴点を抽出し、特徴点の画像上の位置(Ui、Vi)から、距離及び姿勢角の変化量と車両の移動量を算出する。
具体的に、先ず、特徴点検出部23は、カメラ12により取得された画像38のうち検出領域の画像をメモリから読み込み、この画像から路面31上の特徴点を検出し、各特徴点の画像上の位置(Ui、Vi)をメモリに記憶する。姿勢変化量算出部24は、各特徴点の画像上の位置(Ui、Vi)をメモリから読み込み、距離及び姿勢角と、特徴点の画像上の位置(Ui、Vi)とから、カメラ12に対する特徴点の相対位置(Xi,Yi,Zi)を算出する。なお、姿勢変化量算出部24は、前の情報処理サイクルのステップS11において設定された距離及び姿勢角を用いる。姿勢変化量算出部24は、カメラ12に対する特徴点の相対位置(Xi,Yi,Zi)を、メモリに記憶する。
そして、姿勢変化量算出部24は、特徴点の画像上の位置(Ui、Vi)と、前の情報処理サイクルのステップS09において算出された特徴点の相対位置(Xi,Yi,Zi)をメモリから読み込む。姿勢変化量算出部24は、前後の情報処理サイクルの間で対応関係が取れる特徴点の相対位置(Xi,Yi,Zi)及び画像上の位置(Ui、Vi)を用いて、距離及び姿勢角の変化量を算出する。更に、前回の情報処理サイクルにおける特徴点の相対位置(Xi,Yi,Zi)と今回の情報処理サイクルにおける特徴点の相対位置(Xi,Yi,Zi)とから、車両の移動量を算出する。ステップS09で算出された「距離及び姿勢角の変化量」及び「車両の移動量」は、ステップS13の処理で用いられる。
ステップS11に進み、ECU13は、予め設定された条件に基づいて、積分演算の起点を設定する。詳細は、図10を参照して後述する。
ステップS13に進み、自己位置算出部26は、ステップS11の処理で設定された積分演算の起点、及びステップS09の処理で算出された車両の移動量から、車両の現在位置を算出する。
こうして、本実施形態に係る自己位置算出装置は、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の現在位置を算出することができる。
次に、図10のフローチャートを参照して、図9のステップS11の詳細な手順を説明する。ステップS900において、ECU13は、今回の情報処理サイクルが初回であるか否かを判断する。そして、初回である場合、即ち、前回の情報処理サイクルのデータが無い場合にはステップS902に処理を進め、初回でない場合にはステップS901に処理を進める。
ステップS901において、自己位置算出部26は、積分演算の起点を維持するために必要となる条件を満たしているか否かを判断する。この条件としては、例えば、特徴点が正常に検出されている、誤差要因を含んでいない、あるいは所定時間または所定のサイクル数を経過していない等の条件を予め設定しておけばよい。このような条件は、車両10の移動量の誤差が積分演算によって拡大しないように設定されたものであれば、その他の条件であってもよい。そして、条件を満たしていると判断した場合(ステップS901でYES)にはステップS903へ進み、条件を満たしていないと判断した場合(ステップS901でNO)にはステップS902へ進む。
ステップS902において、ECU13は、車両の現在位置を起点として設定し、更に、同じ情報処理サイクルのステップS07で算出された距離及び姿勢角を積分演算の起点として設定する。この距離及び姿勢角を起点として新たな積分演算が開始される。また、車両の現在位置を起点として新たに車両の移動量の積分演算を開始する。
一方、ステップS903において、ECU13は、現在設定されている積分演算の起点を維持する。こうして積分演算の起点が設定されると、図9のステップS11における積分演算の基点を設定する処理を終了する。
以上、詳細に説明したように、本実施形態に係る自己位置算出装置では、カメラ12で取得した画像から路面の凹凸による画像上の影の位置を検出し、影の位置に基づいて画像上に検出領域を設定する。そして、この検出領域におけるパターン光の位置から路面に対する車両の姿勢角を算出するとともに、検出領域から検出された特徴点の時間変化に基づいて車両の姿勢変化量を算出する。これにより、路面の凹凸の位置を考慮して画像上に検出領域を設定できるので、路面上に凹凸があっても車両の自己位置を精度良く算出することができる。
また、本実施形態に係る自己位置算出装置では、画像上の影の位置から光源方向の領域を除いて検出領域を設定する。これにより、凸部が存在する可能性のある領域を除いて検出領域を設定できるので、路面上に凹凸があっても車両の自己位置を精度良く算出することができる。
(第2実施形態)
次に、本発明の第2実施形態に係る自己位置算出装置について図面を参照して説明する。尚、ハードウェア構成は第1実施形態と同一なので、詳細な説明は省略する。
本実施形態に係る検出領域設定部20は、画像上の影の長さ変化に基づいて路面の凸部による影を判別する。そして、路面の凸部による画像上の影の位置に基づいて、画像上に検出領域を設定するようにしたことが第1実施形態と相違している。
図11(a)に示すように、光源が凸部71から遠くに存在している場合には、路面の凸部71によってできる影73は長くなる。そして、図11(b)に示すように、光源が凸部71に近づくと、影73は短くなる。すなわち、凸部による影の形状は車両の移動に応じて大きく変化する。特に、光源方向の長さの変化が大きくなる。
一方、図12(a)に示すように、路面の凹部75によってできる影77は、光源が凹部75から遠くに存在している場合でもそれほど長く伸びるわけではない。そして、図12(b)に示すように、光源が凹部75に近づいても影73は少し短くなるだけで長さが大きく変化するわけではない。すなわち、凹部による影の形状は車両が移動しても凸部の影のように大きく変化することはない。特に、光源方向の長さの変化は小さくなる。
したがって、車両が走行している場合に、画像上にある影の領域をトラッキングし、フレーム間における影の形状の変化、特に光源方向の長さの変化が予め設定された閾値よりも大きい場合には凸部の影と判定し、閾値以下の場合には凹部の影と判定する。これにより、画像上にある影が凸部による影であるか、凹部による影であるかを判別することができる。尚、閾値については、パターン光投光器11やカメラ12、路面投光器14の設置位置を考慮して、予め実験によって設定すればよい。
こうして凸部による影が判別されると、検出領域設定部20は、路面の凸部による画像上の影の位置に基づいて検出領域を設定する。具体的に、本実施形態では凸部による影の領域を除いて検出領域を設定する。
例えば、図13(a)に示す画像において、影61a、61dが凸部による影と判定され、影61b、61c、61eが凸部以外の凹部と推定される影と判定された場合には、図13(b)に示すように除外領域81a〜81eを除いて検出領域を設定する。除外領域81a、81dは、凸部による影の領域なので、凸部による影の領域と影の位置から光源方向の領域の両方を含んでいる(破線で囲まれた範囲)。一方、除外領域81b、81c、81eは、凹部による影の領域なので、影の位置から光源方向の領域だけで(破線で囲まれた範囲)、凹部による影の領域は含んでいない(破線で囲まれていない範囲)。
ここで、凸部による影の領域を検出領域から除いた理由を説明すると、凸部による影は車両の走行によって形状、特に光源方向の長さが大きく変化する。そのため、凸部による影のエッジを特徴点の検出に使用すると、車両の移動量を算出する際に誤差要因になる。そこで、凸部による影の領域を検出領域から除外することによって、特徴点を検出する際に路面の凸部による誤差を抑制し、車両の自己位置を精度良く算出できるようにしている。
また、検出領域設定部20は、路面の凹部による画像上の影の位置に基づいて検出領域を設定してもよい。具体的には、凹部による影の領域を除いて検出領域を設定する。
例えば、上述した図13(b)では凸部による影の領域を除いて検出領域が設定されていたが、図14では図13(b)の検出領域からさらに凹部による影の領域を含めて除外領域91a〜91eが設定されている(破線で囲まれた範囲)。除外領域91a、91dは図13(b)の除外領域81a、81dと同一であるが、除外領域91b、91c、91eは、図13(b)の除外領域81b、81c、81eに凹部による影の領域が追加されている。したがって、除外領域91b、91c、91eは、凹部による影の領域と影の位置から光源方向の領域の両方を含んでいる(破線で囲まれた範囲)。
ここで、凹部による影の領域を検出領域から除いた理由を説明する。移動量を算出する技術では、パターン光の位置から距離及び姿勢角を算出する場合も路面が平坦であることが前提となっている。したがって、アスファルトの小さな亀裂や欠け部分のような凹部に照射されたパターン光から距離及び姿勢角を算出することは望ましくない。路面の凹部には影ができることから、凹部である可能性の高い影の領域を検出領域から除けば、パターン光から距離及び姿勢角を算出する際に路面の凹部による誤差を抑制することができる。そこで、路面の凹部による影の領域を検出領域から除いている。
尚、本実施形態では、路面の凸部を判別し、まず凸部による影の領域を検出領域から除外し、その後さらに凸部以外の凹部と推定される影の領域を除外した。しかし、路面の凸部を判別せずに、影の領域をすべて検出領域から除外するようにしてもよい。
以上、詳細に説明したように、本実施形態に係る自己位置算出装置では、画像上の影の長さ変化に基づいて路面の凸部による影を判別する。これにより、必要に応じて凸部による影の領域と凸部以外の凹部と推定される影の領域を別々に検出領域から除外できるので、車両の自己位置を精度良く算出することができる。
また、本実施形態に係る自己位置算出装置では、路面の凸部による画像上の影の位置に基づいて画像上に検出領域を設定する。これにより、凸部による影の領域を検出領域から除外できるので、特徴点を検出する際に路面の凸部による誤差を抑制し、車両の自己位置を精度良く算出することができる。
さらに、本実施形態に係る自己位置算出装置では、路面の凹部による画像上の影の位置に基づいて画像上に検出領域を設定する。これにより、凹部による影の領域を検出領域から除外できるので、パターン光から距離及び姿勢角を算出する際に路面の凹部による誤差を抑制し、車両の自己位置を精度良く算出することができる。
(第3実施形態)
次に、本発明の第3実施形態に係る自己位置算出装置について図面を参照して説明する。尚、ハードウェア構成は第1実施形態と同一なので、詳細な説明は省略する。
本実施形態に係る検出領域設定部20は、路面の凹凸による画像上の影の位置に基づいて画像上に第1の検出領域を設定し、路面の凸部による画像上の影の位置に基づいて画像上に第1の検出領域を設定する。そして、姿勢角算出部22は第1の検出領域におけるパターン光の位置から路面に対する車両の距離及び姿勢角を算出し、特徴点検出部23は第2の検出領域から路面上の複数の特徴点を検出する。すなわち、本実施形態では、車両の距離及び姿勢角を算出するための第1の検出領域と、特徴点を検出するための第2の検出領域とを別々に設定したことが第1及び第2実施形態と相違している。
例えば、車両の距離及び姿勢角を算出するためのパターン光を抽出する第1の検出領域は、図15(a)に示すように、除外領域101a〜101eを除いた領域に設定される。パターン光から距離及び姿勢角を算出する場合には路面が平坦であることが前提となっている。そこで、除外領域101a、101dは凸部による影と判定された領域なので、凸部が存在する可能性のある領域を除外するために、影の位置から光源方向の領域が設定されている。また、除外領域101b、101c、101eは凹部による影と判定された領域なので、凹部が存在する領域を除外するために、凹部による影の領域が設定されている。このとき、凹部の外縁は明るくなるので、除外領域101b、101c、101eは実際の影の領域よりも広く設定することが好ましい。こうして除外領域101a〜101eが設定されると、第1の検出領域は除外領域101a〜101eを除いた領域に設定される。
一方、特徴点を検出するための第2の検出領域は、図15(b)に示すように、除外領域103a、103bを除いた領域に設定される。除外領域103a、103bは凸部による影と判定された領域なので、凸部が存在する可能性のある領域を除外するために、影の位置から光源方向の領域が設定されている。さらに、凸部による影は車両の走行によって形状の変化が大きいので、凸部による影の領域も除外領域103a、103bに含まれている。ただし、凹部による影と判定された領域は、特徴点の検出に利用できるので、除外せずに検出領域としている。こうして除外領域103a、103bが設定されると、第2の検出領域は除外領域103a、103bを除いた領域に設定される。
この後、姿勢角算出部22は第1の検出領域におけるパターン光の位置から路面に対する車両の距離及び姿勢角を算出し、特徴点検出部23は第2の検出領域から路面上の複数の特徴点を検出する。
以上、詳細に説明したように、本実施形態に係る自己位置算出装置では、路面の凹凸による画像上の影の位置に基づいて画像上に第1の検出領域を設定し、路面の凸部による画像上の影の位置に基づいて画像上に第2の検出領域を設定する。そして、第1の検出領域におけるパターン光の位置から路面に対する車両の姿勢角を算出し、第2の検出領域から路面上の複数の特徴点を検出する。これにより、姿勢角の算出に適した検出領域と特徴点の検出に適した検出領域とをそれぞれ設定することができるので、路面の凹部による誤差と凸部による誤差の両方を抑制し、車両の自己位置を精度良く算出することができる。特に、画像からより多くのパターン光や特徴点を検出できるので、特徴が少ない路面や路面の凹凸変化に対して、よりロバストな移動量の算出が可能となる。
上記のように、本発明の第1乃至第3の実施形態を記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
なお、図2は、カメラ12とパターン光投光器11を車両10の前面に取り付けた例を示したが、車両10の側方,後方,真下に向けて設置してもよい。また、上述の実施形態では車両10の一例として、四輪の乗用自動車を図2に示したが、オートバイ、貨物自動車、或いは例えば建設機械を運搬する特殊車両など、道路の路面或いは壁面上の特徴点を撮像することが可能な移動体(車両)すべてに適用可能である。