以下、本発明の実施形態について、図面を参照して説明する。
[第1実施形態の説明]
図1は、本発明の実施形態に係る自己位置算出装置の構成を示すブロック図である。図1に示すように、自己位置算出装置100は、投光器11と、カメラ12(撮像部)と、エンジンコントロールユニット(ECU)13と、を備える。投光器11は、車両に搭載され、車両周囲の路面にパターン光を投光する。パターン光の詳細については後述する。カメラ12は、車両に搭載され、パターン光が投光された領域を含む車両周囲の路面を撮像して画像を取得する。ECU13は、投光器11の作動を制御し、且つカメラ12により取得された画像から車両の移動量を推定する一連の情報処理サイクルを実行する。
カメラ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に示すように、格子像、或いは行列状に配列された複数のスポット光からなるパターン光(32b、32a)を生成する。図3及び図4に示す例では、5×7のスポット光からなるパターン光32aを生成している。
図3(a)は、路面31にパターン光32aを照射し、この照射領域をカメラ12で撮像する様子を示している。また、図3(b)は、路面31にパターン光32aを照射し、この照射領域とは異なる他の領域33をカメラ12で撮像して特徴点を検出し、該特徴点の時間変化からカメラ12の移動方向34を求める様子を示している。
図1に戻り、ECU13は、CPU、メモリ、及び入出力部を備えるマイクロコントローラからなり、予めインストールされたコンピュータプログラムを実行することにより、自己位置算出装置100が備える複数の情報処理部を構成する。ECU13は、カメラ12により取得された画像から車両10の移動量を推定する一連の情報処理サイクルを、画像(フレーム)毎に繰り返し実行する。ECU13は、車両10に関連する他の制御に用いるECUと兼用してもよい。
複数の情報処理部には、パターン光抽出部21と、姿勢角算出部22と、特徴点検出部23と、姿勢変化量算出部24と、自己位置算出部26と、パターン光制御部27、及び勾配変化算出部36が含まれる。姿勢変化量算出部24には、特徴点検出部23が含まれる。
パターン光制御部27は、投光器11によるパターン光32aの投光を制御する。例えば、車両10のイグニションスイッチがオン状態となり、当該自己位置算出装置100が起動すると同時に、パターン光制御部27は、パターン光32aの投光を開始する。その後、パターン光制御部27は、自己位置算出装置100が停止するまで、パターン光32aを連続して投光する。或いは、所定の時間間隔をおいて、投光のオン、オフを繰り返してもよい。或いは、勾配変化算出部36で検出される路面勾配の変化率が大きくなった場合に限って、一時的にパターン光32aを投光してもよい。
パターン光抽出部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の距離及び姿勢角を算出することにより、路面31と車両10との間の距離、及び路面31に対する車両10の姿勢角を求めることができる。以下では、路面31に対するカメラ12の距離及び姿勢角を、「距離及び姿勢角」と略す。姿勢角算出部22により算出された距離及び姿勢角は、メモリに記憶される。
具体的に説明すると、カメラ12及び投光器11は車両10にそれぞれ固定されているので、パターン光32aの照射方向と、カメラ12と投光器11との距離(図3の基線長Lb)は既知である。そこで、姿勢角算出部22は、三角測量の原理を用いて、各スポット光の画像上の座標(Uj,Vj)から各スポット光が照射された路面31上の位置を、カメラ12に対する相対位置を3次元座標(Xj,Yj,Zj)として求めることができる。
なお、カメラ12に対する各スポット光の相対位置(Xj,Yj,Zj)は同一平面上に存在しない場合が多い。なぜなら、路面31に表出するアスファルトの凹凸に応じて各スポット光の相対位置が変化するからである。そこで、最小二乗法を用いて、各スポット光との距離誤差の二乗和が最小となるような平面式を求めてもよい。こうして算出される距離及び姿勢角のデータは、図1に示す自己位置算出部26にて用いられることになる。
特徴点検出部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内のメモリに記憶される。図6(a)及び図6(b)は、カメラ12により取得された画像から検出された特徴点Teの例を示す。各特徴点の画像上の位置(Ui,Vi)は、メモリに記憶される。更に、各特徴点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(図1参照)にて算出された距離及び姿勢角(パターン光を用いて算出された距離及び姿勢角)が起点として設定された場合について説明する。この場合には、この起点(距離及び姿勢角)に対して、自己位置算出部26は、姿勢角算出部22で算出された距離及び姿勢角に対して、姿勢変化量算出部24で算出された各フレーム毎の距離及び姿勢角の変化量を逐次加算して(積分演算して)、距離及び姿勢角を最新な数値に更新する。また、姿勢角算出部22にて距離及び姿勢角が算出された際の車両位置を起点(車両の初期位置)とし、この初期位置からの車両10の移動量を逐次加算して(積分演算して)、車両10の自己位置を算出する。例えば、地図上の位置と照合された起点(車両の初期位置)を設定することで、地図上の車両の現在位置を逐次算出することができる。
従って、姿勢変化量算出部24は、時間Δtの間でのカメラ12の移動量(ΔL)を求めることにより、車両10の自己位置を算出することができる。更には、距離及び姿勢角の変化量も同時に算出することができるので、姿勢変化量算出部24は、車両10の距離及び姿勢角の変化量を考慮して、6自由度(前後、左右、上下、ヨー、ピッチ、ロール)の移動量(ΔL)を精度よく算出することができる。即ち、車両10の旋回や加減速によるロール運動或いはピッチ運動によって距離や姿勢角が変化しても、移動量(ΔL)の推定誤差を抑制することができる。
なお、実施形態では、距離及び姿勢角の変化量を算出し、距離及び姿勢角を更新することにより、カメラ12の移動量(ΔL)を算出した。しかし、路面31に対するカメラ12の姿勢角だけを変化量算出及び更新の対象としても構わない。この場合、路面31とカメラ12との距離は一定と仮定すればよい。これにより、姿勢角の変化量を考慮して、移動量(ΔL)の推定誤差を抑制しつつ、ECU13の演算負荷を軽減し、且つ演算速度を向上させることもできる。
また、図1に示す勾配変化算出部36は、車両10が走行する路面の勾配データを取得し、この勾配データから路面勾配の変化率を算出する。ここで、路面の勾配データは、一例としてナビゲーションシステムに登録されている路面の勾配データ、及びGPSにより取得される車両10の現在位置データに基づいて取得することができる。該勾配変化算出部36は、取得した勾配データに対して微分演算することにより路面の勾配変化率R1を演算する。そして、勾配変化率R1の絶対値が予め設定した勾配変化率の所定の閾値Rthを上回った場合に、路面が急勾配であると判断する。急勾配であると判断した場合には、姿勢角算出部22は、パターン光抽出部21より抽出されるパターン光に基づいて、位置及び姿勢角を算出する処理を行う。
本実施形態では、路面の勾配変化に起因して生じる車両の移動量算出の誤差を5%以下に抑えるために、勾配変化率の所定の閾値Rthを、0.05[rad/sec]に設定する。即ち、車両が1秒間走行する間に路面の勾配が0.05[rad]より大きく変化した場合に、勾配変化率R1が勾配変化率の所定の閾値Rthに達したものと判断する。勾配変化率は、GPSデータから取得することができる。また、車載したジャイロセンサの検出値から求めることも可能である。
なお、路面の勾配変化を勾配変化率で判断しているが、これに限定されるものではなく、例えば、一定処理時間内の勾配変化の絶対値でも構わない。
[第1実施形態の作用]
次に、カメラ12により取得された画像38(図5参照)から車両10の自己位置、即ち、「車両の距離及び姿勢角」、及び「車両の移動量」を算出する算出方法の一例として、ECU13により繰り返し実行される情報処理サイクルを、図8及び図9に示すフローチャートを参照して説明する。図8に示す情報処理サイクルは、車両10のイグニションスイッチがオン状態となり、自己位置算出装置100が起動すると同時に開始され、該自己位置算出装置100が停止するまで、繰り返し実行される。
初めに、図8のステップS01において、パターン光制御部27は、投光器11を制御して、車両周囲の路面31にパターン光32aを投光する。図8では、パターン光32aを連続して投光する例を説明する。なお、前述したように、必要に応じてパターン光32aを投光するようにしてもよい。
ステップS03に進み、ECU13は、カメラ12を制御して、パターン光32aが投光された領域を含む車両周囲の路面31を撮像して画像38を取得する。ECU13は、カメラ12により取得された画像データを、メモリに記憶する。
なお、ECU13はカメラ12の絞りを自動制御できる。前回の情報処理サイクルで取得した画像38の平均輝度から、輝度値の最大値と最小値の中間値になるようにカメラ12の絞りをフィードバック制御してもよい。また、パターン光32aが投光されている領域は輝度値が高いため、パターン光32aを抽出した部分を除いた領域から、平均輝度値を求めてもよい。
ステップS05に進み、パターン光抽出部21は、カメラ12により取得された画像38をメモリから読み込み、図4(c)に示したように、画像38からパターン光32aの位置を抽出する。パターン光抽出部21は、パターン光32aの位置を示すデータとして算出されたスポット光Spの画像上の座標(Uj,Vj)をメモリに記憶する。更に、ステップS05では、姿勢角算出部22は、パターン光32aの位置を示すデータをメモリから読み込み、パターン光32aの位置から、距離及び姿勢角を算出し、メモリに記憶する。距離及び姿勢角の算出方法は、前述した通りである。なお、姿勢角算出部22で算出した距離及び姿勢角は、後述するように、情報処理サイクルが初回の場合、及び後述する条件となった場合に、積分演算を実行する際の新たな起点として設定する。
ステップS07に進み、ECU13は、画像38から特徴点(例えば、アスファルト上に存在する凹凸部位)を検出し、前回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点を抽出し、特徴点の画像上の位置(Ui,Vi)から距離及び姿勢角の変化量を算出する。更に、車両10の移動量を算出する。
具体的には、まず特徴点検出部23は、カメラ12により取得された画像38をメモリから読み込み、画像38から路面31上の特徴点を検出し、各特徴点の画像上の位置(Ui,Vi)をメモリに記憶する。
姿勢変化量算出部24は、各特徴点の画像上の位置(Ui,Vi)をメモリから読み込み、距離及び姿勢角と、特徴点の画像上の位置(Ui,Vi)とから、カメラ12に対する特徴点の相対位置(xi,yi,zi)を算出する。なお、姿勢変化量算出部24は、前回の情報処理サイクルのステップS09(後述)において選択された距離及び姿勢角を用いる。姿勢変化量算出部24は、カメラ12に対する特徴点の相対位置(xi,yi,zi)をメモリに記憶する。
そして、姿勢変化量算出部24は、特徴点の画像上の位置(Ui,Vi)と、前回の情報処理サイクルのステップS07において算出された特徴点の相対位置(xi,yi,zi)をメモリから読み込む。姿勢変化量算出部24は、今回の情報処理サイクルと今回の情報処理サイクルの間で対応関係が取れる特徴点の相対位置(xi,yi,zi)及び画像上の位置(Ui,Vi)を用いて、距離及び姿勢角の変化量を算出する。更に、前回の特徴点の相対位置(xi,yi,zi)と今回の特徴点の相対位置(xi,yi,zi)から、車両10の移動量を算出する。そして、この処理で算出した「距離及び姿勢角の変化量」及び「車両の移動量」は、ステップS11の処理で用いられる。
ステップS09に進み、ECU13は、車両10が走行する路面勾配の変化率に応じて、距離及び姿勢角を積分演算にて算出する際の起点を設定する。詳細な処理手順については、図9に示すフローチャートを参照して後述する。
ステップS11に進み、自己位置算出部26は、ステップS09の処理で設定された積分演算の起点、及びステップS07の処理で算出された車両10の移動量から、車両10の自己位置を算出する。
こうして、本実施形態に係る自己位置算出装置100は、上記した一連の情報処理サイクルを繰り返し実行して車両10の移動量を積算することにより、車両10の自己位置を算出することができる。
次に、図9のフローチャートを参照して、図8のステップS09の詳細な手順を説明する。ステップS901において、ECU13は、今回の情報処理サイクルが初回であるか否かを判断する。そして、初回である場合、即ち、前回の情報処理サイクルのデータが無い場合にはステップS909に処理を進め、初回でない場合にはステップS903に処理を進める。
ステップS903において、勾配変化算出部36は、車両10に搭載されるナビゲーションシステムが有するGPSの情報に基づき、路面の勾配変化率R1を検出する。この処理では、GPSより得られる路面勾配のデータを微分演算する。
ステップS905において、勾配変化算出部36は、路面の勾配変化率R1の絶対値が予め設定した勾配変化率の所定の閾値Rthより大きいか否かを判断する。そして、勾配変化率の所定の閾値Rthより大きい場合には(ステップS905でYES)、ステップS907に処理を進める。一方、勾配変化率の所定の閾値Rth以下である場合には(ステップS905でNO)、ステップS913に処理を進める。ここで、本実施形態では、路面変化の影響による車両10の移動量算出の誤差を5%以下に抑えるために、路面勾配の変化率が0.05[rad/sec]となった時点で特徴点の初期位置を設定する。即ち、上記の勾配変化率の所定の閾値を0.05[rad/sec]とする。
ステップS907において、姿勢角算出部22は、パターン光抽出部21で抽出されたパターン光32aに基づき、距離及び姿勢角が算出されているか否かを判断する。具体的な例として、投光器11より照射される35点のスポット光のうち、3点以上のスポット光が検出されている場合に距離及び姿勢角の算出が可能なので、3点以上のスポット光が検出されているか否かを判断する。そして、距離及び姿勢角が算出されている場合には(ステップS907でYES)、ステップS909に処理を進める。一方、距離及び姿勢角が算出されていない場合には(ステップS907でNO)、ステップS911に処理を進める。
ステップS909において、ECU13は、車両10の現在位置を起点とし、更に、同じ情報処理サイクルのステップS05(図8参照)で算出された距離及び姿勢角、即ち、パターン光の位置から算出された距離及び姿勢角を積分演算の起点として設定する。従って、距離及び姿勢角は、パターン光32aから算出された距離及び姿勢角に設定される。この距離及び姿勢角を起点として新たな積分演算が開始される。また、車両10の移動量算出の起点が新たに設定される。つまり、この位置を起点として新たに車両10の移動量の積分演算を開始する。
ステップS911において、ECU13は、車両10の現在位置を起点とし、更に、前回の情報処理サイクルで採用した距離及び姿勢角を積分演算の起点として設定する。即ち、姿勢角算出部22により、パターン光から車両の姿勢角を算出できない場合には、直前に算出された姿勢角を用いて、積分演算の起点とする。また、直前に算出された姿勢角の代わりに、予め設定した姿勢角の初期値を用いるようにしてもよい。この距離及び姿勢角を起点として新たな積分演算が開始される。また、車両10の移動量算出の起点が新たに設定される。つまり、この位置を起点として新たに車両10の移動量の積分演算を開始する。その後、図8のステップS11に処理を進める。
つまり、路面の勾配変化率R1が勾配変化率の所定の閾値Rthより大きい場合(ステップS905でYESの場合)には、車両10の距離及び姿勢角が大きく変動し、これに伴って、カメラ12の距離及び姿勢角が大きく変動するので、特徴点の位置座標を正確に求められなくなる可能性が高い。従って、このような場合には姿勢変化量算出部24は、距離及び姿勢角の変化量を算出せず、パターン光から算出した距離及び姿勢角(ステップS909)、或いは、前回の情報処理サイクルで採用した距離及び姿勢角(ステップS911)を起点として設定する。即ち、車両10の初期位置、距離及び姿勢角を、その時点の位置、距離及び姿勢角に設定して、距離及び姿勢角の変化量の加算を開始する。こうすることにより、距離及び姿勢角に大きな誤差が生じることを防止し、車両10の移動量の算出の精度が低下することを防止する。
一方、図9のステップS913において、ECU13は、現在の設定されている起点を維持する。路面の勾配変化率R1が勾配変化率の所定の閾値Rth以下である場合(ステップS905でNOの場合)には、現在の起点を維持しても車両10の移動量の算出に大きな誤差は発生しないものと判断されるので、起点を維持する。その後、図8のステップS11に処理を進める。
上記の処理をまとめると、以下の通りである。カメラ12を用いて路面に存在する特徴点を含む画像を撮影し、この特徴点の時間的な変化から車両10の移動量(6自由度の移動量)を算出する場合には、カメラ12と路面との位置関係が一定であることが条件となる。しかし、実際にはカメラ12は車両10に搭載されるので、該車両10の走行状態、或いは路面環境に応じて路面との相対的な位置が時々刻々と変化する。従って、カメラ12と路面との間の位置関係、即ち、距離及び姿勢角を時間経過に伴って更新する必要がある。
ここで、距離及び姿勢角の測定方法として、投光器11より投光したパターン光32aを用いる方法(図8のS05の処理)がある。従って、各情報処理サイクル毎に常にパターン光32aを用いて距離及び姿勢角を算出し、更に、特徴点の時間的な変化を検出すれば、車両10の移動量を算出でき、ひいては車両10の自己位置を算出できる。しかし、路面がコンクリートの場合等、路面が平坦でパターン光32aをよく反射する状況下であればこの方法は有効であるが、実際の路面は凹凸が多く存在するアスファルトの路面であることが多い。この場合には、パターン光32aを用いるよりも、特徴点の時間的な変化に基づいて、距離及び姿勢角の変化量を算出し、起点として設定されている距離及び姿勢角に対して、変化量を逐次加算する処理(積分演算)を実行する方が距離及び姿勢角を高精度に求めることができる。
そこで、本実施形態では、初回にパターン光32aを用いた距離及び姿勢角の算出を行ってこれを起点とし、それ以後は、特徴点の時間的な変化に基づく距離及び姿勢角の変化量を算出して、この算出結果を逐次加算することにより、距離及び姿勢角を最新なものに更新する。更に、路面の路面勾配の変化率R1が大きくなった場合には、特徴点の検出精度が低下するので、特徴点に基づいて算出される距離及び姿勢角の変化量の精度が低下する。従って、このような条件下、即ち、路面勾配の変化率R1の絶対値が勾配変化率の所定の閾値Rthを上回った場合にはパターン光32aを用いた距離及び姿勢角を用いて車両10の移動量を算出することにより、車両10の自己位置の算出精度を向上させるようにしている。
次に、図10に示すタイミングチャートを参照して、路面の勾配変化と、新たな起点を設定するタイミングとの関係について説明する。図10(a)は、距離及び姿勢角の起点を設定するタイミングを示す図、(b)は路面の勾配を示す図、(c)は路面の勾配変化率R1を示す図である。また、横軸は時間を示しており、一つの目盛りが1回の情報処理サイクルを示している。
いま、図10(b)に示すように、時刻t1にて平坦な道路から上り坂に変化し、その後、時刻t6にて上り坂から平坦な道路に変化する場合を想定する。時刻t1にて、路面の勾配が徐々に大きくなるので、図10(c)に示すように勾配変化率R1は上昇する。その後、時刻t2にてピークとなり、勾配変化率R1は下降し時刻t3にてほぼ0となる。つまり、一定勾配の上り坂となる。そして、時刻t4にて勾配変化率R1が負の方向に上昇し、時刻t5にてピークとなり、時刻t6にて勾配変化率R1はほぼ0となる。つまり、平坦な道路になる。
また、勾配変化率R1に対して、勾配変化率の所定の閾値Rthが設定されており、勾配変化率R1の絶対値が勾配変化率の所定の閾値Rthを上回った場合、即ち、「R1>Rth」または「R1<−Rth」となった場合に、距離及び姿勢角の起点を設定する処理を行う。つまり、図10(a)に示すT1,T2の時間帯における各情報処理サイクルにおいては、パターン光による距離及び姿勢角を算出し、これを起点として設定する。
このようにして、本願発明の第1実施形態に係る自己位置算出装置100では、以下の作用効果が得られる。即ち、坂道を走行することにより、路面の勾配変化率R1の絶対値が大きくなり、これに起因して車両10の距離及び姿勢角が大きく変化する場合には、特徴点の時間変化に基づく距離及び姿勢角の積分演算を停止する。そして、パターン光を用いた距離及び姿勢角が求められている場合には、この距離及び姿勢角を新たな起点として設定する。即ち、自己位置算出部26は、路面勾配の変化率が勾配変化率の所定の閾値よりも大きい場合、そのときの車両10の現在位置と距離及び姿勢角を、車両10の初期位置と距離及び姿勢角に設定し、距離及び姿勢角の変化量の加算を開始する。また、パターン光を用いた距離及び姿勢角が求められていない場合には、前回のサイクルで更新された距離及び姿勢角を新たな起点として設定する。その結果、距離及び姿勢角の算出結果に大きな誤差が生じることを防止できる。このため、車両10の移動距離の推定精度を著しく向上させることができる。
また、ナビゲーションシステム等から得られる地図情報に登録されている路面の勾配データにより、路面勾配を取得するので、路面勾配の変化を高精度、且つ迅速に算出することができ、車両10の移動量測定を高精度に行うことができる。
第1実施形態では、勾配変化算出部36で使用する路面勾配検出の一例として、GPS情報を用いる場合について説明したが、本発明はこれに限定されるものではなく、車載したストロークセンサ或いはジャイロセンサの検出結果に基づいて路面高さを算出し、この路面高さの変化量から路面勾配の変化を求めることも可能である。
この場合には、車両挙動変化の影響による車両10の移動量算出の誤差を5%以下に抑えるために、車両10が静止している状態と比較して、路面に対する距離が5%以上変化したときに、特徴点の初期位置を設定すればよい。例えば、路面からカメラ12までの高さが1.0mである場合には、0.05mが閾値となる。なお、路面高さの変化は、ストロークセンサ等により求めることができる。そして、ジャイロセンサやストロークセンサを用いる場合には、GPS情報を取得することなく路面勾配を検出できるので、GPS情報に含まれない路面勾配を検出でき、より高精度な車両10の移動量測定が可能となる。
また、路面に投光したパターン光に含まれる行列に各スポット光を結ぶ線分の傾斜角度を用いて路面の勾配を測定することも可能である。パターン光を用いる方法として、図7に示す如くのパターン光が得られた場合には、行方向に並ぶスポット光を結ぶ線分(Y軸方向)と、列方向に並ぶスポット光を結ぶ線分(Q1の方向)の傾き(X軸方向を0degとしたときの傾斜角度)を算出し、この傾きが平坦な路面を走行している場合と対比して所定角度(例えば、5deg)より大きくなった場合に、路面の勾配が大きくなったものと判断することができる。つまり、路面勾配が大きくなるほど、線分Q1のX軸に対する傾きが大きくなるので、この線分Q1の傾きから路面勾配を推定できる。そして、単位時間当たりの路面勾配の変化を算出することにより、勾配変化率を求めることが可能となる。
このように、行方向に並ぶスポット光を結ぶ線分に対する、列方向に並ぶスポット光を結ぶ線分の傾斜角度を算出し、この傾斜角度に基づいて路面勾配を取得することにより、より高精度な路面勾配の変化率の算出が可能となる。
更には、スポット光の間隔q1が変化した場合、例えば、平坦な路面を走行している場合と対比して5%以上変化した場合に、路面の勾配が大きくなったものと判断することができる。即ち、路面勾配が大きくなると、間隔q1の変化量が大きくなるのでこの間隔q1から路面勾配を推定できる。
また、第1実施形態では、姿勢角算出部22による姿勢角の算出ができない場合には、直前に算出された姿勢角を用いるので、大きな誤差を含むことなく車両の位置を算出することができる。更に、予め設定した姿勢角の初期値(姿勢角初期値)を用いても同様に、大きな誤差を含むことなく車両の位置を算出することが可能となる。
[第2実施形態の説明]
次に、本発明に係る自己位置算出装置100の第2実施形態について説明する。前述した第1実施形態では、情報処理サイクルの初回にパターン光を用いた距離及び姿勢角の算出を行い、その後、特徴点を用いた距離及び姿勢角の更新処理を行い、更に、路面の勾配変化率R1が大きくなった場合(勾配変化率の所定の閾値Rthを超えた場合)に、パターン光を用いた距離及び姿勢角の起点を設定することについて説明した。
これに対して、第2実施形態では、予め設定した周期(第1の周期)で周期的にパターン光を用いた距離及び姿勢角を算出し、この距離及び姿勢角に起点を設定する点で第1実施形態と相違する。具体的には、例えば、情報処理サイクルの10回毎にパターン光を用いた距離及び姿勢角を算出し、距離及び姿勢角の起点を設定する処理を行う。装置構成は、第1実施形態に示した図1と同様であるので、説明を省略する。
以下、第2実施形態に係る自己位置算出装置100の作用を図11に示すタイミングチャートを参照して説明する。図11(a)は、パターン光を用いて距離及び姿勢角を算出するタイミング(距離及び姿勢角をリセットするタイミング)を示す図、(b)は周期的に距離及び姿勢角を算出するタイミングを示す図、(c)は路面の勾配変化率R1を示す図である。また、横軸は時間を示しており、一つの目盛りが1回の情報処理サイクルを示している。
図11(b)に示すように、路面の勾配変化率R1が低い場合(図11(c)のように勾配が変化しない場合)には、一定の周期でパターン光を用いた距離及び姿勢角の算出を行う。即ち、図1に示した姿勢変化量算出部24にて演算される距離及び姿勢角は、一定の周期でリセットされ、パターン光を用いた距離及び姿勢角により起点が設定される。
また、図11(c)に示すように、時刻t11にて平坦な道路から上り坂に変化する場合には、時刻t11にて路面の勾配が徐々に大きくなるので、勾配変化率R1は上昇する。その後、勾配変化率R1がピークとなり、勾配変化率R1は下降し時刻t12にてほぼ0となる。つまり、一定勾配の上り坂となる。そして、時刻t13にて勾配変化率R1が負の方向に上昇し、時刻t14にて勾配変化率R1はほぼ0となる。つまり、平坦な道路になる。
そして、勾配変化率R1に対して、勾配変化率の所定の閾値Rthが設定されており、勾配変化率R1の絶対値が勾配変化率の所定の閾値Rthを上回った場合、即ち、「R1>Rth」または「R1<−Rth」となった場合に、距離及び姿勢角の起点を設定する処理を行う。つまり、図11(a)に示すT11,T12の時間帯において積分演算を停止して、パターン光による距離及び姿勢角の起点の設定を行う。従って、周期的に設定される時刻(図11(b)に示すタイミング)に加え、時間T11,T12において、距離及び姿勢角の起点を設定する処理を行う。
そして、上記のように距離及び姿勢角の起点を設定することにより、図11(d)に示すように、車両10の移動量をより正確に推定することが可能になる。図11(d)において、曲線r1は、車両10の移動量の真の数値を示し、曲線r2は第2実施形態を採用した場合の車両10の移動量を示し、曲線r3は第2実施形態を採用せずに、周期的な起点設定のみを用いた場合の車両10の移動量を示している。
そして、図11(d)から理解されるように、第2実施形態に係る移動量の算出を採用した場合には、車両10の移動量がより真の数値に近づいている。
このようにして、第2実施形態に係る自己位置算出装置100では、前述した第1実施形態と同様の効果を達成できる。更に、第2実施形態では、第1の周期でパターン光を用いた距離及び姿勢角の算出を行い、この距離及び姿勢角にて起点を設定するので、路面勾配の変化率が大きい場合に高精度な移動距離の推定が可能になる。更に、その他の要因により距離及び姿勢角に誤差が生じた場合でも、第1の周期で起点を設定するので、車両10の移動距離に大きな誤差が生じることを回避できる。
[第3実施形態の説明]
次に、本発明の第3実施形態について説明する。前述した第2実施形態では、所定の周期でパターン光を用いた距離及び姿勢角の算出を実行し、距離及び姿勢角の起点を設定した。更に、路面勾配の変化率R1が勾配変化率の所定の閾値Rthを上回った場合に、パターン光を用いた距離及び姿勢角により起点を設定する例について説明した。
これに対して、第3実施形態では、通常時(R1<Rthの場合)には第1の周期でパターン光を用いた距離及び姿勢角の算出を実行し、路面の勾配変化率R1の絶対値が勾配変化率の所定の閾値Rthを上回った場合には、第1の周期よりも短い第2の周期でパターン光を用いた距離及び姿勢角の算出を実行する。装置構成は、前述の第1実施形態で説明した図1と同一であるので説明を省略する。
第3実施形態に係る自己位置算出装置100は、前述した図8に示した処理により実行される。図8におけるステップS09の処理が相違するので、以下、移動量算出の起点設定処理について図12に示すフローチャートを参照して説明する。
図12に示すフローチャートは、図9と対比して、ステップS906a、S906bの処理が加えられている点で相違する。以下詳細に説明する。
ステップS901において、ECU13は、今回の情報処理サイクルが初回であるか否かを判断する。そして、初回である場合、即ち、前回の情報処理サイクルのデータが無い場合にはステップS909に処理を進め、初回でない場合にはステップS903に処理を進める。
ステップS903において、勾配変化算出部36は、車両10に搭載されるナビゲーションシステムが有するGPSの情報に基づき、路面の勾配変化率R1を検出する。この処理では、GPSより得られる路面勾配のデータを微分演算する。
ステップS905において、勾配変化算出部36は、路面の勾配変化率R1の絶対値が予め設定した勾配変化率の所定の閾値Rthより大きいか否かを判定する。そして、勾配変化率の所定の閾値Rthより大きい場合には(ステップS905でYES)、ステップS906aに処理を進める。一方、勾配変化率の所定の閾値Rth以下である場合には(ステップS905でNO)、ステップS906bに処理を進める。
ステップS906aにおいてECU13は、パターン光を用いた距離及び姿勢の算出周期を第1の周期に設定する。例えば、情報処理サイクル10回分を第1の周期に設定する。その後、ステップS906cに処理を進める。
ステップS906bにおいてECU13は、パターン光を用いた距離及び姿勢の算出周期を第1の周期よりも短い第2の周期に設定する。例えば、情報処理サイクル2回分を第2の周期に設定する。その後、ステップS906cに処理を進める。
ステップS906cにおいて、ECU13は、検出のタイミングであるか否かを判断する。そして、検出のタイミングである場合にはステップS907に処理を進め、検出のタイミングでない場合にはステップS913に処理を進める。ステップS907以降の処理は、図9と同一であるので、説明を省略する。
次に、図13に示すタイミングチャートを参照して、路面の勾配変化と、距離及び姿勢角の設定との関係について説明する。図13(a)は、周期を変更して(第2の周期として)距離及び姿勢角の起点を設定する処理のタイミングを示す図、(b)は周期を変更せずに(第1の周期として)距離及び姿勢角の起点を設定する処理のタイミングを示す図、(c)は路面の勾配変化率R1を示す図である。また、横軸は時間を示しており、一つの目盛りが1回の情報処理サイクルを示している。
いま、路面の勾配変化率R1が大きく変化しない場合には、図13(b)に示すように、第1の周期、一例として、情報処理サイクルの10回分を1周期として距離及び姿勢角のリセット処理が行われる。具体的には、時刻t21、t23、t25、t27のタイミングで距離及び姿勢角の起点設定処理が行われる。
いま、図13(c)に示すように、路面の勾配変化率R1が増加し、その絶対値が勾配変化率の所定の閾値Rthを上回ると、起点設定の周期が第1の周期から第2の周期に変更される(図12のS906bの処理)。一例として、情報処理サイクルの2回分を1周期として距離及び姿勢角の起点設定処理が行われる。即ち、図13(c)に示す時刻t22〜t23の間でR1がRthを上回っている時間帯において、図13(a)に示すように、起点設定の周期が第2の周期に変更される。
同様に、図13(c)に示す時刻t26〜t27の間で勾配変化率R1の絶対値が勾配変化率の所定の閾値Rthを上回っているので、この時間帯においてリセット処理の周期が第2の周期に変更される。
このようにして、第3実施形態によれば、路面の勾配変化率R1が大きくならない場合には、第1の周期で距離及び姿勢角の起点設定が行われ、勾配変化率R1の絶対値が勾配変化率の所定の閾値Rthを上回った場合に、第1の周期よりも短い第2の周期で距離及び姿勢角の起点設定が行われる。従って、勾配変化率R1が大きいという車両10の移動距離測定に大きな誤差が生じることが予想される状況下において、パターン光を用いた距離及び姿勢角の算出周期が短くなる。即ち、距離及び算出角の起点設定の周期が短くなる。従って、距離及び姿勢角の算出結果に大きな誤差が生じることを防止でき、車両10の移動距離の推定精度を著しく向上させることができる。
以上、本発明の自己位置算出装置及び自己位置算出方法を図示の実施形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置き換えることができる。
例えば、図2では、カメラ12と投光器11を車両10の前面に取り付ける例について示したが、本発明はこれに限定されず、車両10の側方、後方、真下に向けて設置してもよい。また、上記した各実施形態では車両10に搭載した場合について記述したが、オートバイや建設機械など、道路の路面或いは壁面上の特徴点を撮像することが可能な移動体すべてに適用可能である。