(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
以下、本発明を適用した第1及び第2実施形態について図面を参照して説明する。
【0009】
[第1実施形態]
[ハードウェア構成]
先ず、
図1を参照して、第1実施形態に係わる自己位置算出装置のハードウェア構成を説明する。自己位置算出装置は、投光器11と、カメラ12と、エンジンコントロールユニット(ECU)13とを備える。投光器11は、車両に搭載され、車両周囲の路面にパターン光を投光する。カメラ12は、車両に搭載され、パターン光が投光された領域を含む車両周囲の路面を撮像して画像を取得する撮像部の一例である。ECU13は、投光器11を制御し、且つカメラ12で取得した画像から車両の自己位置を算出する一連の情報処理サイクルを実行する制御部の一例である。
【0010】
カメラ12は、固体撮像素子、例えばCCD及びCMOSを用いたデジタルカメラであって、画像処理が可能なデジタル画像を取得する。カメラ12の撮像対象は車両周囲の路面であって、車両周囲の路面には車両の前部、後部、側部、車両底部の路面が含まれている。例えば、
図2に示すように、カメラ12は、車両10の前部、具体的にはフロントバンパ上に搭載することができる。車両10の前方の路面31上の特徴点(テクスチャ)及び投光器11から投光されたパターン光32bを撮像できるように、カメラ12を設置する高さ及び向きが調整され、且つ、カメラ12が備えるレンズのピント及び絞りについても自動調整される。カメラ12は、所定の時間間隔をおいて繰り返し撮像を行い、一連の画像(フレーム)群を取得する。カメラ12で取得した画像データは、撮像する毎にECU13へ転送され、ECU13が備えるメモリに記憶される。
【0011】
投光器11は、
図2に示すように、カメラ12の撮像範囲内の路面31に向けて、正方形や長方形の格子像を含む所定の形状を有するパターン光32bを投光する。カメラ12は、路面31に照射されたパターン光を撮像する。投光器11は、例えば、レーザポインター及び回折格子を備える。レーザポインターから射出されたレーザ光を回折格子で回折することにより、投光器11は、
図2〜
図4に示すように、格子像、或いは行列状に配列された複数のスポット光からなるパターン光(32b、32a)を生成する。
図3及び
図4に示す例では、5×7個のスポット光からなるパターン光32aを生成している。
【0012】
図1に戻り、ECU13は、CPU、メモリ、及び入出力部を備えるマイクロコントローラからなり、予めインストールされたコンピュータプログラムを実行することにより、自己位置算出装置として機能する複数の情報処理部を構成する。ECU13は、カメラ12で取得した画像から車両の自己位置を算出する一連の情報処理サイクルを、画像(フレーム)毎に繰り返し実行する。尚、ECU13は、車両10の他の制御に用いるECUと兼用してもよい。
【0013】
ここで、複数の情報処理部には、パターン光抽出部21と、姿勢角算出部22と、特徴点検出部23と、姿勢変化量算出部24と、自己位置算出部26と、パターン光制御部27と、路面状態判定部30とが含まれる。姿勢変化量算出部24には、特徴点検出部23が含まれる。
【0014】
パターン光抽出部21は、カメラ12で取得した画像をメモリから読み込み、この画像からパターン光の位置を抽出する。
図3(a)に示すように、例えば、投光器11が行列状に配列された複数のスポット光からなるパターン光32aを、路面31に向けて投光し、路面31で反射したパターン光32aをカメラ12で検出する。パターン光抽出部21は、カメラ12で取得した画像に対して二値化処理を施すことにより、
図4(a)及び
図4(b)に示すように、スポット光Spの画像のみを抽出する。そして、
図4(c)に示すように、パターン光抽出部21は、各スポット光Spの重心の位置He、即ちスポット光Spの画像上の座標(Uj、Vj)を算出することにより、パターン光32aの位置を抽出する。座標は、カメラ12の撮像素子の画素を単位とし、5×7のスポット光Spの場合、“j”は1以上35以下の自然数である。スポット光Spの画像上の座標(Uj、Vj)は、パターン光32aの位置を示すデータとしてメモリに記憶される。
【0015】
姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、カメラ12で取得した画像におけるパターン光32aの位置から、路面31に対する車両10の距離及び姿勢角を算出する。例えば、
図3(a)に示すように、投光器11とカメラ12の間の基線長Lbと、各スポット光の画像上の座標(Uj、Vj)とから、三角測量の原理を用いて、各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置として算出する。そして、姿勢角算出部22は、カメラ12に対する各スポット光の相対位置から、パターン光32aが投光された路面31の平面式、即ち、路面31に対するカメラ12の距離及び姿勢角(法線ベクトル)を算出する。
【0016】
なお、車両10に対するカメラ12の搭載位置及び撮像方向は既知であるため、実施形態では、路面31に対する車両10の距離及び姿勢角の一例として、路面31に対するカメラ12の距離及び姿勢角を算出する。換言すれば、路面31に対するカメラ12の距離及び姿勢角を算出することにより、路面31と車両10との間の距離、及び路面31に対する車両10の姿勢角を求めることができる。
【0017】
具体的には、カメラ12及び投光器11は車両10にそれぞれ固定されているため、パターン光32aの照射方向と、カメラ12と投光器11との間の距離(基線長Lb)は既知である。そこで、姿勢角算出部22は、三角測量の原理を用いて、各スポット光の画像上の座標(Uj、Vj)から各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置(Xj,Yj,Zj)として求めることができる。以後、路面31に対するカメラ12の距離及び姿勢角を、「距離及び姿勢角」と略す。姿勢角算出部22で算出された距離及び姿勢角は、メモリに記憶される。
【0018】
なお、本実施形態では、毎回の情報処理サイクルにおいて距離及び姿勢角を算出する場合について説明する。ただし、後述するように、路面状態判定部30によって路面状態が閾値以上変化していると判定された場合には、姿勢角算出部22は、車両の距離及び姿勢角の算出を停止する。
【0019】
また、カメラ12に対する各スポット光の相対位置(Xj,Yj,Zj)は同一平面上に存在しない場合が多い。なぜなら、路面31に表出するアスファルトの凹凸に応じて各スポット光の相対位置が変化するからである。そこで、最小二乗法を用いて、各スポット光との距離誤差の二乗和が最小となるような平面式を求めてもよい。こうして算出された距離及び姿勢角のデータは、
図1に示す自己位置算出部26で使用される。
【0020】
特徴点検出部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」に記載の手法を用いることができる。或いは、特徴点検出部23は、「金澤靖,金谷健一,“コンピュータビジョンのための画像の特徴点抽出,”信学誌,vol.87,no.12,pp.1043−1048,Dec.2004」に記載の手法を用いることもできる。
【0021】
具体的には、特徴点検出部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の例を示す。更に、各特徴点Teの変化方向及び変化量をベクトルDteとして示している。
【0022】
なお、実施形態において、路面31上の特徴点は、主に大きさが1cm以上2cm以下のアスファルト混合物の粒を想定している。この特徴点を検出するために、カメラ12の解像度はVGA(約30万画素)である。また、路面31に対するカメラ12の距離は、おおよそ70cmである。更に、カメラ12の撮像方向は、水平面から約45degだけ路面31に向けて傾斜させる。また、カメラ12で取得する画像をECU13に転送するときの輝度数値は、0〜255(0:最も暗い,255:最も明るい)の範囲内である。
【0023】
姿勢変化量算出部24は、一定の情報処理サイクル毎に撮像される各フレームの画像のうち、前回(時刻t)のフレームの画像に含まれる複数の特徴点の画像上の位置座標(Ui、Vi)をメモリから読み込む。更に、姿勢変化量算出部24は、今回(時刻t+Δt)のフレームの画像に含まれる複数の特徴点の画像上の位置座標(Ui、Vi)をメモリから読み込む。そして、姿勢変化量算出部24は、複数の特徴点の画像上での時間的な位置変化に基づいて、車両の姿勢変化量を求める。ここで、「車両の姿勢変化量」とは、路面に対する車両の「距離及び姿勢角の変化量」、及び路面上での「車両の移動量」の双方を含んでいる。以下、「距離及び姿勢角の変化量」及び「車両の移動量」の算出方法について説明する。
【0024】
距離及び姿勢角の変化量は、例えば、以下のようにして求めることができる。
図6(a)は、時刻tに取得した第1フレーム(画像)38(
図5)の一例を示す。
図5及び
図6(a)に示すように、第1フレーム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フレームを撮像したときのカメラの位置を示す。
【0025】
なお、
図5では、カメラ12に対する特徴点の相対位置を示す3次元座標(Xi,Yi,Zi)として、カメラ12の撮像方向にZ軸を設定し、撮像方向を法線としてカメラ12を含む平面内に互いに直交するX軸及びY軸を設定する。一方、画像38上の座標としては、水平方向及び垂直方向をそれぞれV軸及びU軸に設定する。
【0026】
図6(b)は、時刻tから時間Δtだけ経過した時刻(t+Δt)に取得された第2フレーム38’を示す。
図5のカメラ12’は、第2フレーム38’を撮像したときのカメラの位置を示す。
図5及び
図6(b)に示すように、第2フレーム38’において、カメラ12’が特徴点Te1、Te2、Te3を撮像し、特徴点検出部23が特徴点Te1、Te2、Te3を検出する。この場合、姿勢変化量算出部24は、時刻tにおける各特徴点Te1〜Te3の相対位置(Xi,Yi,Zi)と、各特徴点の第2フレーム38’上の位置P1(Ui、Vi)と、カメラ12のカメラモデルとから時間Δtにおけるカメラ12の移動量ΔLを算出できる。したがって、ひいては車両の移動量を算出できる。更には、距離及び姿勢角の変化量も算出することができる。例えば、以下の(1)〜(4)式からなる連立方程式を解くことにより、姿勢変化量算出部24は、カメラ12(車両)の移動量(ΔL)、及び距離及び姿勢角の変化量を算出することができる。なお、下記の(1)式はカメラ12が歪みや光軸ずれのない理想的なピンホールカメラとしてモデル化したものであり、λiは定数、fは焦点距離である。カメラモデルのパラメータは、予めキャリブレーションをしておけば良い。
【0031】
なお、姿勢変化量算出部24は、時刻tと時刻t+Δtで検出される各画像中で相対位置が算出された特徴点の全てを用いるのではなく、特徴点同士の位置関係に基づいて最適な特徴点を選定しても良い。選定方法としては、例えば、エピポーラ幾何(エピ極線幾何,R.I.Hartley:“A linear method for reconstruction from lines and points,”Proc.5thInternational Conference on Computer Vision,Cambridge,Massachusetts,pp.882−887(1995))を用いることができる。
【0032】
このように、特徴点検出部23が、時刻tのフレーム画像38で相対位置(Xi,Yi,Zi)が算出された特徴点Te1、Te2、Te3を、時刻t+Δtにおけるフレーム画像38’からも検出した場合に、姿勢変化量算出部24は、路面上の複数の特徴点の相対位置(Xi,Yi,Zi)と特徴点の画像上の位置(Ui、Vi)の時間変化から、「車両の姿勢角変化量」を算出することができる。更には、車両の移動量を算出することができる。
【0033】
即ち、前回フレームと今回フレームの間で対応関係が取れる3点以上の特徴点を継続して検出できれば、距離及び姿勢角の変化量を加算する処理(積分演算)を継続することにより、パターン光32aを用いずに距離及び姿勢角を更新し続けることができる。但し、最初の情報処理サイクルでは、パターン光32aを用いて算出した距離及び姿勢角、或いは所定の初期距離及び初期姿勢角を用いても良い。つまり、積分演算の起点となる距離及び姿勢角は、パターン光32aを用いて算出しても、或いは、所定の初期値を用いても構わない。所定の初期距離及び初期姿勢角は、少なくとも車両10への乗員及び搭載物を考慮した距離及び姿勢角であることが望ましい。例えば、車両10のイグニションスイッチがオン状態で、尚且つシフトポジションがパーキングから他のポジションへ移動した時に、パターン光32aを投光し、パターン光32aから算出した距離及び姿勢角を、所定の初期距離及び初期姿勢角として用いれば良い。これにより、車両10の旋回や加減速によるロール運動或いはピッチ運動が発生していない時の距離や姿勢角を求めることができる。
【0034】
なお、前後のフレーム間で特徴点を対応付けるには、例えば、検出した特徴点の周辺の小領域の画像をメモリに記録しておき、輝度や色情報の類似度から判断すれば良い。具体的には、ECU13は、検出した特徴点を中心とする5×5(水平×垂直)画素分の画像をメモリに記録する。姿勢変化量算出部24は、例えば、輝度情報が20画素以上で誤差1%以下に収まっていれば、前後のフレーム間で対応関係が取れる特徴点であると判断する。そして、上記の処理で取得した姿勢変化量は、後段の自己位置算出部26で車両の自己位置を算出する際に使用される。
【0035】
自己位置算出部26は、姿勢変化量算出部24で算出された「距離及び姿勢角の変化量」から車両の現在の距離及び姿勢角を算出する。更に、姿勢変化量算出部24で算出された「車両の移動量」から車両の自己位置を算出する。
【0036】
具体的に、姿勢角算出部22で算出された距離及び姿勢角(パターン光を用いて算出された距離及び姿勢角)が起点として設定された場合について説明する。この場合には、この起点(距離及び姿勢角)に対して、自己位置算出部26は、姿勢角算出部22で算出された距離及び姿勢角に対して、姿勢変化量算出部24で算出された各フレーム毎の距離及び姿勢角の変化量を逐次加算して(積分演算して)、距離及び姿勢角を最新の数値に更新する。また、自己位置算出部26は、姿勢角算出部22で距離及び姿勢角が算出された際の車両位置を起点(車両の初期位置)とし、この初期位置からの車両の移動量を逐次加算して(積分演算して)、車両の自己位置を算出する。例えば、地図上の位置と照合された起点(車両の初期位置)を設定することで、地図上の車両の現在位置を逐次算出することができる。
【0037】
従って、姿勢変化量算出部24は、時間Δtの間でのカメラ12の移動量(ΔL)を求めることにより、車両の自己位置を算出することができる。更に、距離及び姿勢角の変化量も同時に算出することができるので、姿勢変化量算出部24は、車両の距離及び姿勢角の変化量を考慮して、6自由度(前後、左右、上下、ヨー、ピッチ、ロール)の移動量(ΔL)を精度よく算出することができる。即ち、車両10の旋回や加減速によるロール運動或いはピッチ運動によって距離や姿勢角が変化しても、移動量(ΔL)の推定誤差を抑制することができる。
【0038】
なお、実施形態では、距離及び姿勢角の変化量を算出し、距離及び姿勢角を更新することにより、カメラ12の移動量(ΔL)を算出したが、路面31に対するカメラ12の姿勢角だけを変化量算出及び更新の対象としても構わない。この場合、路面31とカメラ12との間の距離は一定と仮定すれば良い。これにより、姿勢角の変化量を考慮して、移動量(ΔL)の推定誤差を抑制しつつ、ECU13の演算負荷を軽減し、且つ演算速度を向上させることもできる。
【0039】
パターン光制御部27は、投光器11によるパターン光32aの投光を制御する。例えば、車両10のイグニションスイッチがオン状態となり、自己位置算出装置が起動すると同時に、パターン光制御部27は、パターン光32aの投光を開始する。その後、自己位置算出装置が停止するまで、パターン光制御部27は、パターン光32aを連続して投光する。或いは、所定の時間間隔をおいて、投光のオン/オフを繰り返してもよい。
【0040】
路面状態判定部30は、車両周囲の路面状態の変化を検出して路面状態が閾値以上変化しているか否かを判定する。そして、路面状態が閾値以上変化していると判定した場合には、自己位置算出部26は、前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に起点を固定する。これにより、姿勢角算出部22は路面に対する車両10の距離及び姿勢角の算出を停止する。また、自己位置算出部26は、前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して、現在の車両の現在位置、路面に対する距離及び姿勢角を算出する。
【0041】
ここで、路面状態の変化を判定する方法について説明する。本実施形態では、パターン光32aのスポット光が路面に35(5×7)個投影されている。そこで、例えば、35個のスポット光のうちカメラ12の画像上において80%以下、すなわち28個以下しか検出できない場合には、路面状態判定部30は、路面の段差や凹凸が激しくなり、路面状態が閾値以上変化していると判定する。
【0042】
このとき、路面状態の変化を路面の高さの変化量から推定してもよい。路面の高さの変化量は、車両の各車輪のサスペンションに取り付けられているストロークセンサの検出値の振動から検出することができる。例えば、ストロークセンサの検出値の振動が1Hz以上となった場合に、路面状態判定部30は、路面の段差や凹凸が激しくなったと推定し、路面状態が閾値以上変化したと判定する。また、鉛直方向の加速度を計測する加速度センサの検出値を積分して鉛直方向の速度を算出し、その速度の向きの変化が1Hz以上となった場合に、路面状態判定部30は、路面の段差や凹凸が激しくなり、路面状態が閾値以上変化していると判定してもよい。
【0043】
さらに、路面の高さの変化量は、カメラ12で撮像した画像におけるパターン光32aの位置から推定してもよい。本実施形態では、
図7に示すようなパターン光32aが路面31に投影されている。そこで、パターン光32aのスポット光をX方向に結んだ線分71と、Y方向に結んだ線分73を引く。そして、これらの線分の傾きが点75に示すように途中で15deg以上変化している場合に、路面状態判定部30は、路面の段差や凹凸が激しくなったと推定し、路面状態が閾値以上変化していると判定する。また、
図7に示すように、隣り合うスポット光の間隔d1、d2の差が50%以上変化した場合に、路面状態判定部30は、路面状態が閾値以上変化していると判定してもよい。
【0044】
このようにして路面状態が閾値以上変化していると判定すると、自己位置算出部26は前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に固定する。したがって、姿勢角算出部22は路面に対する車両10の距離及び姿勢角の算出を停止し、自己位置算出部26は、前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して、現在の車両10の現在位置、路面に対する距離及び姿勢角を算出する。
【0045】
例えば、
図8に示すように、路面状態判定部30は、検出されたスポット光の数をモニターしており、閾値を35個のスポット光の80%にあたる28個に設定している。この場合に、路面状態判定部30は、スポット光を28個より多く検出できている間は姿勢角算出フラグを「ON」に設定する。これにより、姿勢角算出部22は路面に対する車両10の距離及び姿勢角の算出を行い、自己位置算出部26は姿勢角算出部22で算出された車両の距離及び姿勢角を用いて現在の距離及び姿勢角を算出し、前回の情報処理サイクルで算出された車両10の現在位置に、車両の移動量を加算することで(積分演算を継続して)、現在の車両の自己位置を算出する。
【0046】
しかし、時刻t1において、スポット光の検出個数が閾値を下回ると、自己位置算出部26は姿勢角算出フラグを「OFF」に切り替える。これにより、車両10の現在位置、路面に対する距離及び姿勢角は前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に起点が固定され、姿勢角算出部22は車両10の距離及び姿勢角の算出を停止する。したがって、自己位置算出部26は、前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して、現在の車両の現在位置、路面に対する距離及び姿勢角を算出する。
【0047】
この後、時刻t2においてスポット光の検出個数が再び閾値を上回ると、姿勢角算出フラグが「ON」に設定され、姿勢角算出部22は車両10の距離及び姿勢角の算出を再開する。そして、自己位置算出部26は、姿勢角算出部22で算出された車両10の距離及び姿勢角を用いて車両10の現在の距離及び姿勢角を算出する。このように本実施形態に係る自己位置算出装置は、路面状態が大きく変化した場合には、姿勢角算出部22で算出された車両10の距離及び姿勢角を用いず、前回の情報処理サイクルで算出した車両10の現在位置、路面に対する距離及び姿勢角を用いるので、路面状態が大きく変化しても車両10の自己位置を精度よく、且つ安定して算出することができる。
【0048】
[情報処理サイクル]
次に、
図9及び
図10を参照して、ECU13によって繰り返し実行される情報処理サイクルを説明する。この情報処理サイクルは、カメラ12で取得した画像38から車両10の自己位置を算出する自己位置算出方法の一例である。
【0049】
図9のフローチャートに示す情報処理サイクルは、車両10のイグニションスイッチがオン状態となり、自己位置算出装置が起動すると同時に開始され、自己位置算出装置が停止するまで繰り返し実行される。
【0050】
図9のステップS01において、パターン光制御部27は、投光器11を制御して、車両周囲の路面31にパターン光32aを投光する。
図9のフローチャートでは、パターン光32aを連続して投光する例を説明する。
【0051】
ステップS03に進み、ECU13は、カメラ12を制御して、パターン光32aが投光された領域を含む車両周囲の路面31を撮像して画像38を取得する。ECU13は、カメラ12で取得した画像データを、メモリに記憶する。
【0052】
なお、ECU13はカメラ12の絞りを自動制御できる。前の情報処理サイクルで取得した画像38の平均輝度から、輝度値の最大値と最小値の中間値になるようにカメラ12の絞りをフィードバック制御してもよい。また、パターン光32aが投光されている領域は輝度値が高いため、ECU13は、パターン光32aを抽出した部分を除いた領域から、平均輝度値を求めてもよい。
【0053】
ステップS05に進み、先ず、パターン光抽出部21は、カメラ12で取得した画像38をメモリから読み込み、
図4(c)に示すように、画像38からパターン光32aの位置を抽出する。パターン光抽出部21は、パターン光32aの位置を示すデータとして算出されたスポット光Spの画像上の座標(Uj、Vj)をメモリに記憶する。
【0054】
さらに、ステップS05において、姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から路面31に対する車両10の距離及び姿勢角を算出してメモリに記憶する。
【0055】
ステップS07に進み、ECU13は、画像38から特徴点を検出し、前後の情報処理サイクルの間で対応関係が取れる特徴点を抽出し、特徴点の画像上の位置(Ui、Vi)から距離及び姿勢角の変化量を算出する。さらに、車両の移動量を算出する。
【0056】
具体的に、先ず、特徴点検出部23は、カメラ12で取得した画像38をメモリから読み込み、画像38から路面31上の特徴点を検出し、各特徴点の画像上の位置(Ui、Vi)をメモリに記憶させる。
【0057】
姿勢変化量算出部24は、各特徴点の画像上の位置(Ui、Vi)をメモリから読み込み、姿勢角算出部22で算出された距離及び姿勢角と、特徴点の画像上の位置(Ui、Vi)とから、カメラ12に対する特徴点の相対位置(Xi,Yi,Zi)を算出する。なお、姿勢変化量算出部24は、前の情報処理サイクルのステップS09において設定された距離及び姿勢角を用いる。そして、姿勢変化量算出部24は、カメラ12に対する特徴点の相対位置(Xi,Yi,Zi)を、メモリに記憶する。
【0058】
この後、姿勢変化量算出部24は、特徴点の画像上の位置(Ui、Vi)と、前の情報処理サイクルのステップS07において算出された特徴点の相対位置(Xi,Yi,Zi)をメモリから読み込む。姿勢変化量算出部24は、前後の情報処理サイクルの間で対応関係が取れる特徴点の相対位置(Xi,Yi,Zi)及び画像上の位置(Ui、Vi)を用いて、距離及び姿勢角の変化量を算出する。さらに、姿勢変化量算出部24は、前回の特徴点の相対位置(Xi,Yi,Zi)と今回の特徴点の相対位置(Xi,Yi,Zi)から、車両の移動量を算出してメモリに記憶する。ステップS07で算出された「距離及び姿勢角の変化量」及び「車両の移動量」は、ステップS11の処理で用いられる。
【0059】
ステップS09に進み、ECU13は、車両周囲の路面状態の変化に応じて、自己位置を算出するための積分演算の起点を設定する。詳細は、
図10を参照して後述する。
【0060】
ステップS11に進み、自己位置算出部26は、ステップS09で設定された積分演算の起点と、ステップS07の処理で算出された車両10の距離及び姿勢角の変化量とから、車両10の自己位置を算出する。
【0061】
こうして本実施形態に係る自己位置算出装置は、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の自己位置を算出することができる。
【0062】
[ステップS09の処理]
次に、
図10のフローチャートを参照して、
図9のステップS09の詳細な手順を説明する。
図10に示すように、ステップS101において、路面状態判定部30は、車両周囲の路面状態の変化を検出する。具体的に、路面状態判定部30は、パターン光32aのスポット光の数を検出したり、各車輪に取り付けられているストロークセンサの検出値の振動を検出したりする。また、路面状態判定部30は、車両の鉛直方向の加速度を計測できる加速度センサの検出値を積分して鉛直方向の速度を算出したり、パターン光32aの位置を検出したりしてもよい。
【0063】
次に、ステップS103において、路面状態判定部30は、車両周囲の路面状態が閾値以上変化しているか否かを判定する。例えば、パターン光32aのスポット光の数を検出する場合には、35個のスポット光のうちカメラの画像上において28個以下しか検出できない場合に、路面状態判定部30は、路面の段差や凹凸が激しくなり、路面状態が閾値以上変化していると判定する。
【0064】
また、ストロークセンサを用いる場合には、検出値の振動が1Hz以上となった場合に、路面状態判定部30は路面状態が閾値以上変化していると判定する。さらに、加速度センサを用いる場合には、加速度センサの検出値を積分して鉛直方向の速度を算出し、その速度の向きの変化が1Hz以上となった場合に、路面状態判定部30は路面状態が閾値以上変化していると判定する。
【0065】
また、パターン光32aの位置を用いる場合には、スポット光を結んだ線分の傾きが途中で15deg以上変化している場合に、路面状態判定部30は路面状態が閾値以上変化していると判定する。或いは、隣り合うスポット光の間隔の差が50%以上変化している場合に、路面状態判定部30は路面状態が閾値以上変化していると判定してもよい。
【0066】
このようにして、車両周囲の路面状態が閾値以上変化しているか否かの判定が行われ、路面状態判定部30が閾値以上変化していると判定した場合(ステップS103でYES)にはステップS105に進む。一方、路面状態判定部30が閾値以上変化していないと判定した場合(ステップS103でNO)にはステップS107に進む。
【0067】
ステップS105では、自己位置算出部26が、車両10の現在位置、路面に対する距離及び姿勢角を前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に固定する。すなわち、自己位置算出部26は、積分演算の起点として、前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角を設定する。
【0068】
これにより、姿勢角算出部22は路面に対する車両10の距離及び姿勢角の算出を停止し、自己位置算出部26は、前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して、現在の車両10の現在位置、路面に対する距離及び姿勢角を算出する。
【0069】
一方、ステップS107では、自己位置算出部26が、今回の情報処理サイクルのステップS05で算出された車両10の現在位置、路面に対する距離及び姿勢角を積分演算の基点として設定する。
【0070】
これにより、自己位置算出部26は、今回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して車両10の現在位置、路面に対する距離及び姿勢角を算出する。
【0071】
このようにして、現在の車両10の現在位置、路面に対する距離及び姿勢角を算出するための積分演算の起点が設定されると、ステップS09の処理は終了して
図9のステップS11に進む。
【0072】
[第1実施形態の効果]
以上詳細に説明したように、本実施形態に係る自己位置算出装置では、車両周囲の路面状態が閾値以上変化していると判定した場合に、前回の情報処理サイクルで算出した車両の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して、現在の車両の現在位置、路面に対する距離及び姿勢角を算出する。これにより、車両周囲の路面上に凹凸や段差がある場合でも車両の自己位置を精度よく算出することができる。
【0073】
従来では、車両周囲の路面上に凹凸や段差があると、車両の移動量の誤差が大きくなっていた。例えば、
図11は、車両10のロール角(姿勢角の一例)及び移動量(車幅方向)の推定誤差の一例を示している。
図11(a)では、車両10がロール角の生じない直進走行している場合のロール角の算出値の時間変化を示しており、
図11(b)では、同じ場合の車両10の移動量の算出値の時間変化を示している。
図11において、「P1」及び「P2」は、従来の方法で車両の移動量を算出した場合の値を示しており、「Q1」及び「Q2」は実際の値である真値を示している。
【0074】
車両10は直進しているため、ロール角及び車幅方向の移動量の真値(Q1、Q2)は0のままで移動しない。しかし、時刻t1〜t2の間に、車両10が凹凸や段差のある路面上を走行したため、路面の平面式に誤差が発生して、ロール角に算出誤差が現れる。このロール角の誤差は、車幅方向の移動量の誤差として反映され、しかも積分するので、車幅方向の移動量の誤差は拡大してしまう。これは、車両周囲の路面状態が段差等によって変化して誤差があるにもかかわらず、毎回の情報処理サイクルで距離及び姿勢角を算出していることが原因である。
【0075】
そこで、本実施形態に係る自己位置算出装置では、車両周囲の路面状態が閾値以上変化していると判定した場合には、車両10の現在位置、路面に対する距離及び姿勢角の算出を停止し、前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角を起点に用いる。
【0076】
したがって、今回の情報処理サイクルで車両周囲の路面状態に変化が生じていたとしても、前回の情報処理サイクルの値を用いることにより、
図11のP1、P2に示すように誤差が拡大することはなく、車両10の自己位置を精度よく算出することができる。
【0077】
また、本実施形態に係る自己位置算出装置では、路面状態の変化を路面の高さの変化量から推定する。これにより、路面上にある凹凸や段差を確実に検出することができるので、車両の自己位置を精度よく算出することができる。
【0078】
さらに、本実施形態に係る自己位置算出装置では、路面の高さの変化量をパターン光の位置から推定する。これにより、車両に搭載されたセンサを用いることなく、路面状態の変化を検出できるので、簡単な手法で精度よく車両の自己位置を算出することができる。
[第2実施形態]
次に、本発明の第2実施形態に係る自己位置算出装置について図面を参照して説明する。ただし、本実施形態に係る自己位置算出装置の構成は、
図1に示した第1実施形態と同一なので、詳細な説明は省略する。
【0079】
上述した第1実施形態では、毎回の情報処理サイクルで車両10の距離及び姿勢角を算出していたが、本実施形態では一定周期で車両10の距離及び姿勢角を算出するようにしたことが相違している。
【0080】
したがって、
図12に示すように、例えば8フレーム等の一定の周期で周期カウントパルスが発生するように設定しておき、そのタイミングで姿勢角算出フラグを「ON」に設定する。これにより、一定周期で車両10の距離及び姿勢角を算出できるようになる。
【0081】
ただし、周期カウントパルスが発生した際に車両周囲の路面状態が閾値以上変化している場合、すなわち検出されたスポット光の数が閾値以下の場合には姿勢角算出フラグを「ON」にせずに「OFF」のままとする。例えば、時刻t1〜t2の間では、検出されたスポット光の数が閾値以下なので、周期カウントパルスは発生しているが、姿勢角算出フラグは「ON」に設定されずに「OFF」のままである。
【0082】
これにより、車両周囲の路面上に凹凸や段差がある場合には、路面状態判定部30は、車両の現在位置、路面に対する距離及び姿勢角を前回の情報処理サイクルで算出された距離及び姿勢角に固定する。したがって、姿勢角算出部22は車両の現在位置、路面に対する距離及び姿勢角の算出を停止し、自己位置算出部26は前回の情報処理サイクルで算出された車両10の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して、現在の車両10の現在位置、路面に対する距離及び姿勢角を算出する。
【0083】
[情報処理サイクル]
本実施形態に係る自己位置算出装置による情報処理サイクルは、
図9に示す第1実施形態と同一なので、詳細な説明は省略する。本実施形態では、
図9のステップS09の積分演算 の起点を設定する処理が第1実施形態と相違している。
【0084】
[ステップS09の処理]
次に、
図13のフローチャートを参照して、
図9のステップS09の詳細な手順を説明する。
図13に示すように、ステップS201において、路面状態判定部30は、所定の周期が経過したか否かを判定する。
図12で説明したように、路面状態判定部30は、周期カウントパルスが発生しているか否かを監視し、発生している場合には所定の周期が経過したと判定してステップS203に進む。一方、周期カウントパルスが発生していない場合には、所定の周期が経過していないと判定してステップS207に進む。
【0085】
この後のステップS203〜S209の処理は、
図10のステップS101〜S107の処理とそれぞれ同一なので、詳細な説明は省略する。
【0086】
[第2実施形態の効果]
以上詳細に説明したように、本実施形態に係る自己位置算出装置では、一定の周期で車両の距離及び姿勢角の算出を行う。そして、その際に車両周囲の路面状態が閾値以上変化していると判定された場合に、自己位置算出装置は、前回の情報処理サイクルで算出された車両の現在位置、路面に対する距離及び姿勢角に姿勢変化量を加算して、現在の車両の現在位置、路面に対する距離及び姿勢角を算出する。これにより、姿勢角算出部22が、車両の距離及び姿勢角を算出する頻度を少なくできるので、ECU13の演算負荷を軽減し、且つ演算速度を向上させることができる。
【0087】
なお、上述の実施形態は本発明の一例である。このため、本発明は、上述の実施形態に限定されることはなく、この実施形態以外の形態であっても、本発明に係る技術的思想を逸脱しない範囲であれば、設計などに応じて種々の変更が可能であることは勿論である。