以下、本発明の実施形態について図面を参照して説明する。
[第1実施形態の説明]
図1は、本発明の実施形態に係る自己位置算出装置100の構成を示すブロック図である。図1に示すように、自己位置算出装置100は、投光器11と、カメラ12(撮像部)と、エンジンコントロールユニット(ECU)13と、を備える。投光器11は、車両に搭載され、車両周囲の路面に周期的に輝度が変化するパターン光を投光する。パターン光の詳細については後述する。カメラ12は、車両に搭載され、パターン光が投光された領域を含む車両周囲の路面を撮像して画像を取得する。ECU13は、投光器11の作動を制御し、且つカメラ12により取得された画像から車両の移動量を推定する一連の情報処理サイクルを実行する。
投光器11は、図2に示すように、カメラ12の撮像範囲内の路面31に向けて、正方形や長方形の格子像を含む所定の形状を有するパターン光32bを投光する。この際、パターン光制御部27により、パターン光32bの輝度が、周期的に変化するように制御される。
カメラ12は、固体撮像素子、例えばCCD及びCMOSを用いたデジタルカメラであって、画像処理が可能なデジタル画像を取得する。カメラ12の撮像対象は車両周囲の路面であって、車両周囲の路面には、車両の前部、後部、側部、車両底部の路面が含まれる。例えば、図2に示すように、カメラ12は、車両10の前部、具体的にはフロントバンパ上に搭載することができる。
車両10の前方の路面31上の特徴点(「テクスチャ」ともいう)及び投光器11により投光されたパターン光32bを撮像できるように、カメラ12が設置される高さ及び向きが調整され、且つ、カメラ12が備えるレンズの焦点及び絞りが自動調整される。ここで、「特徴点」とは、アスファルト上に存在する凹凸部分である。
カメラ12は、所定の時間間隔をおいて繰り返し撮像を行い、一連の画像(フレーム)群を取得する。例えば、パターン光32bの輝度を変化させる周期を200[Hz]とした場合、1秒間に2400回の撮像を行う。これにより、パターン光32bの輝度が最も高い時点、及び最も低い時点の画像を周期的に撮像することができる。カメラ12により取得された画像データは、撮像周期毎にECU13へ転送され、ECU13が備えるメモリ(図示省略)に記憶される。
カメラ12は、路面31により照射されたパターン光を撮像する。投光器11は、例えば、レーザポインター及び回折格子を備える。レーザポインターから射出されたレーザ光を回折格子で回折することにより、投光器11は、図2〜図4に示すように、格子像、或いは行列状に配列された複数のスポット光からなるパターン光(32b、32a)を生成する。図3及び図4に示す例では、5×7のスポット光からなるパターン光32aを生成している。
図1に戻り、ECU13は、CPU、メモリ、及び入出力部を備えるマイクロコントローラからなり、予めインストールされたコンピュータプログラムを実行することにより、自己位置算出装置100が備える複数の情報処理部を構成する。ECU13は、カメラ12により取得された画像から車両の移動量を推定する一連の情報処理サイクルを、画像(フレーム)毎に繰り返し実行する。ECU13は、車両10に関連する他の制御に用いるECUと兼用しても良い。
複数の情報処理部には、パターン光抽出部21と、姿勢角算出部22と、特徴点検出部23と、姿勢変化量算出部24と、自己位置算出部26、及び、パターン光制御部27が含まれる。姿勢変化量算出部24には、特徴点検出部23が含まれる。
パターン光制御部27は、投光器11によるパターン光32aの投光を制御する。例えば、車両10のイグニションスイッチがオン状態となり、自己位置算出装置100が起動すると同時に、パターン光制御部27は、周期的に輝度が変化するパターン光32aの投光を開始する。その後、パターン光制御部27は、自己位置算出装置が停止するまで、パターン光32aを連続して投光する。或いは、必要に応じてパターン光32aを投光してもよい。本実施形態では、輝度変化の一例として、投光パターンの輝度が所定周波数の正弦波状に変化するように、投光器11に供給する電力を制御する。例えば、後述の図8(a)に示すように正弦波状に輝度が変化するように制御する。また、後述する第2実施形態では、図11(a)に示すように、所定の切替周波数でオン、オフを切り替えて投光パターンの輝度を制御する。
パターン光抽出部21は、カメラ12により取得された画像をメモリから読み込み、更に、前述した所定周波数にて同期検波処理を実施することにより、画像に含まれるパターン光32aを抽出する。同期検波処理については後述する。また、後述する第2実施形態では、投光パターンが投光されているとき(オン時)に撮像した画像と、投光パターンが投光されていないとき(オフ時)に撮像した画像の差分を演算することにより、パターン光32aを抽出する。そして、取得したパターン光32aから、該パターン光32aの位置を抽出する。図3(a)に示すように、例えば、投光器11が行列状に配列された複数のスポット光からなるパターン光32aを路面31に向けて投光し、路面31で反射したパターン光32aを同期検波処理、或いは差分演算処理により検出する。
更に、抽出したパターン光の画像に対して二値化処理を施すことにより、図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の位置を示すデータとしてメモリに記憶される。
次に、同期検波処理について説明する。カメラ12で撮像した画像に含まれる測定信号をsin(ω0+α)とすると、この測定信号には投光パターン以外に様々な周波数成分の太陽光や人工光が含まれている。そこで、周波数が変調周波数ωrとなる参照信号sin(ωr+β)を測定信号sin(ω0+α)に乗じると、その結果は、cos(ω0−ωr+α−β)/2−cos(ω0+ωr+α+β)/2となる。
この測定信号をローパスフィルタに通すと、ω0≠ωrの信号、即ち、周波数がωrではない投光パターン以外の太陽光や人工光は除去される。その一方で、ω0=ωrの信号、即ち、周波数がωrの投光パターンは、cos(α−β)/2となって抽出することができる。このように、同期検波処理を用いることにより、様々な周波数成分を含む測定信号の中から、投光パターンのみを抽出した画像を得ることができる。
即ち、本実施形態では、パターン光制御部27は、予め設定した所定の変調周波数ωrにてパターン光32aを輝度変調する。従って、路面には周波数ωrで輝度変調された投光パターンが投光される。そして、姿勢角算出部22は、カメラ12で撮像される画像(測定信号)に変調周波数ωrを乗じることにより、投光パターンのみを抽出することができる。
図1に示す姿勢角算出部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との距離(図3の基線長Lb)は既知である。そこで、姿勢角算出部22は、三角測量の原理を用いて、各スポット光の画像上の座標(Uj、Vj)から各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置(Xj,Yj,Zj)として求めることができる。
なお、カメラ12に対する各スポット光の相対位置(Xj,Yj,Zj)は同一平面上に存在しない場合が多い。なぜなら、路面31に表出するアスファルトの凹凸に応じて各スポット光の相対位置が変化するからである。そこで、最小二乗法を用いて、各スポット光との距離誤差の二乗和が最小となるような平面式を求めても良い。
特徴点検出部23は、カメラ12により取得された画像をメモリから読み込み、メモリから読み込んだ画像から、路面31上の特徴点を検出する。詳細には、所定周波数で正弦波状に輝度が変化するパターン光の輝度が、予め設定した閾値輝度以下となった時間帯に特徴点検出フラグを「1」に設定し、この時間帯において特徴点を検出する。また、後述する第2実施形態では、パターン光の投光がオフとされている時間帯において、特徴点を検出する。
更に、特徴点検出部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の例を示す。更に、各特徴点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にて算出された距離及び姿勢角(パターン光を用いて算出された距離及び姿勢角)が起点として設定された場合について説明する。この場合には、この起点(距離及び姿勢角)に対して、自己位置算出部26は、姿勢変化量算出部24で算出された各フレーム毎の距離及び姿勢角の変化量を逐次加算して(積分演算して)、距離及び姿勢角を最新な数値に更新する。また、姿勢角算出部22にて距離及び姿勢角が算出された際の車両位置を起点(車両の初期位置)とし、この初期位置からの車両10の移動量を逐次加算して(積分演算して)、車両10の自己位置を算出する。例えば、地図上の位置と照合された起点(車両の初期位置)を設定することで、地図上の車両の現在位置を逐次算出することができる。
従って、姿勢変化量算出部24は、時間Δtの間でのカメラ12の移動量(ΔL)を求めることにより、車両10の自己位置を算出することができる。更には、距離及び姿勢角の変化量も同時に算出することができるので、姿勢変化量算出部24は、車両10の距離及び姿勢角の変化量を考慮して、6自由度(前後、左右、上下、ヨー、ピッチ、ロール)の移動量(ΔL)を精度よく算出することができる。即ち、車両10の旋回や加減速によるロール運動或いはピッチ運動によって距離や姿勢角が変化しても、移動量(ΔL)の推定誤差を抑制することができる。
なお、実施形態では、距離及び姿勢角の変化量を算出し、距離及び姿勢角を更新することにより、カメラ12の移動量(ΔL)を算出した。しかし、路面31に対するカメラ12の姿勢角だけを変化量算出及び更新の対象としても構わない。この場合、路面31とカメラ12との距離は一定と仮定すればよい。これにより、姿勢角の変化量を考慮して、移動量(ΔL)の推定誤差を抑制しつつ、ECU13の演算負荷を軽減し、且つ演算速度を向上させることもできる。
[第1実施形態の作用]
次に、カメラ12により取得された画像38(図5参照)から車両10の移動量を推定する自己位置算出方法の一例として、ECU13により繰り返し実行される情報処理サイクルを、図7に示すフローチャート、図8に示す特性曲線、及び図9に示す説明図を参照して説明する。
図8(a)は、投光器11より投光されるパターン光32aの輝度変化を示す特性図、図8(b)は、特徴点検出フラグの変化を示す特性図である。また、図9は路面に投光されるパターン光を示す説明図であり、図9(a)、(c)はパターン光32aの輝度が高い場合、図9(c)は、パターン光32aの輝度が低い場合の状態を示している。図7に示す情報処理サイクルは、車両10のイグニションスイッチがオン状態となり、自己位置算出装置100が起動すると同時に開始され、該自己位置算出装置100が停止するまで、繰り返し実行される。
初めに、図7のステップS11において、パターン光制御部27は、投光器11を制御して、車両周囲の路面31にパターン光を投光する。この際、パターン光制御部27は、図8(a)に示すように、パターン光の輝度B1が所定周期の正弦波状に変化するように投光電力を制御する。例えば、正弦波の周波数を200[Hz]とする。その結果、時間経過に伴い輝度B1が正弦波状に変化するパターン光が路面31に投光される。
ステップS12において、カメラ12は、パターン光が投光されている領域を含む路面31を撮像して画像を取得する。ステップS13において、特徴点検出部23は、投光器11より投光されるパターン光32aの輝度が予め設定した閾値輝度Bth以下であるか否かを判断する。
閾値輝度Bthより大きい場合には(ステップS13でNO)、ステップS14において、パターン光抽出部21は、上述した同期検波処理によりパターン光32aを抽出する。例えば、図9(a),(c)に示すように、図8に示す時刻t1或いは時刻t3(輝度B1が閾値輝度Bthよりも大きい時刻)に撮影した画像から、同期検波処理によりパターン光32aを抽出する。そして、パターン光32aの位置を示すデータとして、スポット光Spの画像上の座標(Uj、Vj)を算出し、これをメモリに記憶する。更に、姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から、距離及び姿勢角を算出し、メモリに記憶する。距離及び姿勢角の算出方法は、前述した通りである。なお、以下では、姿勢角算出部22によりパターン光を用いて路面31に対する車両10の距離及び姿勢角を求め、これを積分演算の起点となる距離及び姿勢角として再設定する処理を「距離及び姿勢角をリセットする」と表現する。その後、ステップS16に処理を進める。
一方、閾値輝度Bth以下である場合には(ステップS13でYES)、ステップS15において、特徴点検出部23は、路面31に存在する特徴点を検出する。具体的には、パターン光32aの輝度B1が、図8(a)に示すように正弦波状に変化する場合には、輝度B1が閾値輝度Bth以下となる時間帯に特徴点を検出する。即ち、図8(b)に示すように、輝度B1が閾値輝度Bth以下となる時間帯に特徴点検出フラグを「1」とし、この時間帯に特徴点を検出する。例えば、図9(b)に示すように、図8に示す時刻t2(輝度B1が閾値輝度Bth以下の時刻)に撮影した画像から特徴点を検出する。更に、姿勢変化量算出部24は、特徴点検出部23で検出された特徴点の画像上の位置に基づき、カメラ12に対する特徴点の変化量を算出する。この際、特徴点を検出する領域は、パターン光32aを投光する領域と全部または一部が重なっている領域としている。
また、ステップS15において、特徴点検出部23は、画像38から特徴点(例えば、アスファルト上に存在する凹凸部位)を検出し、前回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点を抽出し、特徴点の画像上の位置(Ui、Vi)から距離及び姿勢角を更新する。
具体的には、特徴点検出部23は、特徴点検出フラグが「1」のとき、カメラ12により取得された画像38をメモリから読み込み、画像38から路面31上の特徴点を検出し、各特徴点の画像上の位置(Ui、Vi)をメモリに記憶する。姿勢変化量算出部24は、各特徴点の画像上の位置(Ui、Vi)をメモリから読み込み、距離及び姿勢角と、特徴点の画像上の位置(Ui、Vi)とから、カメラ12に対する特徴点の相対位置(Xi,Yi,Zi)を算出する。姿勢変化量算出部24は、カメラ12に対する特徴点の相対位置(Xi,Yi,Zi)をメモリに記憶する。
そして、姿勢変化量算出部24は、特徴点の画像上の位置(Ui、Vi)と、前回の情報処理サイクルのステップS15において算出された特徴点の相対位置(Xi,Yi,Zi)をメモリから読み込む。姿勢変化量算出部24は、今回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点の相対位置(Xi,Yi,Zi)及び画像上の位置(Ui、Vi)を用いて、距離及び姿勢角の変化量を算出する。姿勢変化量算出部24は、前回の情報処理サイクルで求められた距離及び姿勢角に、上記した距離及び姿勢角の変化量を加算することにより、距離及び姿勢角を更新する。そして、更新後の距離及び姿勢角をメモリに記憶する。つまり、前回のサイクルのステップS16(後述)の処理で設定された距離及び姿勢角に対して、今回の情報処理サイクル毎の距離及び姿勢角の変化量を積分演算することにより、距離及び姿勢角を更新する処理を実行する。その後、ステップS16に処理を進める。
ステップS16において、ECU13は、積分演算の起点を選択する。この処理では、最初の情報処理サイクルにおいては、パターン光32aより算出される距離及び姿勢角を選択して設定する。更に、予め設定した条件が成立した場合、例えば、特徴点検出部23における特徴点の検出状態が低下し、特徴点をフラグが「1」となるタイミングで複数の特徴点を検出できなくなった場合には、移動量算出の起点をパターン光により算出する距離及び姿勢角、即ちステップS14の処理で算出された距離及び姿勢角にリセットする。他方、特徴点検出部23にて特徴点が正常に検出されている場合には、該特徴点の位置に基づいて距離及び姿勢角を更新する。
つまり、特徴点検出部23により特徴点が正常に検出されない場合には、カメラ12の距離及び姿勢角を高精度に設定することができず、この精度の低い距離及び姿勢角を採用して車両の移動量を算出すると、車両の移動量を高精度に検出できなくなる。従って、このような場合には、移動量算出の起点をパターン光の位置から求められる距離及び姿勢角にリセットする。こうすることで、距離及び姿勢角に大幅な誤差が生じることを防止する。
次いで、ステップS17において、自己位置算出部26は、ステップS14或いはS15の処理で求められた距離及び姿勢角と、積分演算の起点、及び、特徴点の画像上の位置(Ui、Vi)の変化量とから、路面31に対するカメラ12の移動量(ΔL)、即ち車両10の移動量を算出する。
こうして、第1実施形態に係る自己位置算出装置では、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の位置を算出することができるのである。
このようにして、第1実施形態に係る自己位置算出装置100では、投光器11より所定の変調周波数(例えば、200Hz)で正弦波状に輝度が変化するパターン光32aを路面に投光し、このパターン光32aを含む画像をカメラ12で撮像する。この画像を同期検波処理することにより、パターン光32aを抽出する。従って、路面上に投光したパターン光32aを高精度に検出することが可能となる。その後、パターン光32aの位置に基づいてカメラ12の距離及び姿勢角を算出する。この際、距離及び姿勢角の算出は、上記した所定の変調周期で設定される周期毎に実施しても良いし、複数周期毎(例えば、10周期毎)に実施しても良い。従って、所定の周期毎、或いは複数周期毎にパターン光32aに基づく距離及び姿勢角が算出される。
また、パターン光32aの輝度が閾値輝度Bth以下となる時間帯に、路面上に存在する特徴点を検出する。この際、パターン光32aの輝度は低いので、特徴点を検出する際にパターン光32aの影響を受けることを防止でき、高精度な特徴点検出が可能となる。そして、検出した特徴点に基づき、上述した方法を採用することにより車両の移動量を算出することができる。その結果、車両の移動量を高精度に算出することが可能となる。
ここで、パターン光32aの輝度の設定について説明する。本実施形態では、最も日照量が多い夏至(6月)に近い晴天下においてもパターン光32aを検出できるように、該パターン光32aの最大輝度(図8(a)に示す輝度B1の上のピーク)を設定する。また、パターン光の影響が最も大きい夜間において、投光パターンを路面の特徴点と99%以上の確率で誤検出しないように、パターン光の最小輝度(図8(a)に示す輝度B1の下のピーク)を設定する。
また、パターン光の輝度変調の周波数は、例えば、200[Hz]とし、カメラ12のフレームレート(1秒間の撮影数)を2400[fps]とする。これは、本実施形態で、車両の最高速度72Km/h(≒20m/s)を想定した場合において、1周期での移動量を0.1m以下に抑えるためである。これは本実施形態の原理上、パターン光32aが投光される領域と、特徴点が検出される領域が可能な限り近い、或いは同一であることが望ましいためである。また、同期検波の原理から、1周期の間での移動量が大きくなり、路面状態が変化してしまうと、投光パターン以外の太陽光や人工光が変化し、同期検波の前提が崩れる可能性があり、1周期での移動量を小さく抑えることにより、これを回避する。従って、より高速なカメラを用い、この一定周期を更に短くすると更なる性能向上が期待できる。
また、本実施形態では、所定の変調周波数で輝度変調したパターン光を照射し、更に、撮像した画像を同期検波処理することにより、パターン光32aを抽出する例について説明したが、同期画像を所定回数積算した画像を生成し、この積算した画像からパターン光32aを抽出するようにしてもよい。つまり、1周期の同期検波処理により得られる同期画像では、パターン光32aが投光された部分が十分強調されずにノイズが多く含まれてしまい、2値化処理を高精度に実施することができなくなる場合がある。そこで、2周期以上で取得した同期画像を積分し、パターン光32aが投光された部分を、より一層強調した同期検波画像を作成することにより、ノイズの影響をより排除して画像上の投光パターンを検出することができる。
更に、特徴点を検出する領域は、パターン光32aを投光する領域と重複している。従って、カメラ12による撮像範囲を狭めることができ、画像処理に要する演算負荷を軽減することができる。
[第2実施形態の説明]
次に、本発明に係る自己位置算出装置100の第2実施形態について説明する。装置構成は、前述した図1と同様である。前述した第1実施形態では、投光器11より投光するパターン光の輝度を正弦波状に変化させ、カメラ12で撮像される画像を同期検波処理することにより、パターン光32aを検出する例について示した。これに対して、第2実施形態では、所定の切替周期でパターン光32aの投光をオン、オフ制御し、パターン光32aの投光時(オン時)に撮像した画像と、パターン光32aの非投光時(オフ時)に撮像した画像の差分を演算して、パターン光32aを取得する。
即ち、パターン光制御部27は、図11(a)に示すように、所定の切替周期でパターン光32aのオン、オフを切り替える。そして、特徴点検出部23は、図11(b)に示すように、パターン光32aがオフのときに特徴点検出フラグを「1」として特徴点を検出する。
以下、第2実施形態に係る自己位置算出装置100の処理手順を、図10に示すフローチャートを参照して説明する。
初めに、図10のステップS31において、パターン光制御部27は、投光器11を制御して、車両周囲の路面31にパターン光を投光する。この際、パターン光制御部27は、図11(a)に示すように、所定の切替周期でパターン光のオン、オフが切り替えられるように投光電力を制御する。
ステップS32において、カメラ12は、パターン光が投光されている領域を含む路面31を撮像して画像を取得し、この画像をメモリに記憶する。ステップS33において、特徴点検出部23は、投光器11より投光されるパターン光32aがオフであるか否かを判断する。
パターン光32aがオンである場合には(ステップS33でNO)、ステップS34において、パターン光抽出部21は、メモリに記憶されているパターン光オン時の画像と、以前に撮像されているパターン光オフ時の画像との差分画像を生成し、該差分画像からパターン光を抽出する。即ち、パターン光32aの投光時に撮像した画像と、パターン光32aの非投光時に撮像した画像の差分を演算することにより、パターン光32aを抽出することができる。なお、この際、車両10は移動しており、車両10と路面との相対位置は変化するが、カメラ12のフレームレートが大きいので、車両10の移動距離を無視することができる。
そして、前述した第1実施形態と同様に、パターン光32aの位置を示すデータとして、スポット光Spの画像上の座標(Uj、Vj)を算出し、これをメモリに記憶する。更に、姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から、距離及び姿勢角を算出し、メモリに記憶する。その後、ステップS36に処理を進める。
一方、パターン光がオフ時である(パターン光の輝度が閾値輝度以下である)場合には(ステップS33でYES)、ステップS35において、特徴点検出部23は、路面31に存在する特徴点を検出する。即ち、図11(b)に示す特徴点検出フラグが「1」とされている時間帯に、カメラ12で撮像された画像を用いて特徴点を検出する。更に、姿勢変化量算出部24は、特徴点検出部23で検出された特徴点の画像上の位置に基づき、カメラ12に対する特徴点の変化量を算出する。特徴点を検出する領域は、パターン光32aを投光する領域と同一の領域としている。特徴点の位置から、カメラ12の距離及び姿勢角の変化量を算出する手法は、前述した第1実施形態と同様である。その後、ステップS36、S37に処理を進める。ステップS36、S37の処理は、図7に示したステップS16、S17の処理と同様であるので説明を省略する。
こうして、第2実施形態に係る自己位置算出装置100は、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の位置を算出することができるのである。
このようにして、第2実施形態に係る自己位置算出装置100では、投光器11より所定の切替周期でオン、オフが切り替えられるパターン光32aを路面に投光し、このパターン光32aを含む画像をカメラ12で撮像する。そして、パターン光32aをオンとしたときの画像と、パターン光32aをオフとしたときの画像の差分を演算して、パターン光32aを抽出する。従って、路面上に投光したパターン光32aを高精度に検出することが可能となる。そして、パターン光32aの位置に基づいてカメラ12の距離及び姿勢角を算出するので、距離及び姿勢角を高精度に算出することができる。
また、パターン光32aがオフとされている時間帯に、路面上に存在する特徴点を検出する。この際、パターン光32aは投光されていないので、特徴点の検出にパターン光32aの影響を受けること無く、高精度な特徴点検出が可能となる。そして、上述した方法を採用することにより、車両の移動量を算出することができる。その結果、車両の移動量を高精度に算出することが可能となる。
なお、第2実施形態に係る自己位置算出装置100についても、前述した第1実施形態と同様に、パターン光のオン、オフを切り替える際の切替周波数を、例えば200[Hz]とし、カメラ12のフレームレートを2400[fps]とすることが望ましい。
[第3実施形態の説明]
次に、本発明の第3実施形態について説明する。図12は、第3実施形態に係る自己位置算出装置100aの構成を示すブロック図である。第3実施形態では、図1に示した自己位置算出装置100と対比して、特徴点移動速度算出部37が設けられている点で相違する。
特徴点移動速度算出部37は、特徴点検出部23で検出された特徴点の位置座標の変化に基づいて、特徴点の移動速度を算出する。特徴点を取得する周期が既知であるから、特徴点の移動量を求めることにより特徴点の移動速度を算出することができる。この特徴点の移動速度データを姿勢変化量算出部24に出力する。そして、姿勢変化量算出部24は、特徴点の移動速度データの大きさに基づいて、姿勢変化量の算出周期を変更する。一例として、予め閾値速度を設定しておき、特徴点移動速度算出部37より取得される特徴点の移動速度が閾値速度よりも高い場合には、姿勢変化量の算出周期が短くなるように設定する。
図12における特徴点移動速度算出部37以外の構成は、前述した図1と同様であるので、同一符号を付して構成説明を省略する。
次に、第3実施形態に係る自己位置算出装置100aの作用を、図13に示すフローチャート、及び図14に示すタイミングチャートを参照して説明する。図13に示すフローチャートは、前述した図7のフローチャートに対して、ステップS131、S132、S133の処理が追加されている点で相違する。それ以外は図7と同様であるので、同一のステップ番号を付している。ステップS11,S12の後、ステップS13の処理において、パターン光32aの輝度が閾値輝度Bth以下であると判断された場合には、ステップS131において、姿勢変化量算出部24は、特徴点移動速度算出部37にて取得されるの特徴点移動速度が予め設定した閾値速度より大きいか否かを判断する。
そして、閾値速度以下である場合には(ステップS131でNO)、ステップS132において、姿勢変化量算出部24は、第1の演算周期で車両10の姿勢変化量を算出する。例えば、図14(b)に示す周期τ2で姿勢変化量を算出する。一方、閾値速度より大きい場合には(ステップS131でYES)、ステップS133において、姿勢変化量算出部24は、第1の演算周期よりも短い第2の演算周期で車両10の姿勢変化量を算出する。例えば、図14(b)に示す周期τ1(τ1<τ2)で姿勢変化量を算出する。その後、ステップS15〜S17の処理を実行する。なお、図14では、一例としてτ1の2倍をτ2とする例を示しているが、本発明はこれに限定されるものではない。また、一例として、閾値速度により特徴点の検出周期を切り替える例を示しているが、特徴点移動速度に応じて特徴点の検出周期を逐次変化させる構成としてもよい。
路面に存在する特徴点をトラッキングするためには、原理的には、特徴点を検出する前後のフレーム間で、車両の移動量が撮像範囲以内であればよい。また、前後フレームでの特徴点の対応付けに間違いが起こらないようにするためには、移動量はなるべく小さい方がよい。しかし、前後フレーム間の時間が短すぎる場合には、路面上での特徴点が殆ど変化しなくなり、移動量の計算が難しくなる。つまり、特徴点をトラッキングして移動量を算出する場合には、前後フレーム間で、特徴点がある程度移動している必要がある。
第3実施形態では、例えば、路面に存在する特徴点が、1周期で0.05〜0.1[m]の範囲となるように、特徴点の検出周期を設定する。従って、パターン光32aを投光する際の最大の周波数を200[Hz]とした場合、本実施形態で特徴点の移動速度[20m/s](≒車速72[Km/h])においては、この最大周波数200[Hz]で制御を行うと目標範囲内の0.1mとなる。これに対し、特徴点の移動速度1[m/s](≒車速3.6[Km/h])では、周波数を20[Hz]とすることで、目標範囲内の0.05mとすることができる。なお、この計算方法によると停車中は路面テクスチャの検出を中止してしまうため、周波数は最低で5[Hz]とする。
このように、第3実施形態に係る自己位置算出装置100aでは、前述した第1実施形態と同様の効果を達成できる。更に、特徴点の移動速度に応じて、姿勢変化量を算出する周期を変更するので、特徴点の移動速度に適した姿勢変化量の算出が可能となり、車両10の移動量の検出をより高精度に行うことができる。
[第3実施形態の第1変形例の説明]
次に、第3実施形態の第1変形例について説明する。装置構成は、図12と同一であるので、説明を省略する。以下、第1変形例に係る自己位置算出装置100aの作用を図15に示すフローチャート、及び図16に示すタイミングチャートを参照して説明する。なお、図5に示すフローチャートは、前述した図10に示したフローチャートに対して、ステップS301〜303を追加しており、それ以外の構成は図10と同一であるので、同一のステップ番号を付している。
初めに、ステップS301において、特徴点移動速度算出部37は、特徴点の移動速度を算出し、この特徴点の移動速度が予め設定した閾値速度よりも大きいか否かを判断する。そして、閾値速度以下の場合には(ステップS301でNO)、ステップS302に処理を進め、閾値速度よりも大きい場合には(ステップS301でYES)、ステップS303に処理を進める。
ステップS302において、姿勢変化量算出部24は、パターン光のオン、オフ周期を第1の切替周期に設定する。具体的には、図16(a)に示すように、時間τ11だけパターン光が投光され、時間τ12の経過後、再度パターン光が投光されるように周期を設定する。従って、図16(b)に示すように、時間τ12の間に特徴点が検出される。
ステップS303において、姿勢変化量算出部24は、パターン光のオン、オフ周期を第2の切替周期に設定する。具体的には、図16(c)に示すように、時間τ13だけパターン光が投光され、時間τ14の経過後、再度パターン光が投光されるように周期を設定する。従って、図16(d)に示すように、時間τ14の間に特徴点が検出される。この際、(τ11+τ12)が第1の切替周期であり、(τ13+τ14)が第2の切替周期である。そして、(τ11+τ12)>(τ13+τ14)である。つまり、第2の切替周期は第1の切替周期よりも短くなるように設定される。
次いで、図15のステップS31において、パターン光制御部27は、投光器11を制御して、第1の切替周期、或いは第2の切替周期で車両周囲の路面31にパターン光を投光する。ステップS32以降の処理は、前述した図10と同一であるので説明を省略する。
このように、第3実施形態の第1変形例に係る自己位置算出装置100aでは、前述した第3実施形態と同様に、特徴点の移動速度に応じて、姿勢変化量を算出する周期を変更するので、特徴点の移動速度に適した姿勢変化量の算出が可能となり、車両10の移動量の検出をより高精度に行うことができる。
[第3実施形態の第2変形例の説明]
次に、第3実施形態の第2変形例について説明する。前述した第3実施形態では、特徴点検出部23で検出される特徴点の移動量に基づき、特徴点移動速度算出部37により特徴点の移動速度を算出する例について説明した。第2変形例では、特徴点の移動速度に代わり、車両に搭載される車速センサの検出信号から車速を取得し、車速に応じて姿勢変化量を算出する周期を変更する。即ち、図17に示すように、車速センサより出力される車速データを取得する車速取得部36を設け、該車速取得部36で取得した車速データを姿勢角算出部24に出力して、姿勢変化量を算出する周期を変更するようにしてもよい。このような構成においても、前述した第3実施形態と同様の効果を達成することができる。
以上、本発明の自己位置算出装置、及び自己位置算出方法を図示の実施形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置き換えることができる。