(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
図面を参照して、実施形態を説明する。図面の記載において同一部分には同一符号を付して説明を省略する。
【0009】
(第1実施形態)
(ハードウェア構成)
先ず、
図1を参照して、第1実施形態に係わる自己位置算出装置のハードウェア構成を説明する。自己位置算出装置は、投光器11と、カメラ12と、エンジンコントロールユニット(ECU)13とを備える。投光器11は、車両に搭載され、車両周囲の路面にパターン光を投光する。カメラ12は、車両に搭載され、パターン光が投光された領域を含む車両周囲の路面を撮像して画像を取得する撮像部の一例である。ECU13は、投光器11を制御し、且つカメラ12により取得された画像から車両の移動量を推定する一連の情報処理サイクルを実行する制御部の一例である。
【0010】
カメラ12は、固体撮像素子、例えばCCD及びCMOSを用いたデジタルカメラであって、画像処理が可能なデジタル画像を取得する。カメラ12の撮像対象は車両周囲の路面であって、車両周囲の路面には、車両の前部、後部、側部、車両底部の路面が含まれる。例えば、
図2に示すように、カメラ12は、車両10の前部、具体的にはフロントバンパ上に搭載することができる。
【0011】
車両10の前方の路面31上の特徴点(テクスチャ)及び投光器11により投光されたパターン光32bを撮像できるように、カメラ12が設置される高さ及び向きが調整され、且つ、カメラ12が備えるレンズのピント及び絞りが自動調整される。カメラ12は、所定の時間間隔をおいて繰り返し撮像を行い、一連の画像(フレーム)群を取得する。カメラ12により取得された画像データは、ECU13へ転送され、ECU13が備えるメモリに記憶される。
【0012】
投光器11は、
図2に示すように、カメラ12の撮像範囲内の路面31に向けて、正方形や長方形の格子像を含む所定の形状を有するパターン光32bを投光する。カメラ12は、路面3
1に照射されたパターン光を撮像する。投光器11は、例えば、レーザポインター及び回折格子を備える。レーザポインターから射出されたレーザ光を回折格子で回折することにより、投光器11は、
図2〜
図4に示すように、格子像、或いは行列状に配列された複数のスポット光S
pからなるパターン光(32b、32a)を生成する。
図3及び
図4に示す例では、5×7のスポット光S
pからなるパターン光32aを生成している。
【0013】
図1に戻り、ECU13は、CPU、メモリ、及び入出力部を備えるマイクロコントローラからなり、予めインストールされたコンピュータプログラムを実行することにより、自己位置算出装置が備える複数の情報処理部を構成する。ECU13は、カメラ12により取得された画像から車両の現在位置を算出する一連の情報処理サイクルを、画像(フレーム)毎に繰り返し実行する。ECU13は、車両10にかかわる他の制御に用いるECUと兼用してもよい。
【0014】
複数の情報処理部には、パターン光抽出部21と、姿勢角算出部22と、姿勢変化量算出部24と、自己位置算出部26と、パターン光制御部27と、検出状態判断部30と、算出状態判断部35と、が含まれる。姿勢変化量算出部24には、特徴点検出部23が含まれる。
【0015】
パターン光抽出部21は、カメラ12により取得された画像をメモリから読み込み、画像からパターン光の位置を抽出する。
図3(a)に示すように、例えば、投光器11が行列状に配列された複数のスポット光からなるパターン光32aを路面31に向けて投光し、路面31で反射されたパターン光32aをカメラ12で検出する。パターン光抽出部21は、カメラ12により取得された画像に対して二値化処理を施すことにより、
図4(a)及び
図4(b)に示すように、スポット光S
pの画像のみを抽出する。パターン光抽出部21は、
図4(c)に示すように、各スポット光S
pの重心の位置H
e、即ちスポット光S
pの画像上の座標(U
j、V
j)を算出することにより、パターン光32aの位置を抽出する。座標は、カメラ12の撮像素子の画素を単位とし、5×7のスポット光Spの場合、“j”は1以上35以下の自然数である。スポット光S
pの画像上の座標(U
j、V
j)は、パターン光32aの位置を示すデータとしてメモリに記憶される。
【0016】
姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、カメラ12により取得された画像におけるパターン光32aの位置から、路面31に対する車両10の距離及び姿勢角を算出する。例えば、
図3(a)に示すように、投光器11とカメラ12の間の基線長Lbと、各スポット光の画像上の座標(U
j、V
j)とから、三角測量の原理を用いて、各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置として算出する。そして、姿勢角算出部22は、カメラ12に対する各スポット光の相対位置から、パターン光32aが投光された路面31の平面式、即ち、路面31に対するカメラ12の距離及び姿勢角(法線ベクトル)を算出する。なお、車両10に対するカメラ12の搭載位置及び撮像方向は既知であるため、実施形態においては、路面31に対する車両10の距離及び姿勢角の一例として、路面31に対するカメラ12の距離及び姿勢角を算出する。以後、路面31に対するカメラ12の距離及び姿勢角を、「距離及び姿勢角」と略す。姿勢角算出部22により算出された距離及び姿勢角は、メモリに記憶される。
【0017】
具体的には、カメラ12及び投光器11は車両10にそれぞれ固定されているため、パターン光32aの照射方向と、カメラ12と投光器11との距離(基線長Lb)は既知である。そこで、姿勢角算出部22は、三角測量の原理を用いて、各スポット光の画像上の座標(U
j、V
j)から各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置(X
j,Y
j,Z
j)として求めることができる。
【0018】
なお、カメラ12に対する各スポット光の相対位置(X
j,Y
j,Z
j)は同一平面上に存在しない場合が多い。なぜなら、路面31に表出するアスファルトの凹凸に応じて各スポット光の相対位置が変化するからである。そこで、最小二乗法を用いて、各スポット光との距離誤差の二乗和が最小となるような平面式を求めてもよい。
【0019】
特徴点検出部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」に記載の手法を用いることができる。
【0020】
具体的には、特徴点検出部23は、例えば、ハリス(Harris)作用素又はSUSANオペレータを用いて、物体の頂点のように周囲に比べて輝度値が大きく変化する点を特徴点として検出する。或いは、特徴点検出部23は、SIFT(Scale-Invariant Feature Transform)特徴量を用いて、その周囲で輝度値がある規則性のもとで変化している点を特徴点として検出してもよい。そして、特徴点検出部23は、1つの画像から検出した特徴点の総数Nを計数し、各特徴点に識別番号(i(1≦i≦N))を付す。各特徴点の画像上の位置(U
i、V
i)は、ECU13内のメモリに記憶される。
図6(a)及び
図6(b)は、カメラ12により取得された画像から検出された特徴点T
eの例を示す。各特徴点の画像上の位置(U
i、V
i)は、メモリに記憶される。
【0021】
なお、実施形態において、路面31上の特徴点は、主に大きさが1cm以上2cm以下のアスファルト混合物の粒を想定している。この特徴点を検出するために、カメラ12の解像度はVGA(約30万画素)である。また、路面31に対するカメラ12の距離は、おおよそ70cmである。更に、カメラ12の撮像方向は、水平面から約45degだけ路面31に向けて傾斜させる。また、カメラ12により取得される画像をECU13に転送するときの輝度数値は、0〜255(0:最も暗い,255:最も明るい)の範囲内である。
【0022】
姿勢変化量算出部24は、一定の情報処理サイクル毎に撮像されるフレームのうち、前回フレームに含まれる複数の特徴点の画像上の位置(U
i、V
i)をメモリから読み込み、更に、今回フレームに含まれる複数の特徴点の画像上の位置(U
i、V
i)をメモリから読み込む。そして、複数の特徴点の画像上での位置変化に基づいて、車両の姿勢変化量を求める。ここで、「車両の姿勢変化量」とは、路面31に対する「距離及び姿勢角」の変化量、及び路面上での「車両(カメラ12)の移動量」の双方を含んでいる。以下、距離及び姿勢角の変化量及び車両の移動量の算出方法について説明する。
【0023】
図6(a)は、時刻tに取得された第1フレーム(画像)38の一例を示す。
図5或いは
図6(a)に示すように、第1フレーム38において、例えば3つの特徴点T
e1、T
e2、T
e3の相対位置(X
i,Y
i,Z
i)がそれぞれ算出されている場合を考える。この場合、特徴点T
e1、T
e2、T
e3によって特定される平面Gを路面と見なすことができる。よって、姿勢変化量算出部24は、相対位置(X
i,Y
i,Z
i)から、路面(平面G)に対するカメラ12の距離及び姿勢角(法線ベクトル)を求めることができる。更に、姿勢変化量算出部24は、既知のカメラモデルによって、各特徴点T
e1、T
e2、T
e3の間の距離(l
1、l
2、l
3)及び夫々の特徴点T
e1、T
e2、T
e3を結ぶ直線が成す角度を求めることができる。
図5のカメラ12は、第1フレームにおけるカメラの位置を示す。
【0024】
なお、カメラ12に対する相対位置を示す3次元座標(X
i,Y
i,Z
i)として、カメラ12の撮像方向をZ軸に設定し、撮像方向を法線とし且つカメラ12を含む平面内に、互いに直交するX軸及びY軸を設定する。一方、画像38上の座標として、水平方向及び垂直方向をそれぞれV軸及びU軸に設定する。
【0025】
図6(b)は、時刻tから時間Δtだけ経過した時刻(t+Δt)に取得された第2フレームを示す。
図5のカメラ12’は、第2フレーム38’を撮像したときのカメラの位置を示す。
図5或いは
図6(b)に示すように、第2フレーム38’において、カメラ12’が特徴点T
e1、T
e2、T
e3を撮像し、特徴点検出部23が特徴点T
e1、T
e2、T
e3を検出する。この場合、姿勢変化量算出部24は、時刻tにおける各特徴点T
e1、T
e2、T
e3の相対位置(X
i,Y
i,Z
i)と、各特徴点の第2フレーム38’上の位置P
1(U
i、V
i)と、カメラ12のカメラモデルとから、時間Δtにおけるカメラ12(車両)の移動量(ΔL)だけでなく、距離及び姿勢角の変化量も算出することができる。例えば、以下の(1)〜(4)式からなる連立方程式を解くことにより、姿勢変化量算出部24は、カメラ12の移動量(ΔL)、及び距離及び姿勢角の変化量を算出することができる。なお、(1)式はカメラ12が歪みや光軸ずれのない理想的なピンホールカメラとしてモデル化したものであり、λiは定数、fは焦点距離である。カメラモデルのパラメータは、予めキャリブレーションをしておけばよい。
【0026】
【数1】
【数2】
【数3】
【数4】
【0027】
図3(b)は、カメラ12の撮像範囲のうち、パターン光32aが照射された領域とは異なる他の領域33から検出された特徴点の時間変化から、カメラ12の移動方向34を求める様子を模式的に示す。また、
図6(a)及び
図6(b)には、各特徴点T
eの位置の変化方向及び変化量を示すベクトルD
teを画像に重畳して示す。姿勢変化量算出部24は、時間Δtにおけるカメラ12の移動量(ΔL)だけでなく、距離及び姿勢角の変化量も同時に算出することができる。よって、姿勢変化量算出部24は、距離及び姿勢角の変化量を考慮して、6自由度の移動量(ΔL)を精度よく算出することができる。すなわち、車両10の旋回や加減速によるロール運動或いはピッチ運動によって距離や姿勢角が変化しても、移動量(ΔL)の推定誤差を抑制することができる。
【0028】
なお、姿勢変化量算出部24は、相対位置が算出された特徴点すべてを用いるのではなく、特徴点同士の位置関係に基づいて最適な特徴点を選定してもよい。選定方法としては、例えば、エピポーラ幾何(エピ極線幾何,R.I. Hartley: “A linear method for reconstruction from lines and points,” Proc. 5
th International Conference on Computer Vision, Cambridge, Massachusetts, pp.882-887(1995))を用いることができる。
【0029】
前後フレーム間で特徴点を対応付けるには、例えば、検出した特徴点の周辺の小領域の画像をメモリに記録しておき、輝度や色情報の類似度から判断すればよい。具体的には、ECU13は、検出した特徴点を中心とする5×5(水平×垂直)画素分の画像をメモリに記録する。姿勢変化量算出部24は、例えば、輝度情報が20画素以上で誤差1%以下に収まっていれば、前後フレーム間で対応関係が取れる特徴点であると判断する。
【0030】
このように、相対位置(X
i,Y
i,Z
i)が算出された特徴点T
e1、T
e2、T
e3が、後のタイミングで取得された画像38’からも検出された場合に、姿勢変化量算出部24は、路面上の複数の特徴点の時間変化に基づいて、「車両の姿勢変化量」を算出することができる。
【0031】
自己位置算出部26は、姿勢変化量算出部24で算出された「距離及び姿勢角の変化量」から距離及び姿勢角を算出する。更に、姿勢変化量算出部24で算出された「車両の移動量」から車両の現在位置を算出する。
【0032】
具体的には、姿勢角算出部22(
図1参照)にて算出された距離及び姿勢角が起点として設定された場合、この起点(距離及び姿勢角)に対して、姿勢変化量算出部24で算出された各フレーム毎の距離及び姿勢角の変化量を逐次加算する(積分演算する)ことにより、距離及び姿勢角を最新な数値に更新する。また、姿勢角算出部22にて距離及び姿勢角が算出された際の車両位置が起点(車両の初期位置)として設定され、この初期位置から車両の移動量を逐次加算する(積分演算する)ことにより、車両の現在位置を算出する。例えば、地図上の位置と照合された起点(車両の初期位置)を設定することで、地図上の車両の現在位置を逐次算出することができる。
【0033】
このように、前後フレーム間で対応関係が取れる3点以上の特徴点を検出し続けることができれば、距離及び姿勢角の変化量を加算する処理(積分演算)を継続することにより、パターン光32aを用いることなく、距離や姿勢角を最新な数値に更新し続けることができる。ただし、最初の情報処理サイクルにおいては、パターン光32aを用いて算出された距離及び姿勢角、或いは所定の初期距離及び初期姿勢角を用いてもよい。つまり、積分演算の起点となる距離及び姿勢角は、パターン光32aを用いて算出しても、或いは、所定の初期値を用いても構わない。所定の初期距離及び初期姿勢角は、少なくとも車両10への乗員及び搭載物を考慮した距離及び姿勢角であることが望ましい。例えば、車両10のイグニションスイッチがオン状態であって、且つシフトポジションがパーキングから他のポジションへ移動した時に、パターン光32aを投光し、パターン光32aから算出された距離及び姿勢角を、所定の初期距離及び初期姿勢角として用いればよい。これにより、車両10の旋回や加減速によるロール運動或いはピッチ運動が発生していない時の距離や姿勢角を求めることができる。
【0034】
なお、実施形態では、距離及び姿勢角の変化量を算出し、距離及び姿勢角の変化量を逐次加算することにより、距離及び姿勢角を最新な数値に更新した。しかし、路面31に対するカメラ12の姿勢角だけをその変化量の算出及び更新の対象としても構わない。この場合、路面31に対するカメラ12の距離は一定と仮定すればよい。これにより、姿勢角の変化量を考慮して、移動量(ΔL)の推定誤差を抑制しつつ、ECU13の演算負荷を軽減し、且つ演算速度を向上させることもできる。
【0035】
検出状態判断部30は、特徴点検出部23による特徴点T
eの検出状態が第1基準満たさず、悪い状態か否かを判断する。例えば、トンネル内のコンクリート路面のように、路面にアスファルト混合物の粒などの模様や凹凸が少ない場合、画像から検出できる特徴点が少なくなる。この場合、前後フレーム間で対応関係が取れる特徴点の継続的な検出が困難となり、距離及び姿勢角の更新精度が低下してしまう。
【0036】
そこで、検出状態判断部30は、例えば、カメラ12に対する相対位置が算出された特徴点のうち、後の情報処理サイクルで取得された画像からも検出できた特徴点の数が、所定のしきい値(例えば、4つ)以上でない場合に、複数の特徴点の検出状態が第1基準を満たさず、悪い状態と判断する。すなわち、前後フレーム間で対応付けが取れる4つ以上の特徴点を検出できない場合、検出状態判断部30は、特徴点T
eの検出状態が第1基準を満たさず、悪い状態と判断する。なお、
図6に示すように、距離や姿勢角の変化量を求めるには、前後フレーム間で対応付けが取れる少なくとも3つの特徴点が必要である。なぜなら、平面Gを特定するには3つの特徴点が必要だからである。推定精度を高めるには更に多くの特徴点が必要であるため、所定のしきい値は、4、或いは5以上であることが望ましい。
【0037】
パターン光制御部27は、検出状態判断部30の判断結果に基づき、投光器11によるパターン光32aの投光を制御する。複数の特徴点の検出状態が第1基準を満たし、悪くない状態と検出状態判断部30が判断した場合、パターン光制御部27は、パターン光32aを消灯する。一方、複数の特徴点の検出状態が第1基準を満たさず、悪い状態と検出状態判断部30が判断した場合、パターン光制御部27は、パターン光32aを投光する。具体的に、パターン光制御部27は、検出状態判断部30の判断結果に基づいてパターン光投光実施フラグのオン/オフを切り替え、パターン光投光実施フラグを
投光器11に対して送信する。
投光器11は、パターン光投光実施フラグに基づき、次の情報処理サイクルにおいて、パターン光32aを投光或いは消灯する。
【0038】
更に、検出状態判断部30は、特徴点検出部23による特徴点T
eの検出状態が第1基準よりも低い第2基準を満たさず、悪い状態か否かを判断する。例えば、前後フレーム間で対応付けが取れる3つ以上の特徴点を検出できない場合、検出状態判断部30は、特徴点T
eの検出状態が第2基準を満たさず、悪い状態と判断する。
【0039】
複数の特徴点の検出状態が第2基準を満たし、悪くない状態と検出状態判断部30が判断した場合、姿勢角算出部22は、パターン光32aの位置から距離及び姿勢角を算出しない。一方、複数の特徴点の検出状態が第2基準を満たさず、悪い状態と検出状態判断部30が判断した場合、特徴点T
eから平面Gを特定することができなくなるため、姿勢角算出部22は、パターン光32aの位置から距離及び姿勢角を算出する。
【0040】
自己位置算出部26は、複数の特徴点の検出状態が第2基準を満たしていると検出状態判断部30が判断した場合、積分演算の起点を維持する。一方、複数の特徴点の検出状態が第2基準を満たさず、悪い状態と検出状態判断部30が判断した場合、自己位置算出部26は、同じ情報処理サイクルにおいて、姿勢角算出部22(
図1参照)が算出した距離及び姿勢角、及びその時の車両位置を新たな起点(車両の姿勢角及び初期位置)に設定し、当該起点から車両の姿勢変化量の加算を開始する。
【0041】
なお、第1実施形態で、検出状態判断部30は、前後フレーム間で対応関係が取れる特徴点の数に基づいて、複数の特徴点の検出状態を判断したが、1つの画像から検出された特徴点の総数Nに基づいて、複数の特徴点の検出状態を判断してもよい。つまり、1つの画像から検出された特徴点の総数Nが所定のしきい値(例えば9)以下である場合に、複数の特徴点の検出状態が悪いと判断してもよい。検出された特徴点のうち対応付けが取れない特徴点があることを考慮し、所定のしきい値(4)の3倍の数(12)を、しきい値に設定すればよい。
【0042】
算出状態判断部35は、姿勢角算出部22による距離及び姿勢角の算出状態が第3基準満たさず、悪い状態か否かを判断する。例えば、路面31上の段差にパターン光が照射された場合、路面31上の段差はアスファルトの凹凸に比べて大きいため、距離及び姿勢角の算出精度が極端に低下してしまう。複数の特徴点の検出状態が第2基準を満たさず、悪い状態で、且つ距離及び姿勢角の算出状態が第3基準を満たさず、悪い状態の場合、距離及び姿勢角、及びその変化量を精度よく検出する手段がなくなってしまう。
【0043】
そこで、算出状態判断部35は、例えば、姿勢角算出部22によって算出される距離及び姿勢角の標準偏差が所定のしきい値よりも大きい場合、姿勢角算出部22による距離及び姿勢角の算出状態が第3基準を満たさず、悪い状態と判断する。また、35個のスポット光のうち検出できたスポット光の数が3点未満である場合、原理的に路面31の平面式を求めることができないため、姿勢角算出部22による距離及び姿勢角の算出状態が第3基準を満たさず、悪い状態と判断する。最小二乗法を用いて平面式を求める場合、各スポット光との距離誤差の最大値の絶対値がある閾値(例えば0.05m)以上になった場合に、姿勢角算出部22による距離及び姿勢角の算出状態が第3基準を満たさず、悪い状態と判断してもよい。
【0044】
複数の特徴点の検出状態が第2基準を満たさず、悪い状態と検出状態判断部30が判断し、且つ姿勢角算出部22による距離及び姿勢角の算出状態が第3基準を満たさず、悪い状態と算出状態判断部35が判断した場合、自己位置算出部26は、積分演算の起点として、前の情報処理サイクルにおける距離及び姿勢角、及び車両の現在位置を用いる。これにより、車両の移動量の算出誤差を抑制できる。
【0045】
(情報処理サイクル)
次に、カメラ12により取得された画像38から車両10の移動量を推定する自己位置算出方法の一例として、ECU13により繰り返し実行される情報処理サイクルを、
図7を参照しながら説明する。
図7のフローチャートに示す情報処理サイクルは、車両10のイグニションスイッチがオン状態となり、自己位置算出装置が起動すると同時に開始され、自己位置算出装置が停止するまで、繰り返し実行される。
【0046】
図7のステップS01において、投光器11は、パターン光32aを投光或いは消灯する。具体的に、投光器11は、前回の情報処理サイクルのステップS05においてパターン光制御部27から送信されるパターン光投光実施フラグのオン/オフに基づき、パターン光32aの投光/消灯を切り替える。パターン光投光実施フラグについては、
図8を参照して後述する。
【0047】
ステップS03に進み、ECU13は、カメラ12を制御して、パターン光32aが投光される領域を含む車両周囲の路面31を撮像して画像38を取得する。ECU13は、カメラ12により取得された画像データを、メモリに記憶する。
【0048】
なお、ECU13はカメラ12の絞りを自動制御できる。前の情報処理サイクルで取得した画像38の平均輝度から、輝度値の最大値と最小値の中間値になるようにカメラ12の絞りをフィードバック制御してもよい。また、パターン光32aが投光されている領域は輝度値が高いため、パターン光32aを抽出した部分を除いた領域から、平均輝度値を求めてもよい。
【0049】
ステップS05に進み、検出状態判断部30は複数の特徴点の検出状態を判断する。パターン光制御部27は、検出状態判断部30の判断結果に基づき、パターン光投光実施フラグを切り替え、投光器11へ送信する。そして、姿勢角算出部22は、検出状態判断部30の判断結果に基づき、距離及び姿勢角を算出し、或いは算出しない。ステップS05の詳細は、
図8及び
図9を参照して後述する。
【0050】
ステップS07に進み、ECU13は、画像38から特徴点を検出し、前後の情報処理サイクルの間で対応付けが取れる特徴点を抽出し、特徴点の画像上の位置(U
i、V
i)から、距離及び姿勢角の変化量、及び車両の移動量を算出する。
【0051】
具体的に、先ず、特徴点検出部23は、カメラ12により取得された画像38をメモリから読み込み、画像38から路面31上の特徴点を検出し、各特徴点の画像上の位置(U
i、V
i)をメモリに記憶する。姿勢変化量算出部24は、各特徴点の画像上の位置(U
i、V
i)をメモリから読み込み、距離及び姿勢角と、特徴点の画像上の位置(U
i、V
i)とから、カメラ12に対する特徴点の相対位置(X
i,Y
i,Z
i)を算出する。なお、姿勢変化量算出部24は、前の情報処理サイクルのステップS09において設定された起点(距離及び姿勢角)を用いる。姿勢変化量算出部24は、カメラ12に対する特徴点の相対位置(X
i,Y
i,Z
i)を、メモリに記憶する。
【0052】
そして、姿勢変化量算出部24は、特徴点の画像上の位置(U
i、V
i)と、前の情報処理サイクルのステップS07において算出された特徴点の相対位置(X
i,Y
i,Z
i)をメモリから読み込む。姿勢変化量算出部24は、前後の情報処理サイクルの間で対応付けが取れる特徴点の相対位置(X
i,Y
i,Z
i)及び画像上の位置(U
i、V
i)を用いて、距離及び姿勢角の変化量を算出する。更に、前回の情報処理サイクルにおける特徴点の相対位置(X
i,Y
i,Z
i)と今回の情報処理サイクルにおける特徴点の相対位置(X
i,Y
i,Z
i)とから、車両の移動量を算出する。ステップS07で算出された「距離及び姿勢角の変化量」及び「車両の移動量」は、ステップS11の処理で用いられる。
【0053】
ステップS09に進み、ECU13は、複数の特徴点の検出状態、及びパターン光による距離及び姿勢角の算出状態に応じて、積分演算の起点を設定する。詳細は、
図10を参照して、後述する。
【0054】
ステップS11に進み、自己位置算出部26は、ステップS09の処理で設定された積分演算の起点、及びステップS07の処理で算出された「距離及び姿勢角の変化量」及び「車両の移動量」から、距離及び姿勢角、及び車両の現在位置を算出する。
【0055】
こうして、本実施形態に係る自己位置算出装置は、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の現在位置を算出することができる。
【0056】
図8のフローチャートを参照して、
図7のステップS05の詳細な手順を説明する。先ず、ステップS501において、検出状態判断部30は、前後フレーム間で対応付けが取れる特徴点を4つ以上検出しているか否かを判断する。特徴点を4つ以上検出している場合(S501でYES)、特徴点の時間変化から距離及び姿勢角の変化量を算出できる。そこで、ステップS505へ進み、パターン光制御部27は、パターン光投光実施フラグをオフ状態に設定し、投光器11へ送信する。その後、パターン光32aの位置から距離及び姿勢角を算出せずに、
図7のステップS07へ進む。
【0057】
一方、特徴点を4つ以上検出していない場合(S501でNO)、複数の特徴点の検出状態が第1基準を満たさず、悪い状態と判断できるので、ステップS503へ進む。そして、パターン光制御部27は、パターン光投光実施フラグをオン状態に設定し、投光器11へ送信する。その後、ステップS507へ進む。
【0058】
ステップS507において、検出状態判断部30は、前後フレーム間で対応付けが取れる特徴点を3つ以上検出しているか否かを判断する。特徴点を3つ以上検出している場合(S507でYES)、特徴点の時間変化から距離及び姿勢角の変化量を算出できる。そこで、パターン光32aの位置から距離及び姿勢角を算出せずに、
図7のステップS07へ進む。
【0059】
一方、特徴点を3つ以上検出していない場合(S507でNO)、特徴点の時間変化から距離及び姿勢角の変化量を算出できない。そこで、ステップS509に進み、姿勢角算出部22は、パターン光32aの位置から距離及び姿勢角を算出する。その後、
図7のステップS07へ進む。
【0060】
ステップS509において、先ず、パターン光抽出部21は、カメラ12により取得された画像38をメモリから読み込み、
図4(c)に示すように、画像38からパターン光32aの位置を抽出する。パターン光抽出部21は、パターン光32aの位置を示すデータとして算出されたスポット光S
pの画像上の座標(U
j、V
j)をメモリに記憶する。
【0061】
姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から距離及び姿勢角を算出し、メモリに記憶する。
【0062】
図9を参照して、
図8のフローチャートにしたがって実行される情報処理の一例を説明する。
図9(a)は姿勢角算出部22がパターン光32aから距離及び姿勢角を算出するか否かを示し、
図9(b)はパターン光投光実施フラグの状態を示し、
図9(c)は対応付けが取れる特徴点の数を示す。
図9(a)〜(c)の横軸は、時間の経過を示し、t0、t1、t2、・・・は情報処理サイクル(以後、単に「サイクル」とも呼ぶ)を示す。
【0063】
サイクルt0〜t3で、対応付けが取れる特徴点の数が4つ以上であるため、パターン光投光実施フラグはオフ状態であり、「三次元計測実施フラグ」もオフ状態である。「三次元計測実施フラグ」がオフ状態であれば、姿勢角算出部22はパターン光32aから距離及び姿勢角を算出しない。サイクルt4〜t6で、対応付けが取れる特徴点の数が3つになると、
図8のステップS501はNOと判断され、ステップS503でパターン光投光実施フラグがオン状態となるが、ステップS507でYESと判断されるため、三次元計測実施フラグはオフ状態のままである。サイクルt7〜t10で対応付けが取れる特徴点の数が4つ以上になると、パターン光投光実施フラグがオフ状態となる。サイクルt12〜t14で、対応付けが取れる特徴点の数が3つ未満となるため、ステップS501及びS507で共にNOと判断されるため、パターン光投光実施フラグ及び三次元計測実施フラグがオン状態となり、姿勢角算出部22による距離及び姿勢角の算出が実施される。
【0064】
図10のフローチャートを参照して、
図7のステップS09の詳細な手順を説明する。ステップS900において、ECU13は、今回の情報処理サイクルが初回であるか否かを判断する。そして、初回である場合、即ち、前回の情報処理サイクルのデータが無い場合にはステップS905に処理を進め、初回でない場合にはステップS901に処理を進める。
【0065】
ステップS901において、検出状態判断部30は、特徴点検出部23による特徴点T
eの検出状態が第2基準を満たさず、悪い状態か否かを判断する。即ち、
図8のステップS507と同じように、対応付けが取れる特徴点T
eの数が3つ以上であるか否かを判断する。3つ以上でないと判断した場合(ステップS901でYES)、ステップS903へ進み、3つ以上であると判断した場合(ステップS901でNO)、ステップS909へ進む。
【0066】
ステップS909で、ECU13は、現在設定されている積分演算の起点を維持する。
【0067】
ステップS903で、算出状態判断部35は、姿勢角算出部22による距離及び姿勢角の算出状態が第3基準を満たさず、悪い状態か否かを判断する。たとえば、同じ情報処理サイクルのステップS509において距離及び姿勢角の算出に成功しているか否かを判断する。成功していると判断した場合(ステップS903でYES)、ステップS905へ進み、成功していないと判断した場合(ステップS903でNO)、ステップS907へ進む。
【0068】
ステップS905で、ECU13は、ステップS509で姿勢角算出部22により算出された距離及び姿勢角、及びその時の車両の現在位置を積分演算の起点として設定する。この距離及び姿勢角を起点として新たな積分演算が開始される。また、車両の現在位置を起点として新たな積分演算が開始される。
【0069】
ステップS907で、ECU13は、前回の情報処理サイクルで採用した距離及び姿勢角、及び前回の情報処理サイクルにおける車両の現在位置を積分演算の起点として設定する。この距離及び姿勢角を起点として新たな積分演算が開始される。また、車両の現在位置を起点として新たな積分演算が開始される。その後、
図8のステップS11に処理を進める。
【0070】
以上説明したように、第1実施形態によれば、以下の作用効果が得られる。
【0071】
複数の特徴点の検出状態が悪いと、姿勢変化量算出部24による距離及び姿勢角の算出精度が低下するため、車両10の移動量の推定誤差が大きくなる。
図11(a)及び
図11(b)は、車両10のロール角(姿勢角の一例)及び移動量(車幅方向)の推定誤差の例を示すグラフであって、車両10が傾斜の無い平坦な路面上を一定の速度で直進している場合の、ロール角の推定値及び移動量の算出値の時間変化を示す。図中の「P
1」及び「P
2」は、複数の特徴点の検出状態に係わらず、移動量算出の起点、及び距離及び姿勢角の積分演算の起点を維持する比較例を示す。「Q
1」及び「Q
2」は真値を示す。車両10は直進しているため、ロール角及び車幅方向の移動量の真値(Q
1、Q
2)は0のままである。しかし、時刻t1〜t2の間、複数の特徴点の検出状態が悪いコンクリート路面を走行したため、路面の平面式に誤差が発生して、ロール角に推定誤差が現れる。ロール角の誤差は、車幅方向の移動量の誤差として反映されてしまう。比較例は、複数の特徴点の検出状態に応じて、移動量算出の起点、及びロール角の積分演算の起点を、パターン光32aから算出された距離及び姿勢角、及びその時の車両の現在位置へリセットしない。このため、車両10の移動量の誤差は拡大してしまう。
【0072】
第1実施形態によれば、複数の特徴点の検出状態が第1基準を満たさず、悪い状態と検出状態判断部30が判断した場合(ステップS501でNO)、パターン光制御部27は、パターン光32aを投光する。これにより、パターン光32aの位置から距離及び姿勢角を算出可能となる。よって、パターン光32aから算出された誤差の小さい距離及び姿勢角を起点として新たに積分演算を開始できる。よって、車両10の現在位置を精度良く且つ安定して推定することができる。
【0073】
また、複数の特徴点の検出状態が悪くなる路面には、例えば、特徴点の対象となる模様や凹凸が少ない路面が含まれる。模様や凹凸が少ない路面は平坦性が高いため、パターン光32aから算出された距離及び姿勢角に含まれるノイズ成分が少なくなる。一方、複数の特徴点の検出状態が良い路面31では、アスファルトの凹凸によりパターン光32aの反射位置が安定しないため、パターン光32aから算出された距離及び姿勢角は多くのノイズ成分を含むことになる。第1実施形態によれば、複数の特徴点の検出状態に応じて、特徴点を用いた距離及び姿勢角の更新とパターン光32aを用いた距離及び姿勢角の算出とを適切に使い分けて、距離及び姿勢角を精度良く且つ安定して求めることができる。
【0074】
更に、路面31の照度の急激な変化によって画像38のコントラストが低下してしまい、複数の特徴点の検出状態が悪く場合がある。第1実施形態によれば、複数の特徴点の検出状態を直接判断することにより、照度計などのセンサを別途設ける必要が無くなり、コストが軽減され、装置の軽量化に寄与する。
【0075】
第1実施形態によれば、複数の特徴点の検出状態が第1基準を満たし、悪くない状態と検出状態判断部30が判断した場合(ステップS501でYES)、パターン光制御部27は、パターン光32aの投光を停止する。パターン光32aを、複数の特徴点の検出状態が第1基準を満たさず、悪い状態の場合のみ、投光することができるので、パターン光32aを必要な場合だけ投光して、投光に必要な電力の消費を抑制することができる。
【0076】
図7のステップS05におけるパターン光32aの投光及び消灯(ステップS503、S505)の判断は、次の情報処理
サイクルのステップS01において反映される。よって、パターン光32aを用いて距離及び姿勢角を算出するためには、予め、前のサイクルにおいてパターン光投光実施フラグをオン状態に切り替えておく必要がある。そこで、第1実施形態では、複数の特徴点の検出状態が第1基準を満たさず、悪い状態であれば、パターン光投光実施フラグをオン状態に切り替える(S05)。その次のサイクルにおいて、パターン光32aが投光される(S01)。そして、同じサイクルにおいて、複数の特徴点の検出状態が第2基準を満たさず悪い状態の場合(S507でNO)、姿勢角算出部22は、パターン光32aの位置から距離及び姿勢角を算出することができる。このように、複数の特徴点の検出状態を2つの基準(第1基準、第2基準)を用いて判断することにより、パターン光32aの投光のタイミング、及び距離及び姿勢角の算出のタイミングを適切に制御することが可能となる。
【0077】
(第2実施形態)
第2実施形態では、パターン光32aを用いた距離及び姿勢角の算出タイミングを、パターン光32aの投光を開始してからの経過時間に応じて制御する例を説明する。第2実施形態に係わる自己位置算出装置のハードウェア構成は
図1に示した通りであるため、説明を省略する。また、ECU13により繰り返し実行される情報処理サイクルも、ステップS05を除き、
図7に示した通りであるため、説明を省略する。後述する第3及び第4実施形態についても同様である。
【0078】
図12を参照して、第2実施形態に係わるステップS05の詳細な手順を説明する。
図12に示すフローチャートでは、
図8のステップS507の代わりに、ステップS511を実施する。その他のステップは、
図8と同じであり説明を省略する。ECU13は、パターン光32aの投光を開始してからの経過時間を計測する。
【0079】
具体的に、ECU13は、ステップS503でパターン光投光実施フラグをオフ状態からオン状態へ切り替えてからの経過時間を計測する。ステップS511において、ECU13は、パターン光投光実施フラグを切り替えてから第1所定時間が経過したか否かを判断する。第1所定時間が経過していなければ(S511でNO)、パターン光32aの位置から距離及び姿勢角を算出することなく、ステップS07へ進む。一方、第1所定時間が経過していれば(S511でYES)、ステップS509へ進み、パターン光32aの位置から距離及び姿勢角を算出し、その後、ステップS07へ進む。
【0080】
なお、第1所定時間は、例えば、
図13に示すように、2回分の情報処理サイクル(D1)を設定することができる。つまり、パターン光投光実施フラグをオフ状態からオン状態へ切り替えた情報処理サイクル(t11)、及びその次の情報処理サイクル(t12)では距離及び姿勢角を算出せず(S511でNO)、またその次(2回目)の情報処理サイクル(t13)において、初めて距離及び姿勢角を算出する(S511でYES、S509)。
【0081】
前述したように、パターン光32aを用いて距離及び姿勢角を算出するためには、予め、前のサイクルにおいてパターン光投光実施フラグをオン状態に切り替えておく必要がある。第2実施形態では、パターン光制御部27がパターン光32aの投光を開始してから第1所定時間(D1)が経過した後に、姿勢角算出部22は、パターン光32aの位置から距離及び姿勢角を算出し始める。これにより、パターン光32aの投光のタイミング、及び距離及び姿勢角の算出のタイミングを適切に制御することが可能となる。
【0082】
(第3実施形態)
第3実施形態では、パターン光32aの投光を開始した後に、複数の特徴点の検出状態が第1基準を満たし、悪くない状態と判断しても、当該判断から第2所定時間が経過するまではパターン光32aの投光を継続する例を説明する。
【0083】
複数の特徴点の検出状態が第1基準よりも悪くないと検出状態判断部30が判断した場合、パターン光制御部27は、検出状態判断部30が判断してから第2所定時間が経過した後に、パターン光32aの投光を停止する。
【0084】
図14を参照して、第3実施形態に係わるステップS05の詳細な手順を説明する。
図14に示すフローチャートは、
図8に対して、更にステップS513及びステップS515を備える。その他のステップは、
図8と同じであり説明を省略する。
【0085】
ECU13は、対応付けが取れる特徴点の数が4つ以上であると判断されてからの経過時間を計測する。対応付けが取れる特徴点の数が4つ以上であると判断された場合(S501でYES)、ステップS513へ進み、ECU13は、対応付けが取れる特徴点の数が4つ以上であると判断されてから第2所定時間が経過したか否かを判断する。第2所定時間が経過していれば(S513でYES)、ステップS505へ進み、パターン光制御部27は、パターン光投光実施フラグをオン状態からオフ状態へ切り替える。一方、第2所定時間が経過していなければ(S513でNO)、ステップS515へ進み、パターン光制御部27は、パターン光投光実施フラグをオン状態に維持する。
【0086】
なお、第2所定時間は、例えば、
図15に示すように、2回分の情報処理サイクル(D2)を設定することができる。つまり、対応付けが取れる特徴点の数が4つ以上となった情報処理サイクル(t6、t14)、及びその次の情報処理サイクル(t7、t15)ではパターン光投光実施フラグをオン状態に維持し(S513でNO、S515)、またその次(2回目)の情報処理サイクル(t8、t16)において、初めてパターン光投光実施フラグをオフ状態に切り替える(S513でYES、S505)。
【0087】
これにより、一旦、パターン光32aの投光を開始したら、その後、複数の特徴点の検出状態が改善しても直ぐにはパターン光32aが消灯することがなくなる。つまり、パターン光32aの投光状態にヒステリシス(履歴効果)を持たせることができるので、パターン光32aのちらつきを抑制し、ちらつきによる煩わしさを軽減することができる。
【0088】
(第4実施形態)
第4実施形態では、第3実施形態とは対称的に、パターン光32aの消灯状態にヒステリシスを持たせる例について説明する。パターン光32aを消灯した後に、複数の特徴点の検出状態が第1基準を満たさず、悪くなっても、パターン光制御部27は、当該判断から第3所定時間が経過するまではパターン光32aの消灯を継続する。複数の特徴点の検出状態が第1基準を満たさず、悪い状態と検出状態判断部30が判断した場合、パターン光制御部27は、検出状態判断部30が判断してから第3所定時間が経過した後に、パターン光32aの投光を開始する。
【0089】
図16を参照して、第4実施形態に関わるステップS05の詳細な手順を説明する。
図16に示すフローチャートは、
図8に対して、更にステップS517を備える。また、ステップS501において、対応付けが取れる特徴点の数が5つ以上であるか否かを判断する。つまり、対応付けが取れる特徴点の数が5つ以上でない場合、検出状態判断部30は、複数の特徴点の検出状態が第1基準を満たさず、悪い状態、と判断する。その他のステップは、
図8と同じであり説明を省略する。
【0090】
ECU13は、対応付けが取れる特徴点の数が5つ以上でないと判断されてからの経過時間を計測する。対応付けが取れる特徴点の数が5つ以上でないと判断された場合(S501でNO)、ステップS517へ進み、ECU13は、対応付けが取れる特徴点の数が5つ以上でないと判断されてから第3所定時間が経過したか否かを判断する。第3所定時間が経過していれば(S517でYES)、ステップS503へ進み、パターン光制御部27は、パターン光投光実施フラグをオン状態に切り替える。一方、第3所定時間が経過していなければ(S517でNO)、ステップS505へ進み、パターン光制御部27は、パターン光投光実施フラグをオフ状態に維持する。
【0091】
なお、第3所定時間は、例えば、
図17に示すように、2回分の情報処理サイクル(D3)を設定することができる。つまり、対応付けが取れる特徴点の数が5つ未満となった情報処理サイクル(t2、t9)、及びその次の情報処理サイクル(t3、t10)ではパターン光投光実施フラグをオフ状態に維持し(S517でNO、S505)、またその次(2回目)の情報処理サイクル(t4、t11)において、初めてパターン光投光実施フラグをオン状態に切り替える(S517でYES、S503)。
【0092】
これにより、一旦、パターン光32aの投光を停止したら、その後、複数の特徴点の検出状態が悪化しても直ぐにはパターン光32aの投光を開始することがなくなる。つまり、パターン光32aの消灯状態にヒステリシス(履歴効果)を持たせることができるので、パターン光32aのちらつきを抑制し、ちらつきによる煩わしさを軽減することができる。
【0093】
上記のように、本発明の第1乃至第4実施形態を記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【0094】
図2は、カメラ12と投光器11を車両10の前面に取り付けた例を示したが、車両10の側方,後方,真下に向けて設置してもよい。また、本実施形態では車両10の一例として、四輪の乗用自動車を
図2に示したが、オートバイ、貨物自動車、或いは例えば建設機械を運搬する特殊車両など、道路の路面或いは壁面上の特徴点を撮像することが可能な移動体(車両)すべてに適用可能である。