(58)【調査した分野】(Int.Cl.,DB名)
上記フィードフォワード制御部は、右白線の曲率と左白線の曲率とに基づく演算項と右白線の曲率に基づく演算項と左白線の曲率に基づく演算項と先行車の走行軌跡の曲率に基づく演算項とにより上記フィードフォワード出力値を演算することを特徴とする請求項1記載の車両の運転支援装置。
上記フィードバック制御部は、自車両の予測される走行位置での左右両白線の中心からのずれに基づく演算項と自車両の予測される走行位置での右白線を基準に推定する走行路からのずれに基づく演算項と自車両の予測される走行位置での左白線を基準に推定する走行路からのずれに基づく演算項と自車両の予測される走行位置での先行車の走行軌跡からのずれに基づく演算項とにより上記フィードバック出力値を演算することを特徴とする請求項1又は請求項2記載の車両の運転支援装置。
上記制御ゲイン設定手段は、上記前方環境認識手段により認識された各点を基に最小自乗法により白線を近似して求め、該近似における誤差によって白線の認識状態の安定性を評価することを特徴とする請求項1乃至請求項3の何れか一つに記載の車両の運転支援装置。
上記制御ゲイン設定手段は、連続して認識される白線の長さを求め、該白線の長さにより白線の認識状態の安定性を評価することを特徴とする請求項1乃至請求項4の何れか一つに記載の車両の運転支援装置。
上記制御ゲイン設定手段は、認識された先行車のターンシグナルの有無により先行車の認識状態の安定性を評価することを特徴とする請求項1乃至請求項5の何れか一つに記載の車両の運転支援装置。
上記制御ゲイン設定手段は、認識された先行車の車幅長さの変動により先行車の認識状態の安定性を評価することを特徴とする請求項1乃至請求項6の何れか一つに記載の車両の運転支援装置。
【発明を実施するための形態】
【0009】
以下、図面に基づいて本発明の実施の形態を説明する。
図1において、符号1は操舵角をドライバ入力と独立して設定自在な電動パワーステアリング装置を示し、この電動パワーステアリング装置1は、ステアリング軸2が、図示しない車体フレームにステアリングコラム3を介して回動自在に支持されており、その一端が運転席側へ延出され、他端がエンジンルーム側へ延出されている。ステアリング軸2の運転席側端部には、ステアリングホイール4が固設され、また、エンジンルーム側へ延出する端部には、ピニオン軸5が連設されている。
【0010】
エンジンルームには、車幅方向へ延出するステアリングギヤボックス6が配設されており、このステアリングギヤボックス6にラック軸7が往復移動自在に挿通支持されている。このラック軸7に形成されたラック(図示せず)に、ピニオン軸5に形成されたピニオンが噛合されて、ラックアンドピニオン式のステアリングギヤ機構が形成されている。
【0011】
また、ラック軸7の左右両端はステアリングギヤボックス6の端部から各々突出されており、その端部に、タイロッド8を介してフロントナックル9が連設されている。このフロントナックル9は、操舵輪としての左右輪10L,10Rを回動自在に支持すると共に、キングピン(図示せず)を介して車体フレームに転舵自在に支持されている。従って、ステアリングホイール4を操作し、ステアリング軸2、ピニオン軸5を回転させると、このピニオン軸5の回転によりラック軸7が左右方向へ移動し、その移動によりフロントナックル9がキングピン(図示せず)を中心に回動して、左右輪10L,10Rが左右方向へ転舵される。
【0012】
また、ピニオン軸5にアシスト伝達機構11を介して、電動モータ12が連設されており、この電動モータ12にてステアリングホイール4に加える操舵トルクのアシスト、及び、設定された操舵角となるような操舵トルクの付加が行われる。電動モータ12は、後述する操舵制御部20で設定する操舵トルク(制御量)Tiとなるようにモータ駆動部21を介して駆動される。尚、操舵制御部20は、このように操舵トルクのアシスト機能も備えているが、本実施の形態では、操舵トルクのアシスト機能については説明を省略する。
【0013】
操舵制御部20には、前方の左右白線と先行車を認識する前方環境認識手段としての前方認識装置31、車速Vを検出する車速センサ32、ヨーレート(dθ/dt)を検出するヨーレートセンサ33、横加速度Gyを検出する横加速度センサ34が接続されている。
【0014】
前方認識装置31は、例えば、車室内の天井前方に一定の間隔をもって取り付けられ、車外の対象を異なる視点からステレオ撮像する1組のCCDカメラと、このCCDカメラからの画像データを処理するステレオ画像処理装置とから構成されている。
【0015】
前方認識装置31のステレオ画像処理装置における、CCDカメラからの画像データの処理は、例えば以下のように行われる。まず、CCDカメラで撮像した自車両の進行方向の1組のステレオ画像対に対し、対応する位置のずれ量から距離情報を求め、距離画像を生成する。
【0016】
白線データの認識では、白線は道路面と比較して高輝度であるという知得に基づき、道路の幅方向の輝度変化を評価して、画像平面における左右の白線の位置を画像平面上で特定する。この白線の実空間上の位置(x,y,z)は、画像平面上の位置(i,j)とこの位置に関して算出された視差とに基づいて、すなわち、距離情報に基づいて、周知の座標変換式より算出される。自車両の位置を基準に設定された実空間の座標系は、本実施の形態では、例えば、
図15に示すように、ステレオカメラの中央真下の道路面を原点として、車幅方向をx軸、車高方向をy軸、車長方向(距離方向)をz軸とする。このとき、x−z平面(y=0)は、道路が平坦な場合、道路面と一致する。道路モデルは、道路上の自車両の走行レーンを距離方向に複数区間に分割し、各区間における左右の白線を所定に近似して連結することによって表現される。
【0017】
また、側壁や立体物データの認識では、予め記憶しておいた3次元的な側壁データ、立体物データ等の枠(ウインドウ)と比較し、道路に沿って存在するガードレール、縁石等の側壁データを抽出すると共に、立体物を、車両、歩行者、電柱等その他の立体物に分類して抽出する。立体物データにおいては、それぞれの自車両との距離(相対距離)の時間的変化の割合から自車両との相対速度が演算され、また、この相対速度と自車速Vとを加算することにより、各々の立体物の速度も算出される。この際、特に、車両として分類された立体物は、その速度から、自車両の前方方向を正として、速度が略0の車両は停止車両、速度が正(自車両と同じ方向に進む車両)で自車両に最も近い車両は先行車、速度が負の車両(自車両に向かってくる車両)は対向車として分類して認識される。また、先行車として認識された車両に関しては、特に、ターンシグナルスイッチのON−OFF、車幅寸法のデータも取得される。こうして得られた各情報、すなわち、白線データ、道路に沿って存在するガードレール、縁石等の側壁データ、及び、立体物データ(種別、距離、速度、自車両との相対速度、先行車情報等)の各データは操舵制御部20に入力される。
【0018】
そして、操舵制御部20は、上述の各入力信号を基に、左右白線の認識状態と先行車の認識状態に応じて制御ゲインを可変設定し、この可変設定された制御ゲインを用いて、前方認識装置31で認識した左右白線の認識形状と先行車の走行軌跡に応じた出力値をフィードフォワード出力値Iffとして演算し、自車両の予測される走行位置を基準とした前方認識装置31で認識した左右白線の認識形状と先行車の走行軌跡に応じた出力値をフィードバック出力値Ifbとして演算し、これらを加算した値をトルク値に換算して操舵トルク(制御量)Tiとしてモータ駆動部21に出力する。
【0019】
このため、操舵制御部20は、操舵制御手段として、
図2に示すように、制御ゲイン設定制御部20a、フィードフォワード制御部20b、フィードバック制御部20c、操舵トルク算出部20dから主要に構成されている。
【0020】
制御ゲイン設定制御部20aは、前方認識装置31から認識された画像情報が入力され、車速センサ32から車速Vが入力され、ヨーレートセンサ33からヨーレート(dθ/dt)が入力される。そして、後述の
図4〜
図12に示すフローチャートに従って、各制御ゲインGff1、Gff2、Gff3、Gff4、Gfb1、Gfb2、Gfb3、Gfb4を設定して、制御ゲインGff1、Gff2、Gff3、Gff4をフィードフォワード制御部20bに出力し、制御ゲインGfb1、Gfb2、Gfb3、Gfb4をフィードバック制御部20cに出力するように構成されている。
【0021】
以下、各制御ゲインGff1、Gff2、Gff3、Gff4、Gfb1、Gfb2、Gfb3、Gfb4の設定について、
図4〜
図12に示すフローチャートに従って説明する。
【0022】
まず、ステップ(以下、「S」と略称)201で、左白線と該左白線を構成する左候補点との差分の平均の絶対値(左白線と左候補点との差分の平均値)err_line_l、右白線と該右白線を構成する右候補点との差分の平均値の絶対値(右白線と右候補点との差分の平均値)err_line_rを算出する。すなわち、上述したように、前方認識装置31から、画像上での白線の(i,j)座標を検出し、これを実空間上のx−z座標に変換し、変換されたx−z座標において、該白線を構成する各候補点に対して、二次の最小自乗近似を左右それぞれの白線について行う。通常、白線は、傾き、曲率を持った線分であり、近似式によって近似できない場合は、白線ではなく路面等の模様を白線の候補点として検出してしまっている可能性があり、このような、値が小さいほど、白線の認識状態が安定していると評価できる誤差err_line_l、err_line_rを、それぞれ左右の白線の認識状態の安定性を評価する数値として採用するのである。
【0023】
次に、S202に進み、左白線長さlength_lと右白線長さlength_rを算出する。具体的には、
図17に示すように、過去検出したz軸方向のデータをΔF(例えば、1m、或いは、任意に必要な分解能長さ)の前後方向の領域を定め、このΔFの範囲に入る白線を構成している候補点群のx方向の平均位置を左右の白線それぞれについて算出する。
図17の例では、点Pnは、今回ΔFnの範囲において検出された候補点群を示し、点Pfnは、これら点Pnのx方向の平均位置の点を示す。また、点Pn-1は、前回ΔFn-1の範囲において検出された候補点群を示し、点Pfn-1は、これら点Pn-1のx方向の平均位置の点を示す。同様に、点Pn-2は、前回ΔFn-1の前回ΔFn-2の範囲において検出された候補点群を示し、点Pfn-2は、これら点Pn-2のx方向の平均位置の点を示す。点Pfn-3も同様である。このとき、ΔFに入る白線の候補点が閾値以上存在しない場合は、平均位置の算出は行わない。
【0024】
その後、過去の代表点のx座標位置が車両の移動により移動が予測されるx方向の位置を推定し、その推定されたx座標位置と、今回フレームの平均位置のx座標位置との差分の絶対値を計算する。
【0025】
例えば、
図18に示すように、過去の代表点がPn-1(xold,zold)として、車両の移動により移動が予測される位置がPpre(xpre,zpre)とすると、Ppre(xpre,zpre)と今回の代表点Pn(xn,zn)との差分の絶対値(=|xpre−xn|)を計算する。
【0026】
そして、今回のx方向の平均位置が計算されており、且つ、車両の移動により移動が予測される位置Ppre(xpre,zpre)との差分の絶対値が閾値以下であることを複数フレーム満足した場合には、最遠の白線平均位置のz座標を、左白線長さlength_l、右白線長さlength_rとしてメモリする。尚、初期状態等で、推定位置が存在しない場合には、白線の平均位置が閾値未満として扱う。
【0027】
この際、車両の移動により移動が予測される位置Ppre(xpre,zpre)の座標の算出について説明する。例えば、
図19に示すように、車両が横方向にΔx、前方向にΔz移動する場合、これら移動量Δx、Δzは、以下の式(1)、式(2)により算出される。
Δx=V・Δt・sin(θ) …(1)
Δz=V・Δt・cos(θ) …(2)
ここで、Δtはフレームレート、θはヨー角(ヨーレートセンサ33からの値を積分した値)である。
【0028】
そして、Ppre(xpre,zpre)は、以下の式(3)、式(4)により算出される。
xpre=(xold−Δx)・cos(θ)−(zold−Δz)・sin(θ) …(3)
zpre=(xold−Δx)・sin(θ)+(zold−Δz)・cos(θ) …(4)
【0029】
このように本実施の形態では、左白線長さlength_l、及び、右白線長さlength_rを求め、これら左白線長さlength_l、及び、右白線長さlength_rが長いほど白線の認識状態の安定性が高いと評価できるようになっている。
【0030】
次に、S203に進み、先行車のターンシグナルスイッチ情報の判定がなされ、先行車のターンシグナルスイッチがONの場合には、先行車ターンシグナルスイッチ安定性評価値Sigtuが1に設定され、ターンシグナルスイッチがOFFの場合には、先行車ターンシグナルスイッチ安定性評価値Sigtuが0に設定される。すなわち、先行車がターンシグナルスイッチをONしている場合には、右左折の可能性があり、自車両との進行路と異なる虞があるため、先行車のターンシグナルスイッチがONの場合には、Sigtu=1として先行車の認識状態の安定性を低く判断できるようにするのである。
【0031】
次いで、S204に進み、先行車の幅情報を安定して検出しているか判断し、先行車の車幅の前回値と今回値の差分の絶対値が閾値(例えば、20cm)以下であることが所定フレーム回数を超えている場合には、先行車の認識状態は安定しているとして、先行車車幅長さ安定評価値Tgt_veh_wを1に設定する。逆に、所定フレーム回数を超えていない場合には、先行車車幅長さ安定評価値Tgt_veh_wを0に設定する。
【0032】
次に、S205に進み、先行車と自車両との車間距離が安定しているか判定する。具体的には、過去数フレーム分において、先行車と自車両との車間距離を、1次の最小自乗法で近似した際の近似誤差を計算し、この近似誤差が閾値以下の場合であれば、車間距離が安定しているとして、先行車車間距離安定評価値Tgt_veh_dを1に設定する。逆に、近似誤差が閾値を超えている場合には、先行車車間距離安定評価値Tgt_veh_dを0に設定する。
【0033】
次いで、S206に進み、後述の
図5〜
図12のフローチャートに従って、各制御ゲインGff1、Gff2、Gff3、Gff4、Gfb1、Gfb2、Gfb3、Gfb4を、上述の左白線と左候補点との差分の平均値err_line_l、右白線と右候補点との差分の平均値err_line_r、左白線長さlength_l、右白線長さlength_r、先行車ターンシグナルスイッチ安定性評価値Sigtu、先行車車幅長さ安定評価値Tgt_veh_w、先行車車間距離安定評価値Tgt_veh_dを設定する。
【0034】
ここで、上述の制御ゲインGff1は、後述するフィードフォワード制御部20bにおけるフィードフォワード制御において右白線の曲率と左白線の曲率とに基づく演算項の重み付けを決定するゲインであり、制御ゲインGff2は、フィードフォワード制御において右白線の曲率に基づく演算項の重み付けを決定するゲインであり、制御ゲインGff3は、フィードフォワード制御において左白線の曲率に基づく演算項の重み付けを決定するゲインであり、制御ゲインGff4は、フィードフォワード制御において先行車の走行軌跡の曲率に基づく演算項の重み付けを決定するゲインとなっている。
【0035】
また、上述の制御ゲインGfb1は、後述するフィードバック制御部20cにおけるフィードバック制御において自車両の予測される走行位置での左右両白線の中心からのずれに基づく演算項の重み付けを決定するゲインであり、制御ゲインGfb2は、フィードバック制御において自車両の予測される走行位置での右白線を基準に推定する走行路からのずれに基づく演算項の重み付けを決定するゲインであり、制御ゲインGfb3は、フィードバック制御において自車両の予測される走行位置での左白線を基準に推定する走行路からのずれに基づく演算項の重み付けを決定するゲインであり、制御ゲインGfb4は、フィードバック制御において自車両の予測される走行位置での先行車の走行軌跡からのずれに基づく演算項の重み付けを決定するゲインとなっている。
【0036】
これら各制御ゲインGff1、Gff2、Gff3、Gff4、Gfb1、Gfb2、Gfb3、Gfb4は、それぞれ、数値が高くなるほど、それぞれの演算項の影響が高くなるようになっている。
【0037】
次に、
図5〜
図12のフローチャートを基に、各制御ゲインGff1、Gff2、Gff3、Gff4、Gfb1、Gfb2、Gfb3、Gfb4の設定を説明する。
【0038】
まず、S301で、右白線と右候補点との差分の平均値err_line_rが予め設定した閾値Cσ未満(err_line_r<Cσ)か否か判定し、この判定の結果、err_line_r<Cσで右白線が安定して認識されていると判定される場合は、S302に進む。
【0039】
S302では、右白線長さlength_rが予め設定した閾値Cdを超えているか(Cd<length_r)か否か判定し、この判定の結果、Cd<length_rで右白線が安定した操舵支援制御を行うのに十分な長さを有すると判定される場合は、S303に進む。
【0040】
S303では、左白線と左候補点との差分の平均値err_line_lが予め設定した閾値Cσ未満(err_line_l<Cσ)か否か判定し、この判定の結果、err_line_l<Cσで左白線が安定して認識されていると判定される場合は、S304に進む。
【0041】
S304では、
左白線長さlength_lが予め設定した閾値Cdを超えているか(Cd<length_l)か否か判定し、この判定の結果、Cd<length_lで左白線が安定した操舵支援制御を行うのに十分な長さを有すると判定される場合は、S305に進む。
【0042】
そして、S305に進むと、左右の白線は安定して認識され、操舵支援制御を行うのに十分な長さを有していると判定されるため、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=1.0、Gff2=Gff3=Gff4=0に設定する。
【0043】
その後、S306に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=1.0、Gfb2=Gfb3=Gfb4=0に設定してプログラムを抜ける。すなわち、左右の白線は安定して認識され、操舵支援制御を行うのに十分な長さを有していると判定されるため、両側白線の情報に基づき操舵支援制御が実行されるようになっている。
【0044】
また、上述のS303で、err_line_l≧Cσで左白線の認識が不安定と判定される場合は、S307に進む。
【0045】
S307では、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S308に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=0.5、Gff3=0、Gff4=0.5に設定する。
【0046】
その後、S309に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=0.5、Gfb3=0、Gfb4=0.5に設定する。
【0047】
すなわち、左白線の認識が不安定であっても、右白線は安定して認識され、操舵支援制御を行うのに十分な長さを有しており、先行車情報も操舵支援制御するのに十分であるため、右白線情報と先行車情報とを同じ重み付けで操舵支援制御が行われるようになっている。
【0048】
一方、S307で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S310に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=1.0、Gff3=Gff4=0に設定する。
【0049】
その後、S311に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=1.0、Gfb3=Gfb4=0に設定する。
【0050】
すなわち、左白線の認識が不安定で、先行車情報も操舵支援制御するのに不十分であるが、右白線は安定して認識され、操舵支援制御を行うのに十分な長さを有していると判定されるため、右白線情報に基づいた操舵支援制御が行われるようになっている。
【0051】
また、上述のS304で、Cd≧length_lで、右白線は安定して認識され、操舵支援制御を行うのに十分な長さを有しており、左白線は安定して認識されてはいるものの、操舵支援制御を行うのに十分な長さを有していないと判定された場合は、S312に進む。
【0052】
S312では、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S313に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=0.5、Gff3=0.2、Gff4=0.3に設定する。
【0053】
その後、S314に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=0.5、Gfb3=0.2、Gfb4=0.3に設定する。
【0054】
すなわち、左白線は安定して認識されてはいるものの、操舵支援制御を行うのに十分な長さを有していないが、右白線は安定して認識され、操舵支援制御を行うのに十分な長さを有しており、また、先行車情報は操舵支援制御するのに十分であるため、右白線情報に関する制御ゲインGff2、Gfb2を最も高く設定し、次に、先行車情報に関する制御ゲインGff4、Gfb4を高く設定し、次いで、左白線情報に関する制御ゲインGff3、Gfb3を僅かに設定して、この重み付けで右白線情報、左白線情報、先行車情報に基づいた操舵支援制御を行うのである。
【0055】
一方、S312で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S315に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=0.8、Gff3=0.2、Gff4=0に設定する。
【0056】
その後、S316に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=0.8、Gfb3=0.2、Gfb4=0に設定する。
【0057】
すなわち、左白線は安定して認識されてはいるものの、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報は操舵支援制御するのに不十分であり、右白線は安定して認識され、操舵支援制御を行うのに十分な長さを有しているため、右白線情報に関する制御ゲインGff2、Gfb2を最も高く設定し、左白線情報に関する制御ゲインGff3、Gfb3は僅かに設定することにより、この重み付けで右白線情報、左白線情報に基づいた操舵支援制御を行うのである。
【0058】
また、前述のS302で、Cd≧length_rで、右白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有していないと判定された場合は、S317に進む。
【0059】
S317では、err_line_l<Cσか否か判定され、この判定の結果、err_line_l≧Cσで左白線が安定して認識されていないと判定される場合は、S318に進む。
【0060】
S318では、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S319に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=0.2、Gff3=0、Gff4=0.8に設定する。
【0061】
その後、S320に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=0.2、Gfb3=0、Gfb4=0.8に設定する。
【0062】
すなわち、左白線の認識が不安定で、右白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報は操舵支援制御するのに十分であるため、先行車情報に関する制御ゲインGff4、Gfb4を最も高く設定し、右白線情報に関する制御ゲインGff2、Gfb2を僅かに設定して、この重み付けで右白線情報、先行車情報に基づいた操舵支援制御を行うのである。
【0063】
一方、S318で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S321に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=1.0、Gff3=Gff4=0に設定する。
【0064】
その後、S322に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=1.0、Gfb3=Gfb4=0に設定する。
【0065】
すなわち、左白線の認識が不安定で、右白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報は操舵支援制御するのに不十分であるため、右白線情報に基づいてのみ操舵支援制御を行うのである。
【0066】
また、前述のS317で、err_line_l<Cσで左白線が安定して認識されていると判定される場合は、S323に進み、Cd<length_lか否か判定する。この判定の結果、Cd≧length_lで、右白線も左白線も安定して認識されてはいるものの、共に、操舵支援制御を行うのに十分な長さを有していない場合は、S324に進み、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S325に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=Gff3=0.2、Gff4=0.6に設定する。
【0067】
その後、S326に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=Gfb3=0.2、Gfb4=0.6に設定する。
【0068】
すなわち、右白線も左白線も安定して認識されてはいるものの、共に、操舵支援制御を行うのに十分な長さを有していない場合は、先行車情報に関する制御ゲインGff4、Gfb4を最も高く設定し、右白線情報に関する制御ゲインGff2、Gfb2と左白線情報に関する制御ゲインGff3、Gfb3を共に僅かに設定して、この重み付けで右白線情報、左白線情報、先行車情報に基づいた操舵支援制御を行うのである。
【0069】
一方、S324で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S327に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=Gff3=0.5、Gff4=0に設定する。
【0070】
その後、S328に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=Gfb3=0.5、Gfb4=0に設定する。
【0071】
すなわち、右白線も左白線も安定して認識されてはいるものの、共に、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報も操舵支援制御するにには不十分であるため、右白線情報と左白線情報とを同じ重み付けで用いて操舵支援制御を実行するようになっている。
【0072】
また、S323で、Cd<length_lで、右白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有しておらず、左白線は安定して認識されて、操舵支援制御を行うのに十分な長さを有している場合は、S329に進み、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S330に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=0.2、Gff3=0.5、Gff4=0.3に設定する。
【0073】
その後、S331に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=0.2、Gfb3=0.5、Gfb4=0.3に設定する。
【0074】
すなわち、左白線は安定して認識され、操舵支援制御を行うのに十分な長さを有しているが、右白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報は操舵支援制御するのに十分であるため、左白線情報に関する制御ゲインGff3、Gfb3を最も高く設定し、次に、先行車情報に関する制御ゲインGff4、Gfb4を高く設定し、右白線情報に関する制御ゲインGff2、Gfb2を僅かに設定して、この重み付けで右白線情報、左白線情報、先行車情報に基づいた操舵支援制御を行うのである。
【0075】
一方、S329で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S332に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=0、Gff2=0.2、Gff3=0.8、Gff4=0に設定する。
【0076】
その後、S333に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=0、Gfb2=0.2、Gfb3=0.8、Gfb4=0に設定する。
【0077】
すなわち、左白線は安定して認識され、操舵支援制御を行うのに十分な長さを有しているが、右白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報も操舵支援制御するのに不十分であるため、左白線情報に関する制御ゲインGff3、Gfb3を最も高く設定し、右白線情報に関する制御ゲインGff2、Gfb2を僅かに設定して、この重み付けで右白線情報、左白線情報に基づいた操舵支援制御を行うのである。
【0078】
一方、
図5の初めに戻り、S301で、err_line_r≧Cσで右白線が安定して認識されていないと判定される場合は、S334に進む。
【0079】
S334では、err_line_l<Cσか否か判定し、err_line_l≧Cσで左白線が安定して認識されていないと判定される場合は、S335に進む。
【0080】
S335では、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S336に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=Gff2=Gff3=0、Gff4=1.0に設定する。
【0081】
その後、S337に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=Gfb2=Gfb3=0、Gfb4=1.0に設定する。
【0082】
すなわち、右白線も左白線も共に認識が不安定なため、得られる先行車情報に基づいた操舵支援制御を行うのである。
【0083】
一方、S335で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S338に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=Gff2=Gff3=Gff4=0に設定する。
【0084】
その後、S339に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=Gfb2=Gfb3=Gfb4=0に設定する。
【0085】
すなわち、右白線情報も、左白線情報も、先行車情報も得られないため、操舵支援制御を行わない。
【0086】
また、上述のS334で、err_line_l<Cσで、右白線が安定して認識されていないが、左白線は安定して認識されていると判定された場合は、S340に進む。
【0087】
S340では、Cd<length_lか否か判定され、この判定の結果、Cd<length_lで左白線が安定した操舵支援制御を行うのに十分な長さを有すると判定される場合は、S341に進む。
【0088】
S341では、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S342に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=Gff2=0、Gff3=Gff4=0.5に設定する。
【0089】
その後、S343に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=Gfb2=0、Gfb3=Gfb4=0.5に設定する。
【0090】
すなわち、右白線の認識が不安定であっても、左白線は安定して認識され、操舵支援制御を行うのに十分な長さを有しており、先行車情報も操舵支援制御するのに十分であるため、左白線情報と先行車情報とを同じ重み付けで操舵支援制御が行われるようになっている。
【0091】
一方、S341で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S344に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=Gff2=0、Gff3=1.0、Gff4=0に設定する。
【0092】
その後、S345に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=Gfb2=0、Gfb3=1.0、Gfb4=0に設定する。
【0093】
すなわち、右白線の認識が不安定で、先行車情報も操舵支援制御するのに不十分であるが、左白線は安定して認識され、操舵支援制御を行うのに十分な長さを有していると判定されるため、左白線情報に基づいた操舵支援制御が行われるようになっている。
【0094】
また、上述のS340で、Cd≧length_lで左白線が安定した操舵支援制御を行うのに十分な長さを有しないと判定される場合は、S346に進む。
【0095】
S346では、ターンシグナルスイッチがOFF(Sigtu=0)で、且つ、先行車の幅情報を安定して検出しており(Tgt_veh_w=1)、且つ、先行車と自車両との車間距離が安定しており(Tgt_veh_d=1)、先行車情報は操舵支援制御するのに十分であると判定できる場合は、S347に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=Gff2=0、Gff3=0.2、Gff4=0.8に設定する。
【0096】
その後、S348に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=Gfb2=0、Gfb3=0.2、Gfb4=0.8に設定する。
【0097】
すなわち、右白線の認識が不安定で、左白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報は操舵支援制御するのに十分であるため、先行車情報に関する制御ゲインGff4、Gfb4を最も高く設定し、左白線情報に関する制御ゲインGff2、Gfb2を僅かに設定して、この重み付けで左白線情報、先行車情報に基づいた操舵支援制御を行うのである。
【0098】
一方、S346で、Sigtu=0、且つ、Tgt_veh_w=1、且つ、Tgt_veh_d=1の条件が判定されず、先行車情報は操舵支援制御するのに不十分であると判定できる場合は、S349に進み、フィードフォワード制御部20bに対する各制御ゲインGff1、Gff2、Gff3、Gff4を、Gff1=Gff2=0、Gff3=1.0、Gff4=0に設定する。
【0099】
その後、S350に進んで、フィードバック制御部20cに対する各制御ゲインGfb1、Gfb2、Gfb3、Gfb4も同様に、Gfb1=Gfb2=0、Gfb3=1.0、Gfb4=0に設定する。
【0100】
すなわち、右白線の認識が不安定で、左白線は安定して認識されているものの、操舵支援制御を行うのに十分な長さを有しておらず、先行車情報は操舵支援制御するのに不十分であるため、左白線情報に基づいてのみ操舵支援制御を行うのである。
【0101】
上述の如く、各制御ゲインGff1、Gff2、Gff3、Gff4、Gfb1、Gfb2、Gfb3、Gfb4の設定を行った後は、S207に進み、これら制御ゲインGff1、Gff2、Gff3、Gff4をフィードフォワード制御部20bに出力し、制御ゲインGfb1、Gfb2、Gfb3、Gfb4をフィードバック制御部20cに出力してルーチンを抜ける。このように、制御ゲイン設定制御部20aは、制御ゲイン設定手段として設けられている。
【0102】
フィードフォワード制御部20bは、前方認識装置31から画像情報が入力され、制御ゲイン設定制御部20aから制御ゲインGff1、Gff2、Gff3、Gff4が入力される。そして、例えば、以下の(5)式により、左右白線の認識形状と先行車の走行軌跡に応じた出力値をフィードフォワード出力値Iffとして演算し、操舵トルク算出部20dに出力する。
Iff=Gff1・(Rr+Rl)/2+Gff2・Rr+Gff3・Rl+Gff4・Rv
…(5)
ここで、Rrは右白線による曲率成分であり、Rlは左白線による曲率成分である。これら、左右白線の曲率成分Rr,Rlは、具体的には、
図15に示すような、左右白線のそれぞれを構成する候補点に関して、二次の最小自乗法によって計算された二次項の係数を用いることによって定められる。例えば、x=A・z
2+B・z+Cの二次式で白線を近似した場合、Aの値が曲率成分として用いられる。また、Rvは先行車軌跡による曲率成分であり、先行車の(後面)中心と自車中心とを結ぶ2点間における最小自乗法による近似で求めた値(x=A・z
2の式で近似したAの値)を曲率成分とする。尚、これら白線の曲率成分Rr、Rlは、それぞれの白線の曲率そのものでも良く、また、先行車軌跡による曲率成分Rvは、先行車の通過した軌跡を利用して算出しても良く、軌跡のなす角度の微分値等から求めるようにしても良い。
【0103】
次に、このフィードフォワード制御部20bで実行されるフィードフォワード制御を、
図13のフローチャートで説明する。
【0104】
先ず、S401で、制御ゲイン設定制御部20aから制御ゲインGff1、Gff2、Gff3、Gff4を読み込む。
【0105】
次に、S402に進み、左白線による曲率成分Rl、右白線による曲率成分Rr、先行車軌跡による曲率成分Rvを算出する。
【0106】
そして、S403に進み、上述の(5)式により、フィードフォワード出力値Iffを算出し、操舵トルク算出部20dに出力する。このように、フィードフォワード制御部20bは、フィードフォワード制御手段として設けられている。
【0107】
フィードバック制御部20cは、前方認識装置31から画像情報が入力され、車速センサ32から車速Vが入力され、ヨーレートセンサ33からヨーレート(dθ/dt)が入力され、横加速度センサ34から横加速度Gyが入力され、制御ゲイン設定制御部20aから制御ゲインGfb1、Gfb2、Gfb3、Gfb4が入力される。そして、例えば、以下の(6)式により、自車両の予測される走行位置を基準とした左右白線の認識形状と先行車の走行軌跡に応じた出力値をフィードバック出力値Ifbとして演算として演算し、操舵トルク算出部20dに出力する。
Ifb=Gfb1・(xr−xl−xv)
+Gfb2・((xr+xr−wrd)/2−xv)
+Gfb3・((xl+xl+wrd)/2−xv)
+Gfb4・(xtgt−xv) …(6)
ここで、xvは車両の前方注視点のz座標におけるx座標である。この前方注視点とは、本実施の形態においては、例えば、
図16(a)〜(d)に示すように、予め設定しておいた予見時間T(例えば、1.2秒)経過後に自車両が存在すると予測される点である。この前方注視点におけるz座標zvは、例えば、zv=T・Vで算出される。尚、単純に、前方の予め設定する距離の点としても良い。
【0108】
従って、前方注視点のx座標xvは、例えば、以下の(7)式で算出することができる。
xv=xi+V・(β+θ)・T
+(1/2)・((dθ/dt)+(dβ/dt))・V・T
2…(7)
ここで、xiは車両の現在のx座標、(dβ/dt)は車体すべり角速度であり、例えば、以下の(8)式により算出できる。
(dβ/dt)=(Gy/V)−(dθ/dt) …(8)
そして、この車体すべり角速度(dβ/dt)を積分処理することにより、車体すべり角βが算出できる。
【0109】
また、(6)式における、xrは前方注視点のz座標における右白線のx座標であり、xlは前方注視点のz座標における左白線のx座標である。更に、wrdは過去に検出しておいた道幅、xtgtは前方注視点のz座標における先行車軌跡のx座標である。
【0110】
従って、上述の(6)式における、第一項であるGfb1・(xr−xl−xv)は、
図16(a)に示すように、前方注視点と左右白線の中心点とのx座標偏差の演算項となっている。また、第二項であるGfb2・((xr+xr−wrd)/2−xv)は、
図16(b)に示すように、前方注視点と右白線−車線幅を基準とする走行点とのx座標偏差の演算項となっている。更に、第三項であるGfb3・((xl+xl+wrd)/2−xv)は、
図16(c)に示すように、前方注視点と左白線−車線幅を基準とする走行点とのx座標偏差の演算項となっている。また、第四項であるGfb4・(xtgt−xv)は、
図16(d)に示すように、前方注視点と先行車を基準とする走行点とのx座標偏差の演算項となっている。
【0111】
次に、このフィードバック制御部20cで実行されるフィードバック制御を、
図14のフローチャートで説明する。
【0112】
先ず、S501で、制御ゲイン設定制御部20aから制御ゲインGfb1、Gfb2、Gfb3、Gfb4を読み込む。
【0113】
次いで、S502に進み、前方注視点のz座標zvを算出する。
【0114】
次に、S503に進み、前方注視点のx座標xvを、例えば、上述の(7)式により、算出する。
【0115】
次いで、S504に進み、前方注視点における、左白線のx座標xl、右白線のx座標xr、先行車軌跡のx座標xtgtを算出する。
【0116】
そして、S505に進み、上述の(6)式により、フィードバック出力値Ifbを算出し、操舵トルク算出部20dに出力する。このように、フィードバック制御部20cは、フィードバック制御手段として設けられている。
【0117】
操舵トルク算出部20dは、フィードフォワード制御部20bからフィードフォワード出力値Iffが入力され、フィードバック制御部20cからフィードバック出力値Ifbが入力される。そして、例えば、以下の(9)式により、操舵トルクTiを算出し、モータ駆動部21に出力する。
Ti=Gt・(Iff+Ifb) …(9)
ここで、Gtは、予め設定しておいた換算係数である。
【0118】
以上のように構成される操舵制御部20では、
図3に示すように操舵制御が実行される。
まず、S101で、制御ゲイン設定制御部20aで、前述の
図4〜
図12に示すフローチャートに従って、各制御ゲインGff1、Gff2、Gff3、Gff4、Gfb1、Gfb2、Gfb3、Gfb4の設定制御が行われる。
【0119】
次いで、S102に進み、フィードフォワード制御部20bで、前述の
図13に示すフローチャートに従って、フィードフォワード出力値Iffの算出が行われる。
【0120】
次に、S103に進んで、フィードバック制御部20cで、前述の
図14に示すフローチャートに従って、フィードバック出力値Ifbの算出が行われる。
【0121】
そして、S104に進んで、操舵トルク算出部20dで、前述の(9)式により、操舵トルクTiが算出され、モータ駆動部21に出力される。
【0122】
このように本発明の実施の形態によれば、左右白線の認識状態と先行車の認識状態に応じて制御ゲインを可変設定し、この可変設定された制御ゲインを用いて、前方認識装置31で認識した左右白線の認識形状と先行車の走行軌跡に応じた出力値をフィードフォワード出力値Iffとして演算し、自車両の予測される走行位置を基準とした前方認識装置31で認識した左右白線の認識形状と先行車の走行軌跡に応じた出力値をフィードバック出力値Ifbとして演算し、これらを加算した値を制御量Tiとする。このため、得られる情報を最大限に活用し、白線情報と先行車情報の双方の安定性の度合によって制御ゲインをリアルタイムに変更することで、白線が欠損、見え難くなった路面や、交差点等で白線が途切れた場合、さらには、悪天候により路面状態が悪く、安定した白線認識を行えない場合等、実際の多種多様な道路環境においても操舵支援制御を継続することができ、稼働範囲の広い使い勝手の良い運転支援装置を実現することができる。
【0123】
尚、本発明の実施の形態は、操舵系は通常の電動パワーステアリング装置1で構成した例で説明しているが、ステアバイワイヤ機構の操舵系でも本発明が適用できることは云うまでもない。
【0124】
また、本発明の実施の形態は、ステレオカメラからの画像情報を用いた例で説明したが単眼カメラからの画像情報を用いるようにしても良い。
【0125】
更に、本発明の実施の形態においては、操舵制御部20の制御ゲイン設定制御部20aでの制御ゲインの変更は、ドライバに違和感のないように、ある程度、所定の時定数のフィルタを通じて遅らせる等して変更することが望ましい。
【0126】
また、本発明の実施の形態における操舵制御部20の制御ゲイン設定制御部20aの制御ゲインの設定は、あくまでも一例であり、特に、
図7、
図8、
図9、
図10、
図12のフローチャートで設定される制御ゲインは、白線は検出しているが、安定した制御を行うには十分でないという状態であり、この場合の制御ゲインの大きさは、検出した白線長さlength_l、length_rや、白線と左候補点との差分の平均値err_line_l、err_line_rによって可変に設定できるようにしても良い。この場合、例えば、白線長さlength_l、length_rが長いほど対応する制御ゲインの値を大きくする、又は、白線と左候補点との差分の平均値err_line_l、err_line_rが小さいほど制御ゲインの値を大きくする。
【0127】
更に、特に、
図7、
図8、
図9、
図10、
図12のフローチャートでは、先行車を検出していない場合においては、十分な長さのない白線のみで操舵支援制御を行うことになるため、その検出した白線長さlength_l、length_rに応じて、制御ゲインの大きさを小さくしたり、或いは、操舵支援制御の制御量が小さく(場合によっては停止させる)ようにしても良い。
【0128】
また、本発明の実施の形態では、フィードフォワード制御部20bにおける制御ゲインとフィードバック制御部20cにおける制御ゲインを同じ値に設定するようにしているが、同じ値としなくても良い。例えば、フィードフォワード制御部20bにおける制御ゲインのみ可変設定し、フィードバック制御部20cの制御ゲインは一定とするようにしても良い。或いは、フィードフォワード制御部20bにおける制御ゲインの重み付けの差よりもフィードバック制御部20cにおける制御ゲインの重み付けの差を小さく(或いは、大きく)するようにする。或いは、この逆に、フィードバック制御部20cにおける制御ゲインのみ可変設定し、フィードフォワード制御部20bの制御ゲインは一定とするようにしても良い。或いは、フィードフォバック制御部20cにおける制御ゲインの重み付けの差よりもフィードフォワード制御部20bにおける制御ゲインの重み付けの差を小さく(或いは、大きく)するようにする。
【0129】
更に、本発明の実施の形態では、フィードフォワード制御もフィードバック制御においても、制御ゲインの合計は、1.0になるように例示したが、合計は1.0でなくとも良い。
【0130】
また、本発明の実施の形態のフィードバック制御部20cにおけるフィードバック制御を構成する(6)式は、前方注視点における二次予測制御を例に説明したが、これに限ることなく、単純な自車横位置と白線位置との差分に対する比例、微分、積分のそれぞれのフィードバック制御や、左右白線のヨー角によるフィードバック制御であっても良い。
【0131】
更に、本発明の実施の形態では、先行車と白線の認識特徴量によって、制御ゲインを変えているが、これに限ることなく、例えば、信号機、横断歩道、停止線等を検出した場合に自車両が交差点に入ったと判断し、先行車に対する制御ゲインを高め、白線に対する制御ゲインを下げるようにしても良い。