(57)【特許請求の範囲】
【請求項１】
車両の操舵角を検出する操舵角検出手段と、
車両の旋回が直進状態を示す範囲にあると判定された際に前記操舵角検出手段にて検出された車両の操舵角を、暫定操舵角中立位置として設定する暫定操舵角中立位置設定手段と、
前記操舵角検出手段にて検出された車両の操舵角と前記暫定操舵角中立位置との差から前記操舵角中立位置を引いた角度に基づき、前記操舵角中立位置を補正して新たな操舵角中立位置を求めることにより、操舵角中立位置の学習を行う操舵角中立位置学習手段と、
を備えた操舵角中立学習装置であって、
さらに、
過去の走行時に前記操舵角中立位置学習手段にて得られた操舵角中立位置の学習値の内、所定の学習初期期間内であり、且つ、学習度合いが最も進んでいた値を記憶しておく学習値記憶手段と、
現在の走行時に前記操舵角中立位置学習手段によって得た操舵角中立位置の学習値の学習度合いが、前記学習値記憶手段に記憶されている学習値の学習度合い未満の場合には、前記学習値記憶手段に記憶されている学習値に基づいて求めた操舵角中立位置を本装置による学習結果とし、一方、現在の走行時に前記操舵角中立位置学習手段によって得た操舵角中立位置の学習値の学習度合いが、前記学習値記憶手段に記憶されている学習値の学習度合い以上となった場合には、現在の走行時に前記操舵角中立位置学習手段によって得た操舵角中立位置を本装置による学習結果とする決定手段と、
を備えたことを特徴とする操舵角中立学習装置。
【請求項２】
請求項１記載の操舵角中立学習装置において、
前記操舵角中立位置学習手段は、
前記暫定操舵角中立位置の代わりに前記学習値記憶手段に記憶されている学習値を初期値として操舵角中立位置を学習する第２の学習も実行可能であり、
前記決定手段は、
前記学習値記憶手段に記憶されている学習値に基づいて求めた操舵角中立位置を本装置による学習結果とする際、前記操舵角中立位置学習手段による第２の学習によって得た操舵角中立位置の学習値を採用することを特徴とする操舵角中立学習装置。
【請求項３】
請求項２記載の操舵角中立学習装置において、
前記第２の学習によって得た学習値については、前記学習値記憶手段への記憶対象から除外することを特徴とする操舵角中立学習装置。
【請求項４】
請求項１〜３のいずれか記載の操舵角中立学習装置において、
前記決定手段は、
現在の走行時に前記操舵角中立位置学習手段によって得た操舵角中立位置の学習値の学習度合いが、前記学習値記憶手段に記憶されている学習値の学習度合いと等しくなった場合には、即座に、現在の走行時に前記操舵角中立位置学習手段によって得た操舵角中立位置の学習値を本装置による学習結果とすること
を特徴とする操舵角中立学習装置。
【請求項５】
請求項１〜３のいずれか記載の操舵角中立学習装置において、
前記決定手段は、
現在の走行時に前記操舵角中立位置学習手段によって得た操舵角中立位置の学習値の学習度合いが、前記学習初期期間の終期となった時点で、現在の走行時に前記操舵角中立位置学習手段によって得た操舵角中立位置の学習値を本装置による学習結果とすることを特徴とする操舵角中立学習装置。
【請求項６】
請求項１〜５のいずれか記載の操舵角中立学習装置の各手段としてコンピュータシステムを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、車両における操舵角中立学習装置及び操舵角中立学習装置をコンピュータシステムにて実現するための記録媒体に関する。
【０００２】
【従来の技術】
先行車との車間距離や相対速度を測定して、車間距離を一定に保つ車両用走行制御装置は周知である。
このような装置では、先行車までの距離を測定するための先行車検出装置を必ず備えている。この先行車検出装置としては、従来より、レーザレーダ装置が用いられている。しかし、レーザレーダから照射されるレーザビームの方向が固定されていると、カーブ走行中は、自車線上を遠方まで照射することができず、路肩の看板やリフレクタ等に加えて他車線走行している車両を、先行車として検出してしまうことがあった。
【０００３】
これを解決するものとして、レーザビームを所定範囲内で走査するスキャン型レーザレーダが提案されている。さらにカーブ検出手段を用いて、スキャン型レーザレーダで検知した障害物が、自車と同一車線上の車両かどうかを判断する先行車判定も提案されている。例えば、特開平４−２４８４８９号公報に開示された先行車検出装置では、ステアリング操舵角から算出したカーブ曲率半径Ｒに基づいて、先行車かどうかを判断している。
【０００４】
しかしながら、このカーブ曲率半径Ｒと実際の道路のカーブとの間にずれがあると、簡単に先行車を見失ったり、先行車以外のものを誤って先行車と認識することが有り、実用上問題である。
これ以外に、例えば、特開平６−１７６３００号公報に開示された先行車検出装置では、先行車らしさを確率で表す先行車確度という独特の概念を導入して、いる。このような先行車確度という概念をスキャン型にも適用すれば、先行車を簡単に見失うことなく、快適で安全な車間制御ができることが予想される。
【０００５】
また、この特開平６−１７６３００号公報の先行車検出装置では、スキャン型の先行車検出装置には、まったく適用することはできないことから、新たに自車線確率という概念を導入して、スキャン型にて先行車を適切に選択して車間制御することが可能な車間制御装置が提案されている（特開平８−２７９０９９号公報）。
【０００６】
【発明が解決しようとする課題】
しかし、特開平８−２７９０９９号公報の車間制御装置で、自車線確率を求めるための自車の進行路曲線を算出するために、ステアリングセンサにて検出される操舵角を入力としたフィルタ処理と、実操舵角の基準となる操舵角中立位置の学習とを行っている。
【０００７】
すなわち、前記車間制御装置では、車速が２０ｋｍ／ｈ以上であれば、ステアリングの操舵量によらず、全ての操舵角データを操舵角の中立位置の学習に利用している。しかし、走行路は、左右カーブが均等に存在する訳ではなく、例えば、右カーブが長時間にわたって頻度高く存在する場合がある。このようなときには、操舵角中立位置が、フィルタ処理により直進状態として得られるはずが、実際には右にずれて演算されることがある。
【０００８】
このようなずれも、次第に真の操舵角中立位置に収束するのであるが、このような収束は長時間に及ぶことから、短時間の走行では、実際とは異なる操舵角中立位置で、走行路の曲率や自車線確率が計算されて、精度を欠いてしまうおそれがあった。
【０００９】
このような従来における操舵角の中立位置制御の前記問題点を解決して、走行開始の早期に正確な操舵角の中立位置を推定して、精度の高い各種制御を可能とする操舵角中立学習装置等を提供することを目的として、本願出願人は、特願平９−３５１３６３号（特開平１１−１８０３２９号）において、次のような技術を提案した。つまり、車両旋回検出手段にて直進状態と判定し、その際に得られた暫定操舵角中立位置（Ｓ０）を中心に、車間制御の適用対象の走行路において通常走行と考えられる測定操舵角（str_eng ）を全て学習に利用すべく操舵角判定値（str_ref ）を設定している。これにより、早期に中立位置を推定しながらも、スラローム走行のように操舵分布が左右に歪んだ場合においても、それら全ての操舵角を学習に用いることにより、操舵角中立位置（Ｓｃ）がドリフトしてしまうことを抑制している。
【００１０】
しかしながら、この手法においても、走行開始直後に得られた暫定操舵角中立位置（Ｓ０）から、真の中立位置に近い操舵角中立位置（Ｓｃ）が学習によって得られるまでは、学習という手段を使う以上、ある程度の時間が必要となる。この所要時間がたとえ短くても、イグニッションオン直後の間は、自車線確率の精度が毎回低下し、車間制御の快適性が損なわれる可能性がある。
【００１１】
そこで、本発明は、従来における操舵角の中立位置制御の前記問題点を解決して、イグニッションオン直後から正確な操舵角の中立位置を推定して、精度の高い各種制御を可能とする操舵角中立学習装置及び操舵角中立学習装置をコンピュータシステムにて実現するための記録媒体の提供を目的とする。
【００１２】
【課題を解決するための手段及び発明の効果】
請求項１記載の操舵角中立学習装置においては、暫定操舵角中立位置設定手段が、車両の旋回が直進状態を示す範囲にあると判定された際に検出された車両の操舵角（Ｓ：この項中の説明では、実施の形態で用いられている関連記号を付すが、この記号により請求の範囲を限定することを意味するものではない。）を、暫定操舵角中立位置（Ｓ０）として設定する。なお、車両の旋回を検出するには、ヨーレート若しくは横方向加速度を検出するセンサや、左右の車輪の速度差を検出し、該速度差に基づいて車両の旋回を検出する装置などを用いることが考えられる。
【００１３】
そして、操舵角中立位置学習手段は、操舵角検出手段にて検出された車両の操舵角（Ｓ）と暫定操舵角中立位置（Ｓ０）との差（str_eng ）から、操舵角中立位置（Ｓｃ_A）を引いた角度（str_eng −Ｓｃ_A）に基づいて、操舵角中立位置（Ｓｃ_A）を補正して新たな操舵角中立位置（Ｓｃ_A）を求める。
【００１４】
このように学習された操舵角中立位置（Ｓｃ_A）は学習値記憶手段に記憶される。具体的には、過去の走行時に操舵角中立位置学習手段にて得られた操舵角中立位置（Ｓｃ_A）の学習値の内、所定の学習初期期間内であり、且つ、学習度合いが最も進んでいた値（Ｓｃ_ep ）が記憶される。したがって、これは直前の走行時の学習値とは限らず、２回以上前の走行時における学習値の可能性もある。また、所定の学習初期期間内とは、例えばイグニッションオン後に開始した学習回数が所定値（実施形態では３２７６８回）となるまでの期間である。
【００１５】
そして、決定手段が、学習値記憶手段に記憶されている学習値（Ｓｃ_ep ）に基づいて求めた操舵角中立位置（Ｓｃ_B）か、あるいは、現在の走行時に操舵角中立位置学習手段によって得た操舵角中立位置（Ｓｃ_A）のいずれかを本装置による学習結果とする。その際、現在の走行時に操舵角中立位置学習手段によって得た操舵角中立位置（Ｓｃ_A）の学習値の学習度合いが、学習値記憶手段に記憶されている学習値（Ｓｃ_ep ）の学習度合い（Ｃｖ_ep ）未満の場合には、学習値記憶手段に記憶されている学習値（Ｓｃ_ep ）に基づいて求めた操舵角中立位置（Ｓｃ_B）を学習結果とする。一方、現在の走行時に操舵角中立位置学習手段によって得た操舵角中立位置（Ｓｃ_A）の学習値の学習度合い（Ｃｖ_A）が、学習値記憶手段に記憶されている学習値（Ｓｃ_ep ）の学習度合い（Ｃｖ_ep ）以上となった場合には、現在の走行時に操舵角中立位置学習手段によって得た操舵角中立位置（Ｓｃ_A）を学習結果とする。
【００１６】
従来技術の課題として説明したように、走行開始直後に得られた暫定操舵角中立位置から、真の中立位置に近い操舵角中立位置が学習によって得られるまでは、学習という手段を使う以上、ある程度の時間が必要となる。そのため、車間制御への適用を想定した場合であれば、この所要時間がたとえ短くても、イグニッションオン直後の間は、自車線確率の精度が毎回低下することとなって、車間制御の快適性が損なわれる可能性がある。
【００１７】
それに対して本発明の操舵角中立学習装置の場合には、現在の走行時における学習値の信頼度が低いという想定される学習初期期間内においては、必要に応じて過去の学習結果も利用するようにした。但し、この際、制御初期期間中であるからといって一律に過去の学習結果の方を採用するのではなく、現在の学習値と、過去の学習結果を利用した場合とで、信頼度が高いと推定される方を採用する。この信頼度を考える上で、次のような考察をした。
【００１８】
▲１▼制御初期期間内においては、学習度合いが進んでいるほど信頼度が高いと考えられる。そこで、過去の走行時に学習された値の内で学習度合いが最も進んだ場合の学習値を、最も信頼度が高い値として記憶しておく。
▲２▼一方、過去の走行時に学習された値と現在の走行において学習された値とでは、原則的に今回の走行における学習値の方が信頼度が高いと考えられる。これは、例えばタイヤ交換などで直進性が変化する場合もあることなどを鑑みたためであり、特にフェイルセーフ的な思想に基づくものである。
【００１９】
これらの観点から、上述したような決定（選択）をした。つまり、現在の走行時に実行する学習の学習度合い（Ｃｖ_A）が、記憶されている過去の学習値（Ｓｃ_ep ）の学習度合い（Ｃｖ_ep ）になるまでは、上述の観点▲１▼から、信頼度の高いと推定される過去の学習値（Ｓｃ_ep ）を採用する。そして、両学習度合いが一致した場合（Ｃｖ_A＝Ｃｖ_ep ）には、上述の観点▲２▼からすると、信頼度の高いと推定される現在の学習値（Ｓｃ_A）を採用することが望ましいのであるが、これに関しては、次のような形態を考える必要がある。
【００２０】
つまり、過去の学習値（Ｓｃ_ep ）がそのままの状態であれば、学習度合いが同じ場合には現在の学習値（Ｓｃ_A）を採用すればよい。しかし、請求項２に示すように、操舵角中立位置学習手段が、暫定操舵角中立位置（Ｓ０）の代わりに学習値記憶手段に記憶されている学習値（Ｓｃ_ep ）を初期値として操舵角中立位置（Ｓｃ_B）を学習する第２の学習も実行可能である場合には、事情は少し変わってくる。なぜなら、Ｃｖ_A＝Ｃｖ_ep となった場合には、Ｃｖ_B＝Ｃｖ_ep ＋Ｃｖ_ep となり、Ｃｖ_Bは常にＣｖ_AよりもＣｖ_ep 分だけ学習度合いが進んでいることになるからである。
【００２１】
そこで、このような事情も加味して、Ｃｖ_A≧Ｃｖ_ep の場合においても、学習値記憶手段に記憶されている学習値（Ｓｃ_ep ）に基づいて求めた操舵角中立位置（Ｓｃ_B）を学習結果としてもよい。つまり、請求項２のような第２の学習を用いる場合であれば、Ｃｖ_A≧Ｃｖ_ep の場合であっても、Ｃｖ_B＞Ｃｖ_Aであるため、過去の学習値（Ｓｃ_ep ）を初期値として第２の学習によって学習された操舵角中立位置（Ｓｃ_B）の方を採用することも、上述の観点▲１▼から適切な場合もあるからである。
【００２２】
なお、このような第２の学習を行うか否かは関係なく、請求項４に示すような決定の仕方を採用しても良い。つまり、現在の走行時に操舵角中立位置学習手段によって得た操舵角中立位置（Ｓｃ_A）の学習値の学習度合い（Ｃｖ_A）が、学習値記憶手段に記憶されている学習値（Ｓｃ_ep ）の学習度合い（Ｃｖ_ep ）と等しくなった場合には、即座に、現在の走行時に操舵角中立位置学習手段によって得た操舵角中立位置（Ｓｃ_A）を学習結果とするのである。これは、上述の観点▲２▼を優先させた場合である。この場合のＳｃ_BからＳｃ_Aへの乗り換え時期については、Ｓｃ_A，Ｓｃ_Bそのものの値、あるいはＳｃ_AとＳｃ_Bの差分などに基づいて適宜決定することが考えられる。
【００２３】
また、このようないずれの学習値を採用するかといった決定を行うのは学習初期期間内のみであり、第２の学習を行うか否かは関係なく、請求項５に示すように、学習初期期間の終期（Ｃｖ_A＝３２７６８）になった場合には、現在の学習値（Ｓｃ_A）に乗り換える。つまり、第２の学習を行う場合にはＣｖ_B＞Ｃｖ_Aであっても現在の学習値（Ｓｃ_A）に乗り換えるのである。学習初期期間を経過した後は、上述の観点▲２▼からも、このようにした方が好ましいからである。
【００２４】
このように、本発明の操舵角中立学習装置によれば、イグニッションオン直後から正確な操舵角の中立位置を推定して、精度の高い各種制御を可能とすることができる。
なお、請求項２の操舵角中立学習装置の場合には、操舵角中立位置学習手段が第２の学習も実行可能であることを前提としたが、この場合は、請求項３に示すように、第２の学習によって得た学習値については学習値記憶手段への記憶対象から除外するようにしてもよい。これは、「学習初期期間内であり、且つ、学習度合いが最も進んでいた値」を記憶することを前提としているため、過去の学習値（Ｓｃ_ep ）を初期値として得た操舵角中立位置（Ｓｃ_B）を記憶してしまうこととなる。しかし、上述した観点▲２▼に基づけば、原則的には今回の学習値の信頼度が高く、またフェイルセーフの目的からも、記憶する学習値としては第２の学習によって得た値は採用しないようにすることが好ましいのである。
【００２５】
また、請求項６に示すように、このような操舵角中立学習装置の各手段をコンピュータシステムにて実現する機能は、例えば、コンピュータシステム側で起動するプログラムとして備えることができる。このようなプログラムの場合、例えば、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ハードディスク等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ＲＯＭやバックアップＲＡＭをコンピュータ読み取り可能な記録媒体として前記プログラムを記録しておき、このＲＯＭあるいはバックアップＲＡＭをコンピュータシステムに組み込んで用いても良い。
【００２６】
【発明の実施の形態】
図１は、上述した発明が適用された操舵角中立学習装置が組み込まれた車間制御用電子制御装置２（以下、「車間制御ＥＣＵ」と称する。）及びブレーキ電子制御装置４（以下、「ブレーキＥＣＵ」と称する。）を中心に示す自動車に搭載されている各種制御回路の概略構成を表すブロック図である。
【００２７】
車間制御ＥＣＵ２は、マイクロコンピュータを中心として構成されている電子回路であり、現車速（Ｖｎ）信号、操舵角（str_eng ，Ｓ０）信号、ヨーレート信号、目標車間時間信号、ワイパスイッチ情報、アイドル制御やブレーキ制御の制御状態信号等をエンジン電子制御装置６（以下、「エンジンＥＣＵ」と称する。）から受信する。そして、車間制御ＥＣＵ２は、この受信したデータに基づいて、操舵角中立学習装置として後述する操舵角中立学習処理により操舵角中立位置を演算したり、カーブ曲率推定装置として後述する処理にてカーブ曲率半径Ｒを推定したり、車間制御演算をしている。
【００２８】
なお、車間制御ＥＣＵ２は、不揮発性メモリとしてのＥＥＰＲＯＭ２ａを備えており、過去（イグニンションオン前）に中立学習した結果を記憶しておくように構成されている。このＥＥＰＲＯＭ２ａに記憶される学習値としては、操舵角中立位置の記憶値Ｓｃ_ep 及び学習度合いカウンタＣｖ_ep が挙げられる。これらについては、後で詳しく説明する。
【００２９】
レーザレーダセンサ３は、レーザによるスキャニング測距器とマイクロコンピュータとを中心として構成されている電子回路であり、スキャニング測距器にて検出した先行車の角度や相対速度等、及び車間制御ＥＣＵ２から受信する現車速（Ｖｎ）信号、カーブ曲率半径Ｒ等に基づいて、車間制御装置の一部の機能として先行車の自車線確率を演算し、相対速度等の情報も含めた先行車情報として車間制御ＥＣＵ２に送信する。また、レーザレーダセンサ３自身のダイアグノーシス信号も車間制御ＥＣＵ２に送信する。
【００３０】
なお、前記スキャニング測距器は、車幅方向の所定角度範囲に送信波あるいはレーザ光をスキャン照射し、物体からの反射波あるいは反射光に基づいて、自車と前方物体との距離をスキャン角度に対応して検出可能なレーダ手段として機能している。
【００３１】
さらに、車間制御ＥＣＵ２は、このようにレーザレーダセンサ３から受信した先行車情報に含まれる自車線確率等に基づいて、車間制御すべき先行車を決定し、先行車との車間距離を適切に調節すべく、エンジンＥＣＵ６に、目標加速度信号、フューエルカット要求信号、ＯＤカット要求信号、３速シフトダウン要求信号、警報要求信号、ダイアグノーシス信号、表示データ信号等を送信している。
【００３２】
ブレーキＥＣＵ４は、マイクロコンピュータを中心として構成されている電子回路であり、車両の操舵角を検出する操舵角検出手段としてのステアリングセンサ８、車両旋回を検出するための手段としてヨーレートを検出するヨーレートセンサ１０、及び各車輪の速度を検出する車輪速センサ１２から操舵角やヨーレートを求めて、これらのデータをエンジンＥＣＵ６を介して車間制御ＥＣＵ２に送信したり、ブレーキ力を制御するためにブレーキ油圧回路に備えられた増圧制御弁・減圧制御弁の開閉をデューティ制御するブレーキアクチュエータ２５を制御している。またブレーキＥＣＵ４は、エンジンＥＣＵ６を介する車間制御ＥＣＵ２からの警報要求信号に応じて警報ブザー１４を鳴動する。
【００３３】
エンジンＥＣＵ６は、マイクロコンピュータを中心として構成されている電子回路であり、スロットル開度センサ１５、車両速度を検出する車速検出手段としての車速センサ１６、ブレーキの踏み込み有無を検出するブレーキスイッチ１８、クルーズコントロールスイッチ２０、クルーズメインスイッチ２２、及びその他のセンサやスイッチ類からの検出信号あるいはボデーＬＡＮ２８を介して受信するワイパースイッチ情報やテールスイッチ情報を受信し、さらに、ブレーキＥＣＵ４からの操舵角（str_eng，Ｓ０ ）信号やヨーレート信号、あるいは車間制御ＥＣＵ２からの目標加速度信号、フューエルカット要求信号、ＯＤカット要求信号、３速シフトダウン要求信号、警報要求信号、ダイアグノーシス信号、表示データ信号等を受信している。
【００３４】
そして、エンジンＥＣＵ６は、この受信した信号から判定する運転状態に応じて、駆動手段としての内燃機関（ここでは、ガソリンエンジン）のスロットル開度を調整するスロットルアクチュエータ２４、トランスミッション２６のアクチュエータ駆動段に対して駆動命令を出力している。これらのアクチュエータにより、内燃機関の出力、ブレーキ力あるいは変速シフトを制御することが可能となっている。なお、本実施形態の場合のトランスミッション２６は５速オートマチックトランスミッションであり、４速の減速比が「１」に設定され、５速の減速比が４速よりも小さな値（例えば、０．７）に設定された、いわゆる、４速＋オーバードライブ（ＯＤ）構成になっている。したがって、上述したＯＤカット要求信号が出された場合、トランスミッション２６が５速（すなわち、オーバードライブのシフト位置）にシフトしていた場合には４速へシフトダウンする。また、シフトダウン要求信号が出された場合には、トランスミッション２６が４速にシフトしていた場合には３速へシフトダウンする。その結果、これらのシフトダウンによって大きなエンジンブレーキが生じ、そのエンジンブレーキにより自車の減速が行われることとなる。
【００３５】
また、エンジンＥＣＵ６は、必要な表示情報を、ボデーＬＡＮ２８を介して、ダッシュボードに備えられているＬＣＤ等の表示装置（図示していない。）に送信して表示させたり、あるいは現車速（Ｖｎ）信号、操舵角（str_eng，Ｓ０ ）信号、ヨーレート信号、目標車間時間信号、ワイパスイッチ情報信号、アイドル制御やブレーキ制御の制御状態信号を、車間制御ＥＣＵ２に送信している。
【００３６】
ステアリングセンサ８は、図２（ａ）に示すごとくのフォトインタラプタ式のセンサであり、金属円板３２と回転検出回路３４とから構成されている。金属円板３２は、図２（ｂ）の平面図に示すごとくスリット３２ａを環状に多数配列しており、回転検出回路３４に備えられた２つのレーザダイオード３４ａ，３４ｂから出力される光が金属円板３２のスリット３２ａを通過すると、その光を２つのフォトトランジスタ３４ｃ，３４ｄでそれぞれ受光し、その受光のオン／オフ状態が、検出回路３４ｅにて端子の電圧出力信号ＳＳ１，ＳＳ２に変換されて出力される。ＶＩＮは電源ライン、ＧＮＤは接地ラインである。
【００３７】
金属円板３２は、図示していない自動車のハンドル軸に設けられているため、ハンドル軸の回転、すなわち操舵に応じて、２つの端子の出力信号ＳＳ１，ＳＳ２が図３に示すごとく出力される。２つのレーザダイオード３４ａ，３４ｂとスリット３２ａの配列との関係により、金属円板３２が左回転する（ハンドルが左に切られる）と出力信号ＳＳ１の立ち下がりタイミングから出力信号ＳＳ２の立ち下がりタイミングまでの時間が、出力信号ＳＳ２の立ち下がりタイミングから出力信号ＳＳ１の立ち下がりタイミングまでの時間よりも短くなる。また、金属円板３２が右回転する（ハンドルが右に切られる）と出力信号ＳＳ１の立ち下がりタイミングから出力信号ＳＳ２の立ち下がりタイミングまでの時間が、出力信号ＳＳ２の立ち下がりタイミングから出力信号ＳＳ１の立ち下がりタイミングまでの時間よりも長くなる。
【００３８】
このことから、操舵の方向が判明する。さらに、出力信号ＳＳ１，ＳＳ２の立ち下がりあるいは立ち上がりのカウントにより操舵角度が判明する。なお、左回転における出力信号ＳＳ１の立ち下がりから出力信号ＳＳ２の立ち下がりまでの操舵角度、または右回転における出力信号ＳＳ２の立ち下がりから出力信号ＳＳ１の立ち下がりまでの操舵角度は１．１２５ｄｅｇである。したがって、ステアリングセンサ８のパルス信号で直接得られる操舵角の測定精度は、１．１２５ｄｅｇまでである。しかし、後述する操舵角中立位置学習制御で得られる操舵角中立位置Ｓｃは、１．１２５ｄｅｇよりも高い精度で推定できる。
【００３９】
次に、図４のフローチャートに示す、ブレーキＥＣＵ４の処理の一部として行われる操舵角演算処理を説明する。この操舵角演算処理は、Ｓ１２０，Ｓ１３において車両直進状態を判定しており、Ｓ１１０，Ｓ１４０において暫定操舵角中立位置を設定している。
【００４０】
まず、暫定操舵角中立位置Ｓ０が未設定であるか否かが判定される（Ｓ１１０）。イグニッションがオンされて電源が供給され、ブレーキＥＣＵ４に立ち上がった際には、暫定操舵角中立位置Ｓ０は未設定であるので（Ｓ１１０：ＹＥＳ）、次にエンジンＥＣＵ６を介して車速センサ１６から得られる現車速Ｖｎが所定速度、ここでは３０ｋｍ／ｈより高いか否かが判定される（Ｓ１２０）。現車速Ｖｎが３０ｋｍ／ｈより高ければ（Ｓ１２０：ＹＥＳ）、ヨーレートセンサ１０から得られるヨーレートの絶対値が１ｄｅｇ／ｓよりも小さいか否かが判定される（Ｓ１３０）。
【００４１】
Ｓ１２０，Ｓ１３０は、車両の旋回が直進状態を示す範囲にあるか否かを判定する処理であり、これらＳ１２０，Ｓ１３０のいずれか一つでも満足されなければ（Ｓ１２０：ＮＯまたはＳ１３０：ＮＯ）、本操舵角演算処理では何もなされずに処理を終了する。
【００４２】
車両が走行を開始して、車速が３０ｋｍ／ｈを越え、かつ一時的にでもヨーレートの絶対値が１ｄｅｇ／ｓより小さくなるような直進走行を行った場合には（Ｓ１２０：ＹＥＳ、かつ、Ｓ１３０：ＹＥＳ）、この時の操舵角Ｓを暫定操舵角中立位置Ｓ０として設定する（Ｓ１４０）。
【００４３】
そして、次に制御に用いるための操舵角Ｓの測定が開始され（Ｓ１５０）、この測定された操舵角Ｓと、Ｓ１４０にて設定された暫定操舵角中立位置Ｓ０とから次式のごとく計算して、測定操舵角str_eng （操舵角Ｓと暫定操舵角中立位置Ｓ０との差、すなわち、暫定操舵角中立位置Ｓ０を原点とする操舵角）を求める（Ｓ１６０）。
str_eng←Ｓ−Ｓ０
これ以後は、暫定操舵角中立位置Ｓ０が設定されたので、Ｓ１１０では「ＮＯ」と判定されて、本操舵角演算処理ではＳ１５０，Ｓ１６０のみが行われて、操舵角Ｓの測定処理（Ｓ１５０）と、測定操舵角str_eng の更新処理（Ｓ１６０）とが繰り返される。すなわち、Ｓ１４０の暫定操舵角中立位置Ｓ０設定は、最初に一度のみ行われる。
【００４４】
ここで、操舵角Ｓの測定は、図５に示す関係により、出力信号ＳＳ１，ＳＳ２の変化がある毎にＳｄを求めて、次式のごとく算出される。
Ｓ←Ｓ＋Ｓｄ×１．１２５（ｄｅｇ）
こうして求められた測定操舵角str_eng は、図示していない送信処理により、ヨーレート、その他のデータと共に、ブレーキＥＣＵ４からエンジンＥＣＵ６へ送信される。
【００４５】
エンジンＥＣＵ６は、これらのデータの送信を仲介し、他のデータと共に、測定操舵角str_eng を車間制御ＥＣＵ２に送信する。
次に、車間制御ＥＣＵ２により実行される処理の一部である操舵角中立位置学習処理について説明する。この操舵角中立位置学習処理に関しては、２種類の学習値、すなわち学習値Ｓｃ_A，Ｓｃ_Bそれぞれについて実行するため、順番に説明していく。
【００４６】
図６は、操舵角中立位置Ｓｃ_A 学習処理を示すフローチャートである。
まず、測定操舵角str_eng をエンジンＥＣＵ６より受信したか否かが判定される（Ｓ２２０）。測定操舵角str_eng が受信されていなければ（Ｓ２２０：ＮＯ）、本操舵角中立位置Ｓｃ_A学習処理では何もなされない。
【００４７】
測定操舵角str_eng が受信されると（Ｓ２２０：ＹＥＳ）、次に現車速Ｖｎが４０ｋｍ／ｈ以上か否かが判定される（Ｓ２３０）。現車速Ｖｎが４０ｋｍ／ｈ以上であれば（Ｓ２３０：ＹＥＳ）、次に学習度合いカウンタＣｖ_Aが６５５３６未満か否かが判定される（Ｓ２４０）。学習度合いカウンタＣｖ_Aが６５５３６未満であれば（Ｓ２４０：ＹＥＳ）、次に測定操舵角str_eng の絶対値が操舵角判定閾値str_ref 以下か否かが判定される（Ｓ２４１）。学習度合いカウンタＣｖ_Aが６５５３６以上であれば（Ｓ２４０：ＮＯ）、次に測定操舵角str_eng と操舵角中立位置Ｓｃとの差の絶対値が、予め推定される暫定操舵角中立位置Ｓ０の誤差として６ｄｅｇを操舵角判定閾闇値str_ref から引いた値以下か否かが判定される（Ｓ２４２）。
【００４８】
Ｓ２３０が満足されなければ（Ｓ２３０：ＮＯ）、本操舵角中立位置学習処理では何もなされずに処理を終了する。また、Ｓ２４１、Ｓ２４２がそれぞれ満足されなければ（Ｓ２４１：ＮＯまたはＳ２４２：ＮＯ）、本操舵角中立位置学習処理では何もなされずに処理を終了する。
【００４９】
この操舵角判定閾値str_ref は、特許請求の範囲において示す「所定範囲」の境界に相当し、次の点を考慮して設定されている。すなわち、本実施形態においては、車間制御に利用することを前提としていため、その車間制御の適用が想定されている走行路の曲率及び車両速度に基づいて、その想定範囲内での走行路の曲率及び車両速度において取り得る全ての角度が含まれるように、この操舵角判定閾値str_ref が設定されている。
【００５０】
例えば、車間制御が、高速道路などのように４０ｋｍ／ｈ以上での走行がほとんどであると考えられる状況においてのみ適用される場合には、４０ｋｍ／ｈで走行した場合に最も大きくなり得る操舵角についても取り込めるような値に設定すればよい。また、例えば、そのような高速道路において最小の曲率半径が２５０ｍのカーブがあるとすると、そのカーブにて取り得る最大の操舵角も考慮して設定すればよい。
【００５１】
このように操舵角判定閾値str_ref を設定することで、車速４０ｋｍ／ｈで通常のクルーズ走行する場合であれば、運転者が操舵する操舵角を全てとりこめるようになる。すなわち、Ｓ２４１にて肯定判断となる。ただし、この操舵角判定閾値str_ref には、車両旋回検出手段にて直進状態と判定された際に得られる暫定操舵角中立位置Ｓ０の誤差が含まれる。従って、学習度合が進んだ場合は、Ｓ２４０が満足されず（Ｓ２４０：ＮＯ）Ｓ２４２にて判定される。このステップでは、学習度合が進んだことにより、判定の閾値を予め推定される暫定操舵角中立位置Ｓ０の誤差６ｄｅｇ分を補正すると共に、操舵角中立位置Ｓｃ_Aが真の操舵角中立位置に近いと判断して、操舵角判定閾値str_ref との比較も、それまで測定操舵角str_eng を対象としていたのに代えて、測定操舵角str_eng から操舵角中立位置Ｓｃ_Aを引いた角度を対象とする。
【００５２】
車間制御が許容されるような状況での通常走行と判断された場合（Ｓ２４１：ＹＥＳまたはＳ２４２：ＹＥＳ）、車間制御ＥＣＵ２が立ち上がって最初にＳ２３０及びＳ２４０の条件が成立したか否かが判定される（Ｓ２５０）。
最初であれば（Ｓ２５０：ＹＥＳ）、学習対象の操舵角中立位置Ｓｃ_Aに初期値として、暫定操舵角中立位置Ｓ０が設定され、学習度合いカウンタＣｖ_Aは０に設定される（Ｓ２６０）。これ以後の処理では、Ｓ２５０にて「ＮＯ」と判定されるので、操舵角中立位置Ｓｃ_A及び学習度合いカウンタＣｖ_Aの初期化（Ｓ２６０）は実行されない。
【００５３】
次に、学習度合いカウンタＣｖ_Aが次式のごとく演算される（Ｓ２７０）。
Ｃｖ_A（ｎ）←Ｃｖ_A（ｎ−１）＋α
ここで、ｎは、現在の処理を表し、ｎ−１は前回の処理を表している。なお、学習度合いカウンタＣｖ#Aの初期値Ｃｖ_A（０）＝０である。
【００５４】
また、増加値αは、図９に示すごとくである。図９では、現在速Ｖｎが高いほど増加値αは大きく設定されている。すなわち、現車逆Ｖｎが高いほど学習度合いカウンタＣｖの増加は速くなる。ただし、学習度合いカウンタＣｖ_Aは値６５５３６を上限としている。本実施形態においては、車間制御が許容される状況で通常走行する場合の操舵角のほとんど全てを学習に利用するため、比較的大きな操舵角を学習に利用することになり、結果的に操舵角中立位置Ｓｃの値のフラツキが大きくなる。従って、後述するように、そのフラツキを抑制するためにＣｖ値を大きくとる必要があり、上限値を６５５３６まで大きくした。
【００５５】
Ｓ２７０の次に、操舵角中立位置Ｓｃ_Aの学習演算が次式のごとく行われる（Ｓ２９０）。
Ｓｃ_A（ｎ）←Ｓｃ_A（ｎ−１）＋｛str_eng−Ｓｃ_A（ｎ−１）｝×α／Ｃｖ_A（ｎ）
ｎ，ｎ−１，αについては前述したごとくである。
【００５６】
すなわち、上式の学習演算においては、測定操舵角str_engから、操舵角中立位置Ｓｃ_A（ｎ−１）を引いた角度｛str_eng−Ｓｃ_A（ｎ−１）｝に基づいて、操舵角中立位置Ｓｃ_A（ｎ−１）を補正して新たな操舵角中立位置Ｓｃ_A（ｎ）を求めることにより、操舵角中立位置Ｓｃ_Aの学習を行っている。
【００５７】
角度｛str_eng−Ｓｃ_A（ｎ−１）｝は、そのままではなく、角度｛str_eng−Ｓｃ_A（ｎ−１）｝の所定割合α／Ｃｖ（ｎ）が操舵角中立位置Ｓｃ_A（ｎ−１）に加えられることにより操舵角中立位置Ｓｃ_A（ｎ−１）が補正されて、新たな操舵角中立位置Ｓｃ_A（ｎ）が形成されている。
【００５８】
以後、測定操舵角str_eng が得られる毎に、Ｓ２３０の条件が成立し、かつＳ２４１，Ｓ２４２のいずれかが成立すれば、Ｓ２５０，Ｓ２９０の処理が実行されて、操舵角中立位置Ｓｃが学習されていく。
すなわち、ブレーキＥＣＵ４が実行する操舵角演算処理（図４）にて、車両の旋回が直進状態を示す範囲にあると判定された際における、ステアリングセンサ８にて検出された車両の操舵角Ｓを暫定操舵角中立位置Ｓ０として設定する。そして、車間制御ＥＣＵ２が実行する操舵角中立位置学習処理（図６）にて、この暫定操舵角中立位置Ｓ０を用いて（str_eng ←Ｓ−Ｓ０）、操舵角中立位置Ｓｃ_Aの学習を行う。
【００５９】
具体的には、操舵角中立位置学習処理（図６）では、暫定操舵角中立位置Ｓ０を中心にして、車間制御が許容される状況で通常走行する場合の操舵角のほとんど全てを学習に利用するために設定された操舵角判定閾値str_ref の範囲内に、ステアリングセンサ８にて検出された車両の操舵角Ｓが存在する際に、ステアリングセンサ８にて検出された車両の操舵角Ｓと暫定操舵角中立位置Ｓ０との差（測定操舵角str_eng ）から、操舵角中立位置Ｓｃ_Aを引いた角度（str_eng −Ｓｃ_A）に基づいて、操舵角中立位置Ｓｃ_Aを補正して新たな操舵角中立位置Ｓｃ_Aを求める。
【００６０】
一方、図７は、操舵角中立位置Ｓｃ_B 学習処理を示すフローチャートである。
この学習処理は、基本的には、図６に示す操舵角中立位置Ｓｃ_A学習処理におけるＳｃ_AをＳｃ_Bに代えたものであり、唯一、Ｓ３６０にて設定される初期値が異なっている。そのため、Ｓ３６０以外の説明は簡単に説明を済ますこととする。
【００６１】
処理が開始され、測定操舵角str_eng をエンジンＥＣＵ６より受信し（Ｓ３２０：ＹＥＳ）、現車速Ｖｎが４０ｋｍ／ｈ以上であれば（Ｓ２３０：ＹＥＳ）、学習度合いカウンタＣｖ_Bが６５５３６未満か否かが判定される（Ｓ３４０）。そして、学習度合いカウンタＣｖ_Bが６５５３６未満であれば（Ｓ３４０：ＹＥＳ）、次に測定操舵角str_eng の絶対値が操舵角判定閾値str_ref 以下か否かが判定される（Ｓ２４１）。そして、学習度合いカウンタＣｖ_Bが６５５３６以上であれば（Ｓ２４０：ＮＯ）、次に測定操舵角str_eng と操舵角中立位置Ｓｃ#Bとの差の絶対値が、予め推定される暫定操舵角中立位置Ｓ０の誤差として６ｄｅｇを操舵角判定閾闇値str_ref から引いた値以下か否かが判定される（Ｓ３４２）。
【００６２】
車間制御が許容されるような状況での通常走行と判断された場合（Ｓ３４１：ＹＥＳまたはＳ３４２：ＹＥＳ）、車間制御ＥＣＵ２が立ち上がって最初にＳ３３０及びＳ３４０の条件が成立したか否かが判定され（Ｓ３５０）、最初であれば（Ｓ３５０：ＹＥＳ）、Ｓ３６０へ移行する。
【００６３】
図６の操舵角中立位置Ｓｃ_A学習処理におけるＳ２６０では、Ｓｃ_Aの初期値として暫定操舵角中立位置Ｓ０を設定し、学習度合いカウンタＣｖ_Aの初期値として０を設定したが、この図７に示す操舵角中立位置Ｓｃ_Bの学習処理においては、Ｓｃ_Bの初期値としてＥＥＰＲＯＭ２ａ（図１参照）から読み出してきた記憶値Ｓｃ_ep を設定し、学習度合いカウンタＣｖ_Bの初期値としてもやはり記憶値Ｃｖ_ep を設定する。これらの記憶値Ｓｃ_ep，Ｃｖ_epについては後で詳しく説明する。
【００６４】
続くＳ３７０では、学習度合いカウンタＣｖ_Bが次式のごとく演算される。
Ｃｖ_B（ｎ）←Ｃｖ_B（ｎ−１）＋α
なお、増加値αは、図９に示すごとくである。
【００６５】
Ｓ３７０の次に、操舵角中立位置Ｓｃ_Bの学習演算が次式のごとく行われる（Ｓ３９０）。
Ｓｃ_B（ｎ）←Ｓｃ_B（ｎ−１）＋｛str_eng−Ｓｃ_B（ｎ−１）｝×α／Ｃｖ_B（ｎ）
以後、測定操舵角str_eng が得られる毎に、Ｓ３３０の条件が成立し、かつＳ３４１，Ｓ３４２のいずれかが成立すれば、Ｓ３５０，Ｓ３９０の処理が実行されて、操舵角中立位置Ｓｃが学習されていく。
【００６６】
次に、車間制御ＥＣＵ２により実行される処理の一部である、制御に利用する操舵角中立位置Ｓｃ_Sの選択処理について図８のフローチャートを参照して説明する。この処理は、図６，図７においてそれぞれ得られた２種類の学習値Ｓｃ_A，Ｓｃ_Bの内のいずれを制御に利用するかを選択する処理である。
【００６７】
図８の最初のステップＳ４１０では、操舵角中立位置の記憶値Ｓｃ_ep がＥＥＰＲＯＭ２ａに存在するか否かを判断し、操舵角中立位置の記憶値Ｓｃ_ep がある場合には（Ｓ４１０：ＹＥＳ）、イグニッションオン後、その記憶値の書き換えが未実施であるか否かを判断する（Ｓ４２０）。書き換えがなされていないのであれば（Ｓ４２０：ＹＥＳ）、操舵角中立位置Ｓｃ_Sとして学習値Ｓｃ_Bを採用し、本処理ルーチンを終了する。
【００６８】
一方、ＥＥＰＲＯＭ２ａ内に操舵角中立位置の記憶値Ｓｃ_ep がない場合（Ｓ４１０：ＮＯ）、あるいは、記憶値Ｓｃ_ep があっても、イグニッションオン後に書き換えが実施されている場合には（Ｓ４２０：ＮＯ）、操舵角中立位置Ｓｃ_Sとして学習値Ｓｃ_Aを採用し、本処理ルーチンを終了する。
【００６９】
次に、車間制御ＥＣＵ２により実行される処理の一部である、操舵角中立位置学習用の記憶値Ｓｃ_ep，Ｃｖ_epの書き換え処理について、図１０のフローチャートを参照して説明する。
ＥＥＰＲＯＭ２ａ内に記憶値Ｓｃ_ep，Ｃｖ_epがあるかどうかを判断し（Ｓ５１０）、記憶値がある場合には（Ｓ５１０：ＹＥＳ）、学習度合いカウンタの記憶値Ｃｖ_ep が３２７６８未満であるか否かを判断する（Ｓ５２０）。学習度合いカウンタ記憶値Ｃｖ_ep が３２７６８未満であれば（Ｓ５２０：ＹＥＳ）、イグニッションオン後、一度でもＥＥＰＲＯＭ２ａへの記憶がなされたか否かを判断する（Ｓ５３０）。一度も記憶されていない場合には（Ｓ５３０：ＮＯ）、Ｓ５６０へ移行する。
【００７０】
このＳ５６０では、図６の処理にて得られる操舵角中立位置の学習値Ｓｃ_Aが記憶値Ｓｃ_ep 以上となっているか否かを判断する（Ｓ５６０）。そして、学習値Ｓｃ_Aが記憶値Ｓｃ_ep 未満の場合には（Ｓ５６０：ＮＯ）、記憶値の書き換えは行わずに本処理を終了する。また、学習値Ｓｃ_Aが記憶値Ｓｃ_ep 以上の場合には（Ｓ５６０：ＹＥＳ）、Ｓ５５０へ移行して記憶値の書き換えを行う。すなわち、操舵角中立位置については、記憶値Ｓｃ_ep として、その時点での学習値Ｓｃ_Aの記憶値Ｓｃmem_A を採用し、その値に書き換える。また、学習度合いカウンタとしては、記憶値Ｃｖ_ep として、Ｃｖk_A を採用し、その値に書き換える。なお、Ｃｖk_A とは、Ｃｖ_Aを超えない２のｎ乗の最大値である。
【００７１】
一方、イグニッションオン後、一度でもＥＥＰＲＯＭ２ａへの記憶がなされている場合には（Ｓ５３０：ＹＥＳ）、Ｓ５４０へ移行して、学習度合いカウンタの学習値Ｃｖ_Aが記憶値Ｃｖ_ep の２倍以上であるか否かを判断する。ここで否定判断された場合、つまりＣｖ_A＜Ｃｖ_ep ×２である場合には、そのまま本処理を終了するが、肯定判断された場合、つまりＣｖ_A≧Ｃｖ_ep ×２である場合には、Ｓ５５０へ移行して記憶値の書き換えを行う。
【００７２】
ここまではＳ５２０にて肯定判断、つまり学習度合いカウンタ記憶値Ｃｖ_ep が３２７６８未満である場合の処理について説明したが、学習度合いカウンタ記憶値Ｃｖ_ep が３２７６８以上の場合には（Ｓ５２０：ＮＯ）、学習値Ｓｃ_Aの学習度合いカウンタＣｖ_Aが３２７６８以上となる状態が初めて成立したか否かを判断する（Ｓ５７０）。そして、Ｃｖ_A≧３２７６８が初めて成立した場合には（Ｓ５７０：ＹＥＳ）、学習値Ｓｃ_Aと記憶値Ｓｃ_ep との差の絶対値が０．６ｄｅｇよりも大きいか否かを判断する。その絶対値が０．６ｄｅｇよりも大きければ（Ｓ５８０：ＹＥＳ）、Ｓ５５０へ移行して記憶値の書き換えを行うが、絶対値が０．６ｄｅｇ以下ならば（Ｓ５８０：ＮＯ）、そのまま本処理を終了する。
【００７３】
ここまではＳ５１０にて肯定判断、つまり記憶値がある場合の処理について説明したが、記憶値がない場合には（Ｓ５１０：ＮＯ）、Ｓ５９０へ移行して、学習値Ｓｃ_Aの学習度合いカウンタＣｖ_Aが２０４８以上か否かを判断する。そして、Ｃｖ_A≧２０４８であれば（Ｓ５９０：ＹＥＳ）、Ｓ５５０へ移行して記憶値の書き換えを行うが、Ｃｖ_A＜２０４８であれば（Ｓ５９０：ＮＯ）、そのまま本処理を終了する。
【００７４】
次に、車間制御ＥＣＵ２により実行される処理の一部である操舵角中立位置学習リセット処理について説明する。操舵角中立位置学習リセット処理のフローチャートを図１１に示す。
この操舵角中立位置学習リセット処理は、ランプウェイ等で、前記操舵角判定閾値の範囲内にあるにもかかわらず、連続して比較的大きな操舵角が入力される局面で、操舵角中立位置Ｓｃ_Sがドリフトしていくことを抑制するための処理である。連続して大きな操舵角となるのは車両自体が大きく旋回していることを示す。すなわち、この旋回している度合から、特殊な走行路を走行しているか否かを判断して、特殊な区間と判断した場合に、その区間にて学習された分を破棄することにより、操舵角中立位置Ｓｃ_Sの精度を確保する。
【００７５】
まず、測定操舵角str_eng をエンジンＥＣＵ６より受信したか否かが判定される（Ｓ６１０）。測定操舵角str_eng が受信されていなければ（Ｓ６１０：ＮＯ）、本操舵角中立位置学習リセット処理では何もなされない。
測定操舵角str_eng が受信されると（Ｓ６１０：ＹＥＳ）、次に現車速Ｖｎが４０ｋｍ／ｈ以上か否かが判定される（Ｓ６２０）。現車速Ｖｎが４０ｋｍ／ｈ以上であれば（Ｓ６２０：ＹＥＳ）、次に測定操舵角str_eng と操舵中立位置Ｓｃとの差の前回値と今回値との符号の合致が判定される（Ｓ６３０）。符号が合致していなければ（Ｓ６３０：ＮＯ）、操舵を右から左、もしくは左から右へと切り返したこと判定し、この時の操舵角中立位置Ｓｃ_A，Ｓｃ_Bと学習度合いカウンタＣｖ_A，Ｃｖ_Bの値を記憶する（Ｓ６５０）。すなわち、以下のように記憶される。
Ｓｃmem_A（ｎ）＝Ｓｃ_A（ｎ）
Ｓｃmem_B（ｎ）＝Ｓｃ_B（ｎ）
Ｃｖmem_A（ｎ）＝Ｃｖ_A（ｎ）
Ｃｖmem_B（ｎ）＝Ｃｖ_B（ｎ）
一方、符号が合致している場合は（Ｓ６３０：ＹＥＳ）、操舵角中立位置Ｓｃ_A，Ｓｃ_Bと学習度合いカウンタＣｖ_A，Ｃｖ_Bの記憶値を前回値と同じとして変更しない（Ｓ６４０）。すなわち、以下のようになる。
Ｓｃmem_A（ｎ）＝Ｓｃmem_A（ｎ−１）
Ｓｃmem_B（ｎ）＝Ｓｃmem_B（ｎ−１）
Ｃｖmem_A（ｎ）＝Ｃｖmem_A（ｎ−１）
Ｃｖmem_B（ｎ）＝Ｃｖmem_B（ｎ−１）
そして、この場合は、連続して右もしくは左に操舵しており旋回中であると判定し、Ｓ６６０、Ｓ６７０、Ｓ６８０にて、その旋回量c_int を推定する。まずＳ６６０では、車両の旋回量c_int を推定する時の補正係数βを演算する処理を行う。ここでは、測定操舵角str_eng と操舵中立位置Ｓｃとの差を入力としたマップ演算で得る。そのマップを図１２に示す。通常、旋回量を演算する場合は、補正係数βは不要であり、β＝１とする。しかし、目的である特殊な局面にて本処理を機能させるために、図１２に示すように変形している。まず、特殊な走行路である確率が高い操舵の場合には、見かけ上、旋回量を大きくして後処理での判定で有利に作用させるべく、補正係数Ｂの値を１より大きく設定する。また、車間距離適用対象の走行路において通常走行している確率が高い場合には、本リセット処理が不用意に機能するのを抑制するためβ＝０に設定する。旋回量は、真の操舵中立位置と、暫定操舵角中立位置Ｓ０との差により、たとえ直進していても積算される可能性がある。従って、暫定操舵角中立位置Ｓ０の誤差分は考慮して、それ以下の範囲にてβ＝０とする。
【００７６】
Ｓ６６０にてβを設定した次に、Ｓ６７０にてカーブ半径Ｒを演算する。
カーブ半径Ｒは、一般には、次式にて算出できる。
Ｒ＝Ｌ×（１＋Ｋ×Ｖｎ2）／｛（str_eng−Ｓｃ_S）／Ｎ｝
なお、Ｌはホイールベース、Ｋはスタビリテイファクタ、Ｎはステアリングギア比である。
【００７７】
なお、上記理論式に変えて、実験式を用いても良いし、車速Ｖｎをヨーレートで除した値を用いても良い。
次に、Ｓ６８０にて車両旋回量c_int を推定する。その推定式を下式に示す。
c_int（ｎ）＝c_int（ｎ-1）＋β×△ｔ×Ｖｎ／Ｒ
なお、△ｔは演算周期である。
【００７８】
Ｓ６９０は、Ｓ６８０にて推定した車両旋回量c_int の絶対値が車両旋回量閾値c_int_ref（＝π） を超えたか否かを判定する。車両旋回量c_int値の絶対値が車両旋回量閾値c_int_ref 以下であれば（Ｓ６９０：ＮＯ）、本操舵角中立位置学習リセット処理では何もなされない。
【００７９】
車両旋回量c_int の絶対値が車両旋回量閾値c_int_ref を超えた場合（Ｓ６９０：ＹＥＳ）、その時点までの学習値がリセットされる（Ｓ７００）。すなわち、車両の旋回量が通常走行とは異なり大きいと判断した場合には、その旋回が開始された時点の学習値に戻す。具体的には以下のようになる。
Ｓｃ_A（ｎ）＝Ｓｃmem_A（ｎ−１）
Ｓｃ_B（ｎ）＝Ｓｃmem_B（ｎ−１）
Ｃｖ_A（ｎ）＝Ｃｖmem_A（ｎ−１）
Ｃｖ_B（ｎ）＝Ｃｖmem_B（ｎ−１）
この学習値は、Ｓ６５０にて記憶した値である。同時に、車両旋回量c_int もゼロにリセットする。このリセットにより、ランプウェイなどの特殊な走行路における操舵角中立位置Ｓｃ_Sのドリフトを抑制でき、結果的に自車の走行状態のカーブ曲率演算の精度を向上させることができ、車間制御の対象物として前方車の選択精度を向上させることができる。
【００８０】
本実施形態の操舵角演算処理（図４）、操舵角中立位置（Ｓｃ_A，Ｓｃ_B）学習処理（図６，７）、制御に利用する操舵角中立位置Ｓｃ_Sの選択処理（図８）、記憶値Ｓｃ_ep，Ｃｖ_epの書き換え処理（図１０）及び操舵角中立位置学習リセット処理（図１１）によって、最終的に制御に用いられる操舵角中立位置Ｓｃ_Sがどのように決定されているかを、図１３を参照して説明する。
【００８１】
図１３（１）は、記憶値Ｓｃ_ep，Ｃｖ_epが存在しない場合を示しており、図８のＳ４１０にて否定判断されるため、Ｓ４４０にてＳｃ_S＝Ｓｃ_Aとなり、現在の走行時に得た学習値Ｓｃ_Aのみが制御に使用される。
また、記憶値の更新に関して図１０のフローチャートとの対応を交えて説明する。記憶値がなく（Ｓ５１０：ＮＯ）、学習度合いカウンタＣｖ_Aが２０４８になるまでは（Ｓ５９０：ＮＯ）、記憶されず、学習度合いカウンタＣｖ_Aが２０４８になると（Ｓ５９０：ＹＥＳ）、第１回目の記憶がなされる（Ｓ５５０）。その後、学習度合いカウンタＣｖ_Aが４０９６，８１９２，１６３８４，３２７６８になると（Ｓ５４０：ＹＥＳ）、Ｓ５５０にて記憶値の更新がなされる。さらに、学習度合いカウンタＣｖ_Aが３２７６８を超えたときには、既に記憶値Ｃｖ_ep はＳ５５０にて３２７６８となっており（Ｓ５２０：ＮＯ）、学習度合いカウンタＣｖ_Aも既に３２７６８となった後（Ｓ５７０：ＮＯ）であるため、記憶値の更新はなされない。
【００８２】
一方、図１３（２），（３）は記憶値Ｓｃ_ep，Ｃｖ_epが存在する場合を示しており、図８のＳ４１０にて肯定判断されるため、イグニッションオン後の記憶値の書き換えが未実施であるか否かで変わってくる。つまり、記憶値の書き換えが未実施であれば（Ｓ４２０：ＹＥＳ）、操舵角中立位置Ｓｃ_Sとして学習値Ｓｃ_Bを採用し、記憶値の書き換えが実施されていれば（Ｓ４２０：ＮＯ）、操舵角中立位置Ｓｃ_Sとして学習値Ｓｃ_Aを採用する。
【００８３】
図１３（２）は、記憶値の学習度合いカウンタＣｖ_ep が８１９２の場合を示しており、この場合は、現在の走行時に得た学習値Ｓｃ_Aの学習度合いカウンタＣｖ_Aが８１９２になった時点で学習値Ｂ（Ｓｃ_B）から学習値Ａ（Ｓｃ_A）に乗り換えている。図１０にて記憶値が書き換えられるタイミングを見てみると、この場合は、Ｃｖ_ep ＜３２７６８であり（Ｓ５２０：ＹＥＳ）、Ｓ５３０にて否定判断されて移行するＳ５６０にて肯定判断されて初めて記憶値が書き換えられる。したがって、学習度合いカウンタＣｖ_A＜記憶値Ｃｖ_ep の場合には学習値Ｂ（Ｓｃ_B）が選択され（図８のＳ４３０）、学習度合いカウンタＣｖ_A≧記憶値Ｃｖ_ep の場合には学習値Ａ（Ｓｃ_A）が選択される（図８のＳ４４０）。
【００８４】
なお、この場合には、図１３（１）の場合と同様に、学習度合いカウンタＣｖ_Aが増えるにしたがって記憶値の更新がなされる。具体的には、８１９２において第１回目の更新がなされ、その後、１６３８４，３２７６８回になったときに更新がなされる。
【００８５】
また、図１３（３）は、記憶値の学習度合いカウンタＣｖ_ep が最大値３２７６８の場合を示しており、この場合は、現在の走行時に得た学習値Ｓｃ_Aの学習度合いカウンタＣｖ_Aが３２７６８になった時点で学習値Ｂ（Ｓｃ_B）から学習値Ａ（Ｓｃ_A）に乗り換えている。図１０にて記憶値が書き換えられるタイミングを見てみると、この場合は、Ｃｖ_ep ＝３２７６８であり（Ｓ５２０：ＮＯ）、Ｓ５７０，Ｓ５８０にて肯定判断されて初めて記憶値が書き換えられる。したがって、学習度合いカウンタＣｖ_A＜記憶値Ｃｖ_ep ＝３２７６８の場合には学習値Ｂ（Ｓｃ_B）が選択され（図８のＳ４３０）、一方、学習度合いカウンタＣｖ_A≧記憶値Ｃｖ_ep の場合には学習値Ａ（Ｓｃ_A）が選択される（図８のＳ４４０）。
【００８６】
なお、この場合には、学習度合いカウンタＣｖ_A＝３２７６８回になったときに唯一１回の更新がなされる。
そして、このようにして決定された操舵角中立位置Ｓｃ_Sがどの程度適切な値となっているかについて、従来技術と比較して図１４に示す。
【００８７】
図１４（Ｂ）は、直進状態が少なく左右操舵が連続する走行路において、イグニッションオンから車速を約８０ｋｍ／ｈまで加速した時の操舵角中立位置Ｓｃ_Sの推移を示しており、図１４（Ａ）はその内の最初の２００ｓｅｃの期間のみを拡大して示したものである。つまり、「学習初期期間」の操舵角中立位置Ｓｃ_Sの推移を示している。図１４（Ａ）には、現在の走行時に学習した学習値Ａ（Ｓｃ_A）とＥＥＰＲＯＭ２ａに記憶されている過去の記憶値Ｓｃ_ep を初期値として学習した学習値Ｂ（Ｓｃ_B）のみを示しており、学習値Ｂ（Ｓｃ_B）については、記憶値Ｓｃ_ep の学習度合いカウンタＣｖ_ep が８１９２，１６３８４，３２７６８の３種類の場合をそれぞれ示してある。
【００８８】
この図１４（Ａ）において、現在の走行時に学習した学習値Ａ（Ｓｃ_A）がすなわち従来仕様の場合の操舵角中立位置の推移を示している。この学習値Ａ（Ｓｃ_A）は、イグニッションオン時には、図４に示す操舵角演算処理が実行されないため、操舵角中立位置Ｓｃ_Sをゼロとしてしまう。車遠が３０ｋｍ／ｈを超えて、ヨーレート値がゼロ近傍になった約５０秒付近で直進状態と判定し、暫定操舵角中立位置Ｓ０が設定される。この暫定操舵角中立位置Ｓ０を縦軸におけるゼロとして表示している。そして、車速Ｖｎが４０Ｋｍ／ｈ以上となることで図６の実質的な学習処理が実行される。図１４（Ａ）の場合には、４０ｓｅｃ付近で−４ｄｅｇまで落ち込んだ学習値Ａ（Ｓｃ_A）は、１２０ｓｅｃを過ぎた辺りでようやく収束値に近づいている。
【００８９】
これに対して本実施形態の場合には、制御初期において学習値Ｂ（Ｓｃ_B）が操舵角中立位置Ｓｃ_Sとして採用されるため、イグニッションオン時であっても最終的に収束する値に近い操舵角中立位置を最初から設定することができる。そして、車速Ｖｎが４０Ｋｍ／ｈ以上となることで図７の実質的な学習処理が実行されるが、図１４（Ａ）に示すように、学習値Ａ（Ｓｃ_A）の場合には４０ｓｅｃ付近で−４ｄｅｇまで小さくなったのに対して、学習値Ｂ（Ｓｃ_B）の場合は３５ｓｅｃ付近で一応の落ち込みはあるものの、その変化は小さい。そしてさらに、その後、すぐに収束値に近づいている。
【００９０】
つまり、従来技術の課題として説明したように、走行開始直後に得られた暫定操舵角中立位置から、真の中立位置に近い操舵角中立位置が学習によって得られるまでは、学習という手段を使う以上、ある程度の時間が必要となる。そのため、車間制御への適用を想定した場合であれば、この所要時間がたとえ短くても、イグニッションオン直後の間は、自車線確率の精度が毎回低下することとなって、車間制御の快適性が損なわれる可能性がある。
【００９１】
それに対して本実施形態の場合には、現在の走行時における学習値の信頼度が低いという想定される学習初期期間内においては、必要に応じて過去の学習結果も利用するようにした。但し、この際、制御初期期間中であるからといって一律に過去の学習結果の方を採用するのではなく、信頼度が高いと推定される方を採用する。この信頼度を考える上では、制御初期期間内においては、学習度合いが進んでいるほど信頼度が高いと考えられる点と、過去の走行時に学習された値と現在の走行において学習された値とでは、原則的に今回の走行における学習値の方が信頼度が高いと考えられる点を考慮した。
【００９２】
これらの観点から、上述したような操舵角中立位置Ｓｃ_Sの決定（選択）をした。そのため、イグニッションオン直後から正確な操舵角の中立位置Ｓｃ_Sを推定することができ、この中立位置Ｓｃ_Sを用いた各種制御においては、精度の高い各種制御を実現することができるのである。
【００９３】
なお、本実施形態においては、操舵角中立位置の学習手法としては、本願出願人の出願に係る特願平９−３５１３６３号（特開平１１−１８０３２９号）と同じ手法を採用している。つまり、操舵角中立位置Ｓｃ_A，Ｓｃ_Bはいずれも、直進状態の際に得られた暫定操舵角中立位置Ｓ０を中心に、ステアリングセンサ８にて検出された車両の操舵角Ｓが所定範囲内に存在するときに学習している。そして、この所定範囲は、車間制御が許容される状況で通常走行する場合の操舵角のほとんど全てが含まれるように設定されている。そのため、上述の特願平９−３５１３６３号に記載した効果については、本実施形態においても発揮されるが、この点については、詳しくは当該出願内容を参照されたい。
【００９４】
また、車間制御ＥＣＵ２では、上述のごとく学習した操舵角中立位置Ｓｃと測定操舵角str_engとを用いて、カーブ曲率演算手段としての処理を行っている。
このカーブ曲率演算手段としての処理は、例えば、まず次式のごとく推定操舵角str を求める。
str  ←  str_eng  −  Ｓｃ_S
実際にはこの推定操舵角str を、次式のごとく、カットオフ周波数１．２４Ｈｚの１次ローパスフィルタにてなまし処理し、なまし処理後の推定操舵角str_filter を用いる。
str_filter(n)←(176/256)×str_filter(n-1)＋(80/256)×str(n)
そして、この推定操舵角str_filterにて、次のごとく走行路のカーブ曲率半径Ｒを演算する。
【００９５】
（１）Ｖｎ≧８０ｋｍ／ｈの時
R←Kr×(1 + 1.69×10^-4×Vn^2 - 3.86×10^-8×Vn^3)／str_filter
（２）Ｖｎ＜８０ｋｍ／ｈの時
R←Kr×(1 + 1.20×10^-4×Vn^2 + 5.79×10^-7×Vn^3)／str_filter
ここでは、「＾」は「＾」の前の数値を「＾」の後の数値の回数、累乗することを意味し、本明細書の他の部分でも同じである。また、Ｋｒはカーブ半径定数（例えば、値２１００）である。
【００９６】
このように演算したカーブ曲率半径Ｒを車間制御ＥＣＵ２はレーザレーダセンサ３へ送信している。
次に、レーザレーダセンサ３にて行われる処理と車間制御ＥＣＵ２にて行われる処理について説明する。
【００９７】
図１５は、車間制御全体の処理を示す。この内、Ｓ１０００〜Ｓ５０００の先行車検出処理は、レーザレーダセンサ３にて行われる処理であり、Ｓ６０００〜Ｓ９０００の車間制御処理は車間制御ＥＣＵ２にて行われる処理である。
処理が開始されると、まず、レーザレーダセンサ３に備えられたスキャニング測距器による距離・角度の計測データが読み込まれる（Ｓ１０００）。次に前方障害物の認識処理がなされる（Ｓ２０００）。次に前方障害物が自車の進行路上に存在する確率である自車線確率を算出する処理（Ｓ４０００）を行い、自車線確率の高い物体の内から、先行車が選択される（Ｓ５０００）。
【００９８】
こうして先行車検出処理（Ｓ１０００〜Ｓ５０００）が終了する。このようにして演算された先行車の自車線確率を含む先行車情報を、レーザレーダセンサ３は、車間制御ＥＣＵ２に送信する。車間制御ＥＣＵ２では、この先行車情報を受信して、車間制御処理（Ｓ６０００〜Ｓ９０００）を実行する。
【００９９】
車間制御処理の最初に、目標車間距離が算出され（Ｓ６０００）、続いて加減速率を算出した後（Ｓ７０００）、目標車速を算出する（Ｓ８０００）。このようにして、目標車速が算出されると、Ｓ８０００で求められた目標速度Ｖｍを目標とした車速制御が行われる（Ｓ９０００）。
【０１００】
なお、これら図１５に示す車間制御処理の詳細については、上述の特願平９−３５１３６３号（特開平１１−１８０３２９号）に記載してあるので、必要ならばそちらを参照されたい。
本車間制御処理は、上述のごとく構成されているため、カーブ曲率半径Ｒに基づいて直進路に変換した前方物体個々の座標を、予め設定してある直進路の自車線確率マップに当てはめて個々の物体の自車線確率を求め、その自車線確率の状態から先行車を決定し、その先行車との位置関係等に基づいて自車の速度を調節して、車間を制御できる。
【０１０１】
そして、この車間制御処理において、レーザレーダセンサ３では、車間制御ＥＣＵ２にて制御初期から精度高く得られた操舵角中立位置Ｓｃ_Sに基づいて推定されたカーブ曲率半径Ｒのデータを用いることで、スキャニング測距器にて先行車を適切に選択することができる。したがって、車間制御ＥＣＵ２では、その先行車に対して精度の高い車間制御することができる。
【０１０２】
なお、この車間制御の説明では車間距離をそのまま用いていたが、車間距離を車速で除算した車間時間を用いても同様に実現できる。つまり、相対速度と車間時間偏差比をパラメータとする目標加速度の制御マップを準備しておき、制御時には、その時点での相対速度と車間時間偏差比に基づいて目標加速度を算出して、車間制御を実行するのである。
【０１０３】
［その他］
（１）上記実施形態では、図１３（２），（３）に示すように、学習値Ａ（Ｓｃ_A）の学習度合い（Ｃｖ_A）が、記憶値（Ｓｃ_ep ）の学習度合い（Ｃｖ_ep ）になった時点で即座に学習値Ｂ（Ｓｃ_B）から学習値Ａ（Ｓｃ_A）に乗り換えている。このように即座に乗り換える場合には、「過去の走行時に学習された値と現在の走行において学習された値とでは、原則的に今回の走行における学習値の方が信頼度が高いと考えられる」という観点を重視したためである。
【０１０４】
但し、Ｃｖ_A＝Ｃｖ_ep となった場合には、Ｃｖ_B＝Ｃｖ_ep ＋Ｃｖ_ep となり、Ｃｖ_Bは常にＣｖ_AよりもＣｖ_ep 分だけ学習度合いが進んでいる。したがって、「学習度合いが進んでいるほど信頼度が高いと考えられる」という観点を重視するならば、Ｃｖ_A＝Ｃｖ_ep となった時点以降に乗り換えても良い。例えば上記実施形態ではＣｖ_A＝Ｃｖ_ep ＝８１９２となったときに乗り換えているが、例えばＣｖ_A＝１００００，２００００などとなったときに乗り換えても構わない。
【０１０５】
なお、この場合のＳｃ_BからＳｃ_Aへの乗り換え時期については、Ｓｃ_A，Ｓｃ_Bそのものの値、あるいはＳｃ_AとＳｃ_Bの差分などに基づいて適宜決定すればよい。つまり、それらの値に対する信頼度をどの程度重視するかによって変わってくる。
【０１０６】
（２）また、上記実施形態では学習初期をＣｖ_A＝３２７６８になった時点としたが、これは一例であり、現在の走行状況のみに基づいて操舵角の中立位置を学習する手法では対応し切れない期間を指している。
（３）前記実施の形態では、車両旋回検出手段としてヨーレートセンサ１０を用いたが、ヨーレートセンサ１０の代わりに、車輪速センサ１２にて、左右輪の回転速度の差を求めて、その左右輪の回転速度差そのもので、ヨーレートの大きさを判定しても良い。また、左右輪の回転速度の差からヨーレートを演算して、ヨーレートセンサ１０を用いた場合と同様に判定しても良い。さらには、ヨーレートセンサ１０の代わりに、横方向加速度センサを用いてもよい。
【０１０７】
（４）上述した各処理は、車間制御ＥＣＵ２、レーザレーダセンサ３、ブレーキＥＣＵ４及びエンジンＥＣＵ６に備えられたＲＯＭあるいはバックアップＲＡＭに記憶されたプログラムにより実行されるものである。
【図面の簡単な説明】
【図１】一実施形態としての車間制御装置のシステムブロック図である。
【図２】ステアリングセンサの概略構成説明図である。
【図３】ステアリングセンサの出力信号説明図である。
【図４】操舵角演算処理のフローチャートである。
【図５】ステアリングセンサの出力に基づいて操舵角を演算するための換算テーブル説明図である。
【図６】操舵角中立位置Ｓｃ_A学習処理のフローチャートである。
【図７】操舵角中立位置Ｓｃ_B学習処理のフローチャートである。
【図８】制御に利用する操舵角中立位置Ｓｃ_Sの選択処理のフローチャートである。
【図９】車速から、学習度合いカウンタＣｖ_A，Ｃｖ_Bの演算に用いられる増加値αを求めるための換算テーブル説明図である。
【図１０】記憶値Ｓｃ_ep，Ｃｖ_epの書き換え処理のフローチャートである。
【図１１】操舵角中立位置学習リセット処理のフローチャートである。
【図１２】補正係数β演算用マップである。
【図１３】本実施形態において学習値Ａ（Ｓｃ_A），学習値Ｂ（Ｓｃ_B）が操舵角中立位置Ｓｃ_Sとしてどのように選択されるかを示す説明図である。
【図１４】直進状態が少なく左右操舵が連続する走行路でイグニッションオンから車速を約８０ｋｍ／ｈまで加速した時の操舵角中立位置Ｓｃ_Sの推移を示すグラフである。
【図１５】  車間制御全体の処理のフローチャートである。
【符号の説明】
２…車間制御用電子制御装置（車間制御ＥＣＵ）
３…レーザレーダセンサ
４…ブレーキ電子制御装置（ブレーキＥＣＵ）
６…エンジン電子制御装置（エンジンＥＣＵ）
８…ステアリングセンサ
１０…ヨーレートセンサ
１２…車輪速センサ
１４…警報ブザー
１６…車速センサ
１８…ブレーキスイッチ
２０…クルーズコントロールスイッチ
２２…クルーズメインスイッチ
２４…スロットルアクチュエータ
２５…ブレーキアクチュエータ
２６…トランスミッション
２８…ボデーＬＡＮ
３２…金属円板
３２ａ…スリット
３４…回転検出回路
３４ａ，３４ｂ…レーザダイオード
３４ｃ，３４ｄ…フォトトランジスタ
３４ｅ…検出回路
【図１】
0003728991.tif 000002
【図２】
0003728991.tif 000003
【図３】
0003728991.tif 000004
【図４】
0003728991.tif 000005
【図５】
0003728991.tif 000006
【図６】
0003728991.tif 000007
【図７】
0003728991.tif 000008
【図８】
0003728991.tif 000009
【図９】
0003728991.tif 000010
【図１０】
0003728991.tif 000011
【図１１】
0003728991.tif 000012
【図１２】
0003728991.tif 000013
【図１３】
0003728991.tif 000014
【図１４】
0003728991.tif 000015
【図１５】
0003728991.tif 000016