以下、本発明の一実施形態について図面を参照して説明する。
[ハードウェア構成]
図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と兼用しても良い。
複数の情報処理部には、絞り調整部18と、フレームレート調整部19と、画像取得領域設定部20と、パターン光抽出部21と、姿勢角算出部22と、特徴点検出部23と、姿勢変化量算出部24と、自己位置算出部26と、パターン光制御部27が含まれる。姿勢変化量算出部24には、特徴点検出部23が含まれる。
絞り調整部18は、カメラ12の絞りを調整し、パターン光が投光されているときにはパターン光が投光されていないときより絞りを開くように調整する。例えば、パターン光が投光されているときには絞り値をF2に設定し、パターン光が投光されていないときには絞り値をF5.6に設定する。F値を大きくすることで、カメラの絞りを開くように調整する。
絞りは、レンズを通って撮像素子上に写る像の明るさのことで、絞りを絞るとレンズを通る光が少なくなって、撮像素子上に写る像が暗くなり、ピントが合って見える距離の範囲が広くなる(被写体深度が深い)。逆に、絞りを開くとレンズを通る光が多くなり、撮像素子上に写る像が明るくなるが、ピントが合って見える距離の範囲が狭くなる(被写体深度が浅い)。
本実施形態では、カメラ12は、図3(a)に示すようにほぼ平坦な路面を至近から撮像している。そのため、例えば画像中心でピントを合わせている場合に、絞りを開いて被写体深度が浅くなると、図5(a)に示すように画像は明るくなるが、ピントが合う領域が狭くなって画像の外縁部ではピントが合わなくなる。一方、絞りを絞って被写体深度が深くなると、図5(b)に示すように画像は暗くなるものの広い領域でピントが合うようになって画像全体でピントを合わせることができる。
ここで、特徴点を検出、トラッキングする場合には、特徴点がカメラ12の画像上の何処に現れるか予測できないので、できるだけ広い範囲でピントを合わせておく必要がある。すなわち、絞りを絞る必要がある。しかし、絞りを絞ると、図5(b)に示すように画像は暗くなり、パターン光の微弱な変化を抽出することは困難になる。
これに対して、同期検波によってパターン光を抽出する場合には、パターン光の微弱な変化を検出するために、絞りを開いて明るい画像にしたほうが良い。このとき、パターン光が投光される範囲は、投光器11の車両への搭載位置、姿勢から決定できるので、パターン光が投光されている限定された狭い領域だけにピントを合わせればよい。例えば、図5(a)に示すように画像の中心近傍にパターン光を投光するように設計しておき、画像中心にカメラ12のピントを合わせればよい。
したがって、絞り調整部18は、パターン光が投光されているときには、パターン光が投光されていないときよりもカメラ12の絞りを開くように調整する。あるいは、パターン光が投光されているときには、パターン光が投光されている領域だけにピントが合うように絞りを開く。これにより、パターン光を抽出するときに画像が明るくなって、パターン光の微弱な変化まで抽出することが可能となる。
フレームレート調整部19は、カメラ12のフレームレートを調整し、パターン光が投光されていないときには、パターン光が投光されて同期検波を行っているときよりもカメラ12のフレームレートを低くする。例えば、車速が72km/hの場合では、パターン光が投光されていないときにフレームレートを200fpsに設定し、パターン光が投光されているときにはフレームレートを2400fpsに設定する。
フレームレート調整部19は、パターン光が投光されて同期検波を行っているときには数百〜数千fpsという高いフレームレートに設定している。しかし、特徴点を検出するときにこのような高いフレームレートで撮像すると、画面上で特徴点の移動量が1画素以下、すなわちカメラ12の画像上で特徴点が動かないことになる。これでは移動量が算出できないので、積分して推定した車両の現在位置や姿勢角の誤差要因となる。したがって、特徴点を検出するときには、同期検波を行うときと比べてフレームレートを低くする必要がある。
また、フレームレートを低くすると、露光時間を長くとって(シャッタースピードを遅くして)明るい画像を得ることができる。特に、同期検波でパターン光を抽出するときには、高いフレームレートで撮影を行っており、これと比較すると特徴点を検出するときのフレームレートは十分に低くてよい。
さらに、特徴点を検出するときはカメラ12の絞りを絞るので、画像が暗くなってしまう。そこで、モーションブラーが発生しない範囲で可能な限り露光時間を長く、すなわちフレームレートを低くする。
本実施形態では、モーションブラーが問題とならないようなフレームレートと露光時間の値を、車速毎に予め実験で求めておき、メモリに記録しておく。また、車両が照度計を装備している場合には、周囲の明るさ毎に、モーションブラーが問題とならないフレームレートと露光時間の値を予め実験で求めておき、メモリに記録しておく。これにより、モーションブラーの発生を回避しながらフレームレートを十分に低くすることができ、画像は明るくなるため、カメラ12の絞りを絞ることによって画像が暗くなることを抑えることができる。
画像取得領域設定部20は、カメラ12の画像取得領域を設定しており、通常はカメラ12の最大撮像領域である全画素領域を画像取得領域に設定しているが、パターン光が投光されているときには、予め設定されている所定領域を画像取得領域に設定する。この所定領域は、パターン光が投光されている領域を含む領域であり、全画素領域よりも狭く、パターン光が投光されている領域よりも広い範囲である。特に、パターン光が投光されている領域と同一の領域に設定することが好ましい。
例えば、本実施形態では、図6(a)に示すように、全画素領域61の中心に位置する縦1/3、横1/4の範囲を所定領域63とし、この所定領域63を画像取得領域に設定する。所定領域63は全画素領域61の1/12の領域になるので、この部分の画像データのみをカメラ12から出力すれば、出力される画像データ量は1/12になる。したがって、カメラ12の露光時間が十分短ければ(シャッタースピードが速ければ)、同じデータ転送量でフレームレートを12倍にすることができる。
したがって、画像取得領域設定部20は、特徴点Teを検出するときには、図6(b)に示すように全画素領域61を画像取得領域に設定し、パターン光が投光されているときには図6(a)の所定領域63に画像取得領域を設定する。これにより、フレームレートを高速化できるので、同期検波によるパターン光の抽出を容易に行うことができる。尚、所定領域63は、全画素領域の1/4や1/9等のその他の大きさに設定されていてもよい。
パターン光制御部27は、投光器11によるパターン光32aの投光を制御する。例えば、車両10のイグニションスイッチがオン状態となり、自己位置算出装置100が起動すると同時に、パターン光制御部27は、周期的に輝度が変化するパターン光32aの投光を開始する。その後、パターン光制御部27は、自己位置算出装置が停止するまで、パターン光32aを連続して投光する。或いは、必要に応じてパターン光32aを投光してもよい。本実施形態では、輝度変化の一例として、投光パターンの輝度が所定周波数の正弦波状に変化するように、投光器11に供給する電力を制御する。
パターン光抽出部21は、カメラ12により取得された画像をメモリから読み込み、更に、前述した所定周波数にて同期検波処理を実施することにより、画像に含まれるパターン光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で輝度変調された投光パターンが投光される。そして、パターン光抽出部21は、カメラ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」に設定し、この時間帯において特徴点を検出する。
更に、特徴点検出部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の例を示す。更に、各特徴点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の「距離及び姿勢角の変化量」、及び路面上での「車両の移動量」の双方を含んでいる。以下、「距離及び姿勢角の変化量」及び「車両の移動量」の算出方法について説明する。
距離及び姿勢角の変化量は、例えば、以下のようにして求めることができる。図8(a)は、時刻tに取得された第1フレームの画像38の一例を示す。図7及び図8(a)に示すように、画像38において、例えば3つの特徴点Te1、Te2、Te3の相対位置(xi,yi,zi)がそれぞれ算出されている場合を考える。この場合、特徴点Te1、Te2、Te3によって特定される平面G(図8(a)参照)を路面と見なすことができる。よって、姿勢変化量算出部24は、各特徴点の相対位置(xi,yi,zi)から、路面(平面G)に対するカメラ12の距離及び姿勢角(法線ベクトル)を求めることができる。更に、姿勢変化量算出部24は、既知のカメラモデルによって、各特徴点Te1、Te2、Te3の間の距離(l1,l2,l3)及び夫々の特徴点Te1、Te2、Te3を結ぶ直線が成す角度を求めることができる。図7のカメラ12は、第1フレーム(時刻t)におけるカメラの位置を示す。
なお、カメラ12に対する特徴点の相対位置を示す3次元座標(xi,yi,zi)として、カメラ12の撮像方向をZ軸に設定し、撮像方向を法線とし且つカメラ12を含む平面内に、互いに直交するX軸及びY軸を設定する。一方、画像38上の座標として、水平方向及び垂直方向をそれぞれV軸及びU軸に設定する。
図8(b)は、時刻tから時間Δtだけ経過した時刻(t+Δt)に取得された第2フレームの画像38’を示す。図7のカメラ12’は、第2フレームの画像38’を撮像したときのカメラ12の位置を示す。図7及び図8(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(図7参照)を算出でき、ひいては車両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の演算負荷を軽減し、且つ演算速度を向上させることもできる。
[情報処理サイクル]
次に、カメラ12により取得された画像38(図7参照)から車両10の移動量を推定する自己位置算出方法の一例として、ECU13により繰り返し実行される情報処理サイクルを、図9に示すフローチャート、図10に示すタイミングチャートを参照して説明する。
図9に示す情報処理サイクルは、車両10のイグニションスイッチがオン状態となり、自己位置算出装置100が起動すると同時に開始され、該自己位置算出装置100が停止するまで、繰り返し実行される。
初めに、図9のステップS11において、ECU13は、今回の情報処理サイクルが特徴点を検出、トラッキングするサイクルであるか否かを判定する。例えば、図10のタイミングチャートにおいて、時刻t1より前で特徴点検出フラグが「1」の場合には特徴点を検出するサイクルであると判定して(ステップS11でYES)ステップS12に処理を進める。一方、時刻t1を過ぎて特徴点検出フラグが「0」の場合には特徴点を検出するサイクルではないと判定して(ステップS11でNO)ステップS15に処理を進める。
ステップS12において、ECU13は、特徴点を検出するときの設定となるようにカメラ12を調整する。まず、絞り調整部18は、カメラ12の絞りを絞って、例えば絞り値をF5.6に設定する。また、フレームレート調整部19は、カメラ12のフレームレートをパターン光が投光されているときよりも低い200fpsに設定する。さらに、画像取得領域設定部20は、カメラ12の画像取得領域を図6(b)に示すように最大の撮像領域となる全画素領域61に設定する。
ステップS13において、カメラ12は、ステップS12で調整された設定に応じて路面31を撮像して画像を取得する。
ステップS14において、特徴点検出部23は、パターン光が投光されていない時間帯に路面31に存在する特徴点を検出する。この際、特徴点Teを検出する領域は、図6(b)に示すように全画素領域61となる。更に、姿勢変化量算出部24は、特徴点検出部23で検出された特徴点の画像上の位置に基づき、カメラ12に対する特徴点の変化量を算出する。
また、ステップS14では、特徴点検出部23が、画像38から特徴点(例えば、アスファルト上に存在する凹凸部位)を検出すると、姿勢変化量算出部24が、前回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点を抽出し、特徴点の画像上の位置(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)と、前回の情報処理サイクルのステップS14において算出された特徴点の相対位置(Xi,Yi,Zi)をメモリから読み込む。姿勢変化量算出部24は、前回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点の相対位置(Xi,Yi,Zi)及び画像上の位置(Ui、Vi)を用いて、距離及び姿勢角の変化量を算出する。姿勢変化量算出部24は、前回の情報処理サイクルで求められた距離及び姿勢角に、上記した距離及び姿勢角の変化量を加算することにより、距離及び姿勢角を更新する。そして、更新後の距離及び姿勢角をメモリに記憶する。つまり、前回のサイクルのステップS19(後述)の処理で設定された距離及び姿勢角に対して、今回の情報処理サイクル毎の距離及び姿勢角の変化量を積分演算することにより、距離及び姿勢角を更新する処理を実行する。その後、ステップS19に処理を進める。
一方、ステップS15において、ECU13は、パターン光を抽出するときの設定となるようにカメラ12を調整する。まず、絞り調整部18は、図10において時刻t1になると、カメラ12の絞りを開いて、例えば絞り値をF2に設定する。また、フレームレート調整部19は、カメラ12のフレームレートをパターン光が投光されていないときの12倍となる2400fpsに設定する。さらに、画像取得領域設定部20は、カメラ12の画像取得領域を図6(a)に示すように全画素領域61の1/12となる所定領域63に設定する。このように所定領域63を全画素領域61の1/12の領域にしたので、出力される画像データ量が1/12になり、これによって同じデータ転送量でフレームレートを12倍にすることができる。
ステップS16において、パターン光制御部27は、投光器11を制御して、車両周囲の路面31にパターン光を投光する。この際、パターン光制御部27は、パターン光の輝度が所定周期の正弦波状に変化するように投光電力を制御する。例えば、正弦波の周波数を200[Hz]とする。その結果、時間経過に伴い輝度が正弦波状に変化するパターン光が路面31に投光される。
ステップS17において、カメラ12は、ステップS15で調整された設定に応じてパターン光が投光されている領域を含む路面31を撮像して画像を取得する。
ステップS18において、パターン光抽出部21は、上述した同期検波処理によりパターン光32aを抽出する。そして、パターン光32aの位置を示すデータとして、スポット光Spの画像上の座標(Uj、Vj)を算出し、これをメモリに記憶する。更に、姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から、距離及び姿勢角を算出し、メモリに記憶する。距離及び姿勢角の算出方法は、前述した通りである。なお、以下では、姿勢角算出部22によりパターン光を用いて路面31に対する車両10の距離及び姿勢角を求め、これを積分演算の起点となる距離及び姿勢角として再設定する処理を「距離及び姿勢角をリセットする」と表現する。この後、ステップS19に処理を進める。
ステップS19において、ECU13は、積分演算の起点を選択する。この処理では、最初の情報処理サイクルにおいては、パターン光32aより算出される距離及び姿勢角を、起点に選択して設定する。更に、予め設定した条件が成立した場合、例えば、特徴点検出部23における特徴点の検出状態が低下し、特徴点検出フラグが「1」となるタイミングで複数の特徴点を検出できなくなった場合には、移動量算出の起点をパターン光により算出する距離及び姿勢角、即ちステップS18の処理で算出された距離及び姿勢角にリセットする。他方、特徴点検出部23にて特徴点が正常に検出されている場合には、該特徴点の位置に基づいて距離及び姿勢角を更新する。
つまり、特徴点検出部23により特徴点が正常に検出されない場合には、カメラ12の距離及び姿勢角を高精度に設定することができず、この精度の低い距離及び姿勢角を採用して車両の移動量を算出すると、車両の移動量を高精度に検出できなくなる。従って、このような場合には、移動量算出の起点をパターン光の位置から求めた距離及び姿勢角にリセットする。こうすることで、距離及び姿勢角に大幅な誤差が生じることを防止する。
次いで、ステップS20において、自己位置算出部26は、ステップS14或いはS18の処理で求められた距離及び姿勢角と、積分演算の起点、及び、特徴点の画像上の位置(Ui、Vi)の変化量とから、路面31に対するカメラ12の移動量(ΔL)、即ち車両10の移動量を算出する。
こうして、本実施形態に係る自己位置算出装置では、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の位置を算出することができる。
[実施形態の効果]
以上、詳細に説明したように、本実施形態に係る自己位置算出装置100では、パターン光が投光されているときには、パターン光が投光されていないときよりカメラ12の絞りを開いて画像を撮像する。これにより、パターン光が投光されているときに明るい画像を撮像することができるので、パターン光の微弱な変化まで検出することができる。したがって、同期検波によるパターン光の抽出と特徴点の検出との間にあるトレードオフの関係を低減して高精度且つロバストに自己位置を算出することができる。
具体的に説明すると、同期検波によるパターン光の抽出では、カメラ12の絞りを開いてフレームレートを高速にする必要があり、必要となる画像領域はカメラ画像の一部である。これに対して、特徴点の検出では、カメラ12の絞りを絞ってフレームレートは低速でよく、必要な画像領域はカメラ画像の全体である。このように、同期検波によるパターン光の抽出と特徴点の検出との間にはトレードオフの関係がある。
しかしながら、上述したように本実施形態に係る自己位置算出装置100では、パターン光が投光されているときにカメラ12の絞りを開いて明るい画像を撮像するので、パターン光の微弱な変化まで検出することができる。これにより、上述したトレードオフの関係を低減することができる。
また、本実施形態に係る自己位置算出装置100では、パターン光が投光されていないときには、パターン光が投光されているときよりカメラ12のフレームレートを低くする。これにより、カメラ12の絞りを絞っても露光時間を長くして明るい画像を取得することができ、特徴点の検出状態を向上させて上述したトレードオフの関係を低減することができる。
さらに、本実施形態に係る自己位置算出装置100では、パターン光が投光されているときには、パターン光が投光されている領域を含む所定領域をカメラ12の画像取得領域に設定する。これにより、出力される画像データ量を低減できるので、その分だけフレームレートを高めることができ、上述したトレードオフの関係を低減することができる。
また、本実施形態に係る自己位置算出装置100では、パターン光が投光されていないときに特徴点を検出して車両の姿勢変化量を算出する。これにより、特徴点の検出に適した設定で撮像された画像から特徴点を検出できるので、特徴点の検出状態が向上して上述したトレードオフの関係を低減することができる。
さらに、本実施形態に係る自己位置算出装置100では、上述したすべての構成を備えていることにより、トレードオフの関係にある同期検波によるパターン光の抽出と特徴点の検出とを両立させて高精度且つロバストに自己位置を算出することができる。
以上、本発明の自己位置算出装置、及び自己位置算出方法を図示の実施形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置き換えることができる。