以下、本発明の実施形態に係る車両制御装置について図面を参照しながら説明する。先ず、本明細書、図面及び特許請求の範囲等において使用される主たる用語について説明する。
・自車:自己の車両(着目している車両)
・他車:自車以外の車両
・先行車:自車が備えるセンサ(自車レーダセンサ、相対情報取得手段)により捕捉している自車の直前を走行している他車
・他車通信情報:自車が無線通信(車車間通信)を介して他車から取得する当該他車に関する情報
・通信車:他車通信情報を送信してくる他車
・通信追従対象車:自車が無線通信を介して取得する他車通信情報に基づいて当該自車の加速度を制御し、以て、当該自車が追従走行すべき先行車
・候補車:通信追従対象車の候補である(通信追従対象車である可能性がある)他車
なお、後述するように、本発明の実施形態に係る車両制御装置は、一以上の他車の中から通信追従対象車を特定する装置(即ち、通信追従対象車特定装置)を含むと言うことができる。更に、他車は「自車が搭載している車両制御装置」と同様な車両制御装置を備えているとして説明する。
(構成)
図1に示したように、本発明の実施形態に係る車両制御装置VCは自車10に搭載されている。
車両制御装置VCは、車両制御ECU20、エンジン制御ECU30、ブレーキ制御ECU40、ステアリング制御ECU50、センサECU60、GPS装置70及び無線制御ECU80を備える。これらのECUは、通信・センサ系CAN(Controller Area Network)101を介してデータ交換可能(通信可能)となっている。なお、ECUは、エレクトリックコントロールユニットの略称であり、CPU、ROM、RAM及びインターフェース等を含むマイクロコンピュータを主要構成部品として有する電子制御回路である。CPUは、メモリ(ROM)に格納されたインストラクションを実行することにより後述する各種機能を実現する。
車両制御ECU20は、後述するセンサ以外の「複数の車両制御用センサ21」、及び、CACCスイッチ22、と接続され、これらのセンサ21及びスイッチ22からの信号を受け取るようになっている。
CACCスイッチ22は、自車10の乗員によって操作されるON−OFFスイッチである。CACCスイッチ22は、その位置がオン位置に設定されると、CACC要求信号を出力するようになっている。なお、CACCは、協調追従走行制御(Cooperative Adaptive Cruise Control)を意味する。
エンジン制御ECU30は、アクセル操作量センサ31、及び、その他の複数のエンジン制御用センサ(図示略)と接続され、これらのセンサの検出信号を受け取るようになっている。
アクセル操作量センサ31は、アクセル操作子としてのアクセルペダル91の操作量(以下、「アクセル操作量」と称呼する。)APを検出し、そのアクセル操作量APを表す信号を出力する。
エンジン制御ECU30は、スロットル弁アクチュエータ及び燃料噴射弁等のエンジンアクチュエータ32と接続されている。エンジン制御ECU30は、エンジンアクチュエータ32を駆動することによって、図示しないエンジンが発生するトルクを変更し、自車10の加速度を調整するようになっている。
ブレーキ制御ECU40は、ブレーキ操作量センサ41、車速センサ42、及び、その他の複数の制動制御用センサ(図示略)と接続され、これらのセンサの検出信号を受け取るようになっている。
ブレーキ操作量センサ41は、ブレーキ操作子としてのブレーキペダル93の操作量(以下、「ブレーキ操作量」と称呼する。)BPを検出し、そのブレーキ操作量BPを表す信号を出力する。
車速センサ42は、自車の速度(自車速)Vjを検出し、その自車速Vjを表す信号を出力する。
ブレーキ制御ECU40は、油圧制御装置を含むブレーキアクチュエータ43と接続されている。ブレーキアクチュエータ43は、ブレーキペダル93の踏力によって作動油を加圧するマスタシリンダと、各車輪に設けられる周知のホイールシリンダを含む摩擦ブレーキ装置と、の間の油圧回路(何れも、図示略)に配設される。ブレーキアクチュエータ43はホイールシリンダに供給する油圧を調整する。ブレーキ制御ECU40は、ブレーキアクチュエータ43を駆動することにより各車輪に制動力を発生させ、自車10の加速度(負の加速度、即ち、減速度)を調整するようになっている。
ステアリング制御ECU50は、自車10の操舵輪の操舵角αを検出する操舵角センサ51、及び、その他の複数のステアリング制御用センサ(図示略)と接続され、これらのセンサの検出信号を受け取るようになっている。
ステアリング制御ECU50は、図示しない電動式パワーステアリング装置のモータである操舵アクチュエータ52と接続され、その操舵アクチュエータ52を駆動するようになっている。
センサECU60は自車レーダセンサ61と接続されている。自車レーダセンサ61は、周知のミリ波レーダセンサである。自車レーダセンサ61は、センサECU60の指示に従って自車10の前方にミリ波を送信する。そのミリ波は、先行車11により反射される。自車レーダセンサ61は、この反射波を受信する。
センサECU60は、自車レーダセンサ61から送信されたミリ波と受信した反射波との位相差、反射波の減衰レベル及びミリ波を送信してから反射波を受信するまでの時間等に基づいて、相対速度Vr、車間距離Dr、横距離Dy(図4を参照。)、及び相対方位θp等を所定時間の経過毎に取得する。センサECU60は、相対速度Vr、車間距離Dr、横距離Dy及び相対方位θp等をそのRAMに時系列的に格納(記憶)する。なお、自車レーダセンサ61及びセンサECU60によって取得される「相対速度Vr、車間距離Dr、横距離Dy及び相対方位θp等を含む情報(データ)」は「自車センサ情報」とも称呼される。更に、車間距離Dr及び横距離Dyは、自車10に対する先行車11の相対位置に関する情報である。
相対速度Vrは、自車10の速度Vjと先行車11の速度Vsとの差(=Vs−Vj)である。
車間距離Drは、自車10と先行車11と間の距離である(図11を参照。)。
横距離Dyは、自車10の進行方向と直交する方向(自車進行直交方向)の先行車11の距離(横ずれ距離)である(図11を参照。)。
相対方位θpは、自車10の進行方向に対する先行車11の進行方向の角度(相対方位)である。
GPS装置70は、周知であり、GPS衛星から送信されたGPS信号に基づいて「自車10が走行している位置(自車位置)Pj、進行方向DIRj及びGPS信号の信頼度(即ち、位置精度の信頼度)Rj等を含む情報(GPS情報)」を所定時間が経過する毎に取得し、取得した位置をそのRAMに時系列的に格納するようになっている。自車10の位置は経度X及び緯度Yにより特定され、進行方向DIRjは北を基準とした方位角により特定される。他車がその他車のGPS装置によりGPS衛星から取得する「他車の位置(他車位置)Pc及び進行方向DIRc」も同様に特定される。
無線制御ECU80は、他車との無線通信(車車間通信)を行うための無線アンテナ81と接続されている。無線制御ECU80は、他車(図1においては他車11乃至13)から送信されて来る他車に関する情報(即ち、他車通信情報)を、その他車通信情報を送信してきた他車を識別するID(他車ID)と共に所定時間が経過する毎に受信する。無線制御ECU80は、車車間通信により受信した情報を、他車ID別に且つ時系列的にそのRAMに格納するようになっている。
他車通信情報は、他車(即ち、通信車)の運転状態を表す下記の情報を含んでいる。
(A)通信車のブレーキ制御ECU40が取得した当該通信車の車速(通信車速度)Vc。
(B)通信車のGPS装置70が取得した当該通信車の位置Pc。
(C)通信車の車両制御装置が、後述する「協調追従走行制御(CACC)及び車間距離制御(ACC:Adaptive Cruise Control)」の何れも実行していない場合において、当該通信車の車両制御ECU20が当該通信車の「アクセル操作量AP及びブレーキ操作量BP」に基づいて算出した当該通信車の要求加速度Gc。
(D)通信車の車両制御装置が「協調追従走行制御及び車間距離制御」の何れかの制御を実行している場合において、その制御を行うために算出している(当該通信車に要求している)加速度である要求加速度Gc。
(E)通信車の車速(他車速)Vcを当該通信車の車両制御ECU20が時間微分することにより取得している当該通信車の実加速度Ga(=dVc/dt)。
無線制御ECU80は、所定時間が経過する毎に、後続車(自車10の後方を走行している車両)のために、自車10についての上記他車通信情報を外部に送信(発信)するようになっている。
(通信追従対象車の特定)
次に、本制御装置による通信追従対象車の特定について図2乃至図22に示したフローチャートを参照しながら説明する。本制御装置の車両制御ECU20のCPU(以下、単に「CPU」と表記する。)は、図2にフローチャートにより示したルーチンを所定時間が経過する毎に実行するようになっている。
従って、所定のタイミングになると、CPUは、図2のステップ200から処理を開始してステップ210に進み、図9にフローチャートにより示したルーチンを実行して「通信追従対象車として特定される通信車の候補(以下、「位置ベース候補車」と称呼する。)」を抽出する。このルーチンにおいては、概して、先行車の位置と各通信車の位置とを比較し、先行車の位置に比較的近い位置の通信車が位置ベース候補車として抽出される。このルーチンの詳細については、後述する。
次に、CPUはステップ220に進み、図3に示したように、「センサECU60が取得した先行車RVと自車10との間の距離、及び、GPS装置70が取得した自車10の位置に基づき算出される先行車RVの位置Pr」と「通信車CVのGPS装置が取得して自車10に送信してきた当該通信車CVの位置Pc」との間の距離((以下、「二位置間距離」と称呼する。)dnを算出し、算出した二位置間距離dnを各通信車CVに関連づけてそのRAMに記憶する。
次に、CPUはステップ230に進み、図12及び図13にフローチャートにより示したルーチンを実行して「通信追従対象車として特定される通信車の候補(以下、「速度ベース候補車」と称呼する。)」を抽出する。このルーチンにおいては、概して、先行車の速度と各通信車の速度とを比較し、先行車の速度に比較的近い速度を示している通信車が速度ベース候補車として抽出される。このルーチンの詳細については、後述する。
次に、CPUはステップ240に進み、図4にフローチャートにより示したルーチンを実行してステップ210で抽出された位置ベース候補車及びステップ230で抽出された速度ベース候補車の中から、以下の二種類の候補車を抽出する。
(1)位置ベース候補車であり、且つ、速度ベース候補車であり、且つ、二位置間距離dnが全ての候補車(位置ベース候補車と速度ベース候補車とのOR集合)の中で最小である候補車(以下、「PVdn候補車」と称呼する。)。
(2)二位置間距離dnは最小ではないが、位置ベース候補車であり、且つ、速度ベース候補車であり、且つ、速度類似度gが全ての候補車の中で最大である候補車(以下、「PVg候補車」と称呼する。)。
速度類似度gは、図2のステップ230にて実行される図13のルーチンのステップ1306にて算出される類似度g11に、同じく図13のルーチンのステップ1309にて算出される類似度g21を乗じて得られる値(g=g11・g21)である。この速度類似度gは、「無線通信にて送信されてくる通信車の速度」が「自車レーダセンサ61により検出される先行車の速度」に類似している度合を表している。
CPUは、ステップ240に進むと、図4のステップ400から処理を開始してステップ410に進み、全ての候補車のうちの任意の1つの候補車が「位置ベース候補車であり且つ速度ベース候補車である」か否かを判定する。その候補車が位置ベース候補車であり且つ速度ベース候補車である場合、CPUはステップ410にて「Yes」と判定してステップ420に進み、その候補車の二位置間距離dnが全ての候補車の中で最小であるか否かを判定する。
その候補車の二位置間距離dnが最小である場合、CPUはステップ420にて「Yes」と判定してステップ430に進み、その候補車を「PVdn候補車」として抽出してそのRAMに記憶する。その後、CPUはステップ440に進む。
これに対し、その候補車の二位置間距離dnが最小ではない場合、CPUはステップ420にて「No」と判定してステップ440に直接進む。
CPUがステップ440に進むと、「ステップ410で位置ベース候補車であり且つ速度ベース候補車であると判定された候補車」の速度類似度gが全ての候補車の中で最大であるか否かを判定する。その候補車の速度類似度gが最大である場合、CPUはステップ440にて「Yes」と判定してステップ450に進み、その候補車をPVg候補車として抽出してそのRAMに記憶する。その後、CPUはステップ495に進む。
これに対し、その候補車の速度類似度gが最大ではない場合、CPUはステップ440にて「No」と判定してステップ495に直接進む。
CPUは、以上の処理を全ての候補車について行った後、図2のステップ250に進む。
CPUは図2のステップ250に進むと、図5フローチャートにより示したルーチンを実行して候補車の中から、以下の二種類の候補車を抽出する。
(3)位置ベース候補車ではないが、速度ベース候補車であり、且つ、二位置間距離dnが全ての候補車(位置ベース候補車と速度ベース候補車とのOR集合)の中で最小である候補車(以下、「Vdn候補車」と称呼する。)。
(4)位置ベース候補車ではなく、且つ、二位置間距離dnは全ての候補車の中で最小ではないが、速度ベース候補車であり、且つ、速度類似度gが全ての候補車の中で最大である候補車(以下、「Vg候補車」と称呼する。)。
CPUは、ステップ250に進むと、図5のステップ500から処理を開始してステップ510に進み、全ての候補車のうちの任意の1つの候補車が「速度ベース候補車」であるか否かを判定する。その候補車が「速度ベース候補車」である場合、CPUはステップ510にて「Yes」と判定してステップ520に進み、その候補車の二位置間距離dnが全ての候補車の中で最小であるか否かを判定する。
その候補車の二位置間距離dnが最小である場合、CPUはステップ520にて「Yes」と判定してステップ530に進み、その候補車を「Vdn候補車」として抽出してそのRAMに記憶する。その後、CPUはステップ540に進む。
これに対し、その候補車の二位置間距離dnが最小ではない場合、CPUはステップ520にて「No」と判定してステップ540に直接進む。
CPUがステップ540に進むと、「ステップ510で速度ベース候補車であると判定された候補車」の速度類似度gが全ての候補車の中で最大であるか否かを判定する。その候補車の速度類似度gが最大である場合、CPUはステップ540にて「Yes」と判定してステップ550に進み、その候補車をVg候補車として抽出してそのRAMに記憶する。その後、CPUはステップ595に進む。
これに対し、その候補車の速度類似度gが最大ではない場合、CPUはステップ540にて「No」と判定してステップ595に直接進む。
CPUは、以上の処理を全ての候補車について行った後、図2のステップ260に進む。
CPUは図2のステップ260に進むと、図6フローチャートにより示したルーチンを実行して候補車の中から、以下の二種類の候補車を抽出する。
(5)速度ベース候補車ではないが、位置ベース候補車であり、且つ、二位置間距離dnが全ての候補車(位置ベース候補車と速度ベース候補車とのOR集合)の中で最小である候補車(以下、「Pdn候補車」と称呼する。)。
(6)速度ベース候補車ではなく、且つ、二位置間距離dnは全ての候補車の中で最小ではないが、位置ベース候補車であり、且つ、速度類似度gが全ての候補車の中で最大である候補車(以下、「Pg候補車」と称呼する。)」を抽出する。
CPUは、ステップ260に進むと、図6のステップ600から処理を開始してステップ610に進み、全ての候補車のうちの任意の1つの候補車が「位置ベース候補車」であるか否かを判定する。その候補車が「位置ベース候補車」である場合、CPUはステップ610にて「Yes」と判定してステップ620に進み、その候補車の二位置間距離dnが全ての候補車の中で最小であるか否かを判定する。
その候補車の二位置間距離dnが最小である場合、CPUはステップ620にて「Yes」と判定してステップ630に進み、その候補車を「Pdn候補車」として抽出してそのRAMに記憶する。その後、CPUはステップ640に進む。
これに対し、その候補車の二位置間距離dnが最小ではない場合、CPUはステップ620にて「No」と判定してステップ640に直接進む。
CPUがステップ640に進むと、「ステップ610で位置ベース候補車であると判定された候補車」の速度類似度gが全ての候補車の中で最大であるか否かを判定する。その候補車の速度類似度gが最大である場合、CPUはステップ640にて「Yes」と判定してステップ650に進み、その候補車をPg候補車として抽出してそのRAMに記憶する。その後、CPUはステップ695に進む。
これに対し、その候補車の速度類似度gが最大ではない場合、CPUはステップ640にて「No」と判定してステップ695に直接進む。
CPUは、以上の処理を全ての候補車について行った後、図2のステップ270に進む。
CPUは図2のステップ270に進むと、図7のフローチャートにより示したルーチンを実行して通信追従対象車を特定する。従って、CPUはステップ270に進むと、図7のステップ700から処理を開始してステップ705に進み、図2のステップ240でPVg候補車が抽出されたか否かを判定する。
PVg候補車が抽出されている場合、CPUはステップ705にて「Yes」と判定してステップ710に進み、そのPVg候補車が「図2のステップ240にて抽出されたPVdn候補車」であるか否かを判定する。
PVg候補車がPVdn候補車である場合、CPUはステップ715に進み、そのPVg候補車(即ち、PVdn候補車)を通信追従対象車として特定する。その後、CPUはステップ795を経由して図2のステップ295に進み、本ルーチンを一旦終了する。
これに対し、PVg候補車がPVdn候補車ではない場合、CPUはステップ710にて「No」と判定してステップ720に進む。更に、CPUがステップ705の処理を実行する時点においてPVg候補車が存在しない場合、CPUはそのステップ705にて「No」と判定してステップ720に進む。
CPUはステップ720に進むと候補車の中にVg候補車が存在するか否かを判定する。候補車の中にVg候補車が存在する場合、CPUはステップ720にて「Yes」と判定してステップ725に進み、そのVg候補車の二位置間距離dnが閾値距離dnmap以下であるか否かを判定する。
閾値距離dnmapは、Vg候補車がGPS衛星から取得したGPS信号についての信頼度(位置精度の信頼度)Rc、自車10がGPS衛星から取得したGPS信号についての信頼度(位置精度の信頼度)Rj及び自車速VjをルックアップテーブルMap(min(Rc,Rj),Vj)に適用することにより取得される。
前記テーブルMap(min(Rc,Rj),Vj)においては、Vg候補車の位置精度の信頼度Rcと自車10の位置精度の信頼度Rjとのうち、小さい方の信頼度(以下、「相対位置信頼度Rr」と称呼する。)がパラメータとして用いられる。このように相対位置信頼度(GPS位置信頼度)Rrをパラメータとしても用いる理由は、以下の通りである。
即ち、車両の位置は、GPS装置70がGPS衛星から受信した信号(電波)に基づき取得される。従って、車両がトンネル内を走行しているとき等、GPS装置70が信号(電波)を有効に受信できない状態(以下、「無効受信状態」と称呼する。)が長く続けば、取得される車両の位置の精度は低くなる。二位置間距離dnはVg候補車の位置及び自車10の位置の両方を用いて取得されるパラメータであるので、Vg候補車の位置の精度が低くても自車10の位置の精度が低くても、二位置間距離dnの精度が低くなる。そこで、本例においては、より低い位置精度の信頼度を基準にして二位置間距離dnの閾値である閾値距離dnmapが設定される。
更に、前記無効受信状態が長い時間継続するほど算出される位置の精度が低くなることから、Vg候補車の位置精度の信頼度Rjは前記無効受信状態が長いほど小さい値となる。同様に、自車10の位置精度の信頼度Rjも前記無効受信状態が長いほど小さい値となる。
前記テーブルMap(min(Rc,Rj),Vj)によれば、閾値距離dnmapは図8に示した値として取得される。即ち、相対位置信頼度Rrが所定値Rth以下である場合、取得される閾値距離dnmapはほぼ「0」である。相対位置信頼度Rrが所定値Rthよりも大きい場合、取得される閾値距離dnmapは、相対位置信頼度Rrが大きいほど小さい値として取得され、自車10の速度(自車速)Vjが大きいほど小さい値として取得される。
Vg候補車の二位置間距離dnが閾値距離dnmap以下である場合、CPUはステップ725にて「Yes」と判定してステップ730に進み、Vg候補車が「図2のステップ250にて抽出されたVdn候補車」であるか否かを判定する。
Vg候補車がVdn候補車である場合、CPUはステップ730にて「Yes」と判定してステップ735に進み、Vg候補車の二位置間距離dnと「2番目に二位置間距離dnが小さい候補車のその二位置間距離dn」との差Δdn(=dn2−dn1)が所定値Δdnth以上であるか否かを判定する。
前記差Δdnが所定値Δdnth以上である場合、CPUはステップ735にて「Yes」と判定してステップ745に進み、Vg候補車(即ち、Vdn候補車)を通信追従対象車として特定する。その後、CPUはステップ795を経由して図2のステップ295に進み、本ルーチンを一旦終了する。
これに対し、前記差Δdnが所定値Δdnthよりも小さい場合、CPUはステップ735にて「No」と判定してステップ740に進み、Vg候補車が「ステップ725及びステップ730の条件」を満たしてから経過した時間(経過時間)Tが所定時間Tthよりも小さいか否かを判定する。
CPUがステップ740の処理を実行する時点において前記経過時間Tが前記所定時間Tth以上である場合、CPUはそのステップ740にて「No」と判定してステップ745に進み、Vg候補車を通信追従対象車として特定する。その後、CPUはステップ795を経由して図2のステップ295に進む。
これに対し、CPUがステップ740の処理を実行する時点において前記経過時間Tが前記所定時間Tthよりも小さい場合、CPUはそのステップ740にて「Yes」と判定してステップ750に進む。
更に、CPUがステップ720の処理を実行する時点において候補車の中にVg候補車が存在しない場合、CPUはそのステップ720にて「No」と判定してステップ750に進む。
更に、CPUがステップ725の処理を実行する時点においてVg候補車の二位置間距離dnが閾値距離dnmapよりも大きい場合、CPUはそのステップ725にて「No」と判定してステップ750に進む。
加えて、CPUがステップ730の処理を実行する時点においてVg候補車がVdn候補車ではない場合、CPUはそのステップ730にて「No」と判定してステップ750に進む。
CPUはステップ750に進むと、候補車の中にPg候補車が存在するか否かを判定する。候補車の中にPg候補車が存在する場合、CPUはステップ750にて「Yes」と判定してステップ755に進み、そのPg候補車が「図2のステップ260にて抽出されたPdn候補車」であるか否かを判定する。
Pg候補車がPdn候補車である場合、CPUはステップ755にて「Yes」と判定してステップ760に進み、そのPg候補車(即ち、Pdn候補車)を通信追従対象車として特定する。その後、CPUはステップ795を経由して図2のステップ295に進む。
これに対し、CPUがステップ755の処理を実行する時点においてPVg候補車がPdn候補車ではない場合、CPUはそのステップ755にて「No」と判定してステップ795を経由して図2のステップ295に進む。
更に、CPUがステップ750の処理を実行する時点において候補車の中にPg候補車が存在しない場合、CPUはそのステップ750にて「No」と判定してステップ795を経由して図2のステップ295に進む。
以上により、候補車の中から通信追従対象車(即ち、先行車11である通信車)を精度良く特定することができる。
次に、図2のステップ210において位置ベース候補車を抽出するために実行される図9のルーチンについて説明する。CPUは図2のステップ210に進むと、ステップ900から処理を開始し、以下に述べるステップ905乃至ステップ915の処理を順に行う。その後、CPUはステップ920に進む。
ステップ905:CPUは、通信車(n)の他車通信情報の最新情報を無線制御ECU80から受け取る。通信車(n)とは、車車間通信により送信されてくる他車通信情報を自車10が受信している場合における当該車車間通信を行っている任意の他車(n)を意味する。この他車速通信情報には、少なくとも、以下の情報が含まれている。
・通信車(n)の最新の位置Pc(n)=(Xc,Yc)=(Xcnew,Ycnew)。
・通信車(n)の車速(他車速)Vc
・通信車(n)がGPS衛星から取得したGPS信号についての信頼度(位置精度の信頼度)Rc
・通信車(n)がGPS衛星から取得した通信車(n)の進行方向DIRc
ステップ910:CPUは、自車10の位置及び進行方向を基準とした座標系に通信車(n)の位置Pcを変換する。より具体的に述べると、CPUは、自車10の進行方向を、自車10の最新の位置Pj(=(Xjnew,Yjnew))と、一定時間前の自車10の位置Pj(=Xjold,Yjold))と、に基づいて決定する。或いは、CPUは、GPS衛星から自車の進行方向を取得する。CPUは、図10に示したように、自車10の進行方向を新たな座標軸xに設定し、自車10の進行方向(即ち、x軸方向)と直交する方向を新たな座標軸yに設定する。なお、x軸は、自車10の前進方向において「+」の値となる軸であり、自車10の後進方向において「−」の値となる軸である。y軸は、自車10の前進方向を基準にした場合の左方向において「+」の値となる軸であり、自車10の前進方向を基準にした場合の右方向において「−」の値となる軸である。この座標変換を行うことにより、自車10の位置Pj及び通信車(n)の位置Pcは、以下のようになる。
自車位置Pj=(xj,yj)
通信車(n)の位置Pc=(xc,yc)
ステップ915:CPUは、自車センサ情報(車間距離Dr、横距離Dy及び相対速度Vr等)の最新情報をセンサECU60から受け取る(図4を参照。)。
次に、CPUはステップ920にて、自車10が低速走行中であるか否か(即ち、自車速Vjが低速判定閾値(閾値車速)VjLo以下であるか否か)を判定する。自車10が低速走行中である場合、CPUはステップ920にて「Yes」と判定し、ステップ995に直接進んで本ルーチンを一旦終了する。
これに対し、自車10が低速走行中でなければ、CPUはステップ920にて「No」と判定してステップ925に進み、先行車11と通信車(n)との相対位置が略一致しているか否かを判定する。即ち、図4から理解されるように、通信車(n)の位置Pcが、先行車RVの位置Prを基準とした特定範囲A内に存在しているか否かを判定する。
より具体的に述べると、CPUはステップ920にて以下に述べる条件1及び条件2の両方が満足されるか否かを判定する。
(条件1)図4に示した縦方向位置差分Δdxが、自車速Vjが大きくなるほど絶対値が大きくなる第1縦閾値(前側閾値)DxFth(但し、DxFth<0)よりも大きく、且つ、自車速Vjが大きくなるほど大きくなる第2縦閾値(後側閾値)DxRth(但し、Dxrth>0)よりも小さい。即ち、下記(1)式が成立することが条件1の成立条件である。(1)式中の各変数は(2)乃至(5)式により算出される。(4)式及び(5)式中の係数k1f、k2f、k1r及びk2rは所定の正の定数である。
上記(4)式及び上記(5)式から理解されるように、第1縦閾値(前側閾値)DxFthの大きさ及び第2縦閾値(後側閾値)DxRthの大きさは、何れも自車速Vjに比例して大きくなるように設定される。この理由は、自車10及び先行車11が高速走行している場合、無線通信の通信遅延時間が通信車縦位置DRxに影響を及ぼすからである。この通信遅延時間による影響を任意の他車に対して精度良く補正することは実際には困難である。そこで、第1縦閾値DxFthの大きさ及び第2縦閾値DxRthの大きさを何れも自車速Vjに比例させることにより、通信遅延時間による影響を補償している。
(条件2)図4に示した横方向位置差分Δdyが、所定の閾値Dyth(一定値)以下である。即ち、下記(6)式が成立することが条件2の成立条件である。(6)式中の各変数は下記(7)式により算出される。
上記条件1及び上記条件2の両方が成立している場合、CPUはステップ925にて「Yes」と判定し(即ち、相対位置は略一致していると判定し)、ステップ930に進み、先行車11と通信車(n)との速度が略一致しているか否かを判定する。
より具体的に述べると、CPUはステップ930にて以下に述べる条件3が満足されるか否かを判定する。
(条件3)自車10の進行方向における通信車(n)の速度Vc1と先行車の速度Vfrとの差の絶対値(|Vc1−Vfr|が速度閾値Vth以内である。なお、速度Vfrは「自車センサベース先行車速度Vfr」とも称呼される。CPUは、自車速Vjと相対速度Vrとの和を先行車速度Vfrとして算出する(Vfr=Vj+Vr)。更に、CPUは、自車10がGPS衛星から取得した自車10の進行方向DIRjと、通信車(n)から受信した通信車(n)の「進行方向DIRc及び車速Vc」と、に基づいて自車10の進行方向における通信車(n)の速度Vc1を算出する。
上記条件3が成立している場合、CPUはステップ930にて「Yes」と判定し(即ち、速度が略一致していると判定し)、ステップ935に進んで以下の処理を行う。
・CPUは、今回の判定(ステップ925及びステップ930の処理)において、速度及び位置は一致(略一致)していると判定する。
・CPUは、今回の判定を含む直近N回の判定のうち、速度及び位置が一致していると判定した回数Mを取得する。
その後、CPUはステップ945に進む。
これに対し、CPUは、ステップ925及びステップ930の何れかにおいて「No」と判定した場合、ステップ940に進んで以下の処理を行う。
・CPUは、今回の判定(ステップ925及びステップ930の処理)において、速度及び位置は不一致である判定する。
・CPUは、今回の判定を含む直近N回の判定のうち、速度及び位置が一致していると判定した回数Mを取得する。
その後、CPUはステップ945に進む。
続いて、CPUは以下に述べるステップ945乃至ステップ955の処理を順に行い、ステップ960に進む。
ステップ945:CPUは、値Mを値Nにより除することによって、一致判定割合HW(=M/N)を算出する。
ステップ950:CPUは、通信車(n)がGPS衛星から取得したGPS信号についての信頼度(位置精度の信頼度)Rcと、自車10がGPS衛星から取得したGPS信号についての信頼度(位置精度の信頼度)Rjと、のうち、小さい方(min(Rc,Rj))を相対位置信頼度Rrとして取得する。
ステップ955:CPUは、判定割合閾値HWthを相対位置信頼度Rrに基づいて取得する。より具体的に述べると、CPUは、図9のブロックB1内に示したルックアップテーブルMapHWth(Rr)に「ステップ950にて取得した相対位置信頼度Rr」を適用することにより、判定割合閾値HWthを決定する。このテーブルMapHWth(Rr)によれば、判定割合閾値HWthは、相対位置信頼度Rrが第1の値になるまでは「1」よりも大きい一定値となり、相対位置信頼度Rrが第1の値を超えて第2の値になるまでは次第に減少し、相対位置信頼度Rrが第2の値以上であるとき「1」よりも小さい一定値となるように求められる。なお、ブロックB1内の一点鎖線により示したように、判定割合閾値HWthは第2の値になるまでは「1」よりも大きい一定値となり、相対位置信頼度Rrが第2の値以上であるとき「1」よりも小さい一定値となるように求められてもよい。
次に、CPUはステップ960に進み、一致判定割合HWが判定割合閾値HWth以上であるか否かを判定する。一致判定割合HWが判定割合閾値HWth以上である場合、CPUはステップ960にて「Yes」と判定してステップ965に進み、速度時系列データを用いた比較に基づいて、通信車(n)が通信追従対象車の候補車(以下、単に「候補車」とも称呼する。)である可能性があるか否かを判定する。換言すると、CPUはステップ965にて、通信車(n)が候補車である可能性が中程度以上であるか否かを判定する。
より具体的に述べると、CPUはステップ965にて以下の条件4及び条件5の両方が成立しているか否か判定する。
(条件4)下記(8)式に従って別途計算されている第1速度類似度指標値e1が、第1類似度閾値e1thよりも小さい。
第1速度類似度指標値e1は、自車センサベース先行車速度Vfrと通信車速度Vcとの平均2乗誤差である。よって、第1速度類似度指標値e1は、自車センサベース先行車速度Vfrと通信車速度Vcとが、過去の時点(所定時間前の時点)から現時点までの期間において近しい値を取り続けているほど小さくなる。即ち、第1速度類似度指標値e1は、自車センサベース先行車速度Vfrと通信車速度Vcとが類似している程度を表す指標値(誤差統計量の一つ)である。
(条件5)下記(9)式に従って別途計算されている第2速度類似度指標値e2が、第2類似度閾値e2thよりも小さい。
上記(9)式においてdVcは、通信車速度Vcの最新値Vc(t)と所定時間(Δt)前の通信車速度Vc(t−Δt)との差(=Vc(t)−Vc(t−Δt))である。
上記(9)式においてdVfrは、自車センサベース先行車速度Vfrの最新値Vfr(t)と所定時間(Δt)前の自車センサベース先行車速度Vfr(t−Δt)との差(=Vfr(t)−Vfr(t−Δt))である。
第2速度類似度指標値e2は、自車センサベース先行車速度Vfrの所定時間Δtあたりの変化量と通信車速度Vcの所定時間Δtあたりの変化量との差の絶対値の正規化値である。よって、第2速度類似度指標値e2は、自車センサベース先行車速度Vfrと通信車速度Vcとが同じような変化をしている場合に小さくなる。即ち、第2速度類似度指標値e2は、自車センサベース先行車速度Vfrと通信車速度Vcとが類似している程度を表す指標値(誤差統計量の一つ)である。
上記条件4及び上記条件5のうちの少なくとも一方が成立している場合、CPUはステップ965にて「Yes」と判定してステップ970に進み、着目している通信車(n)が「通信追従対象車の候補車」であるとしてRAMにその旨を記憶する。即ち、CPUは、通信車(n)のIDを候補車のIDとして認識し、そのIDを「候補車のIDを格納しているRAMの所定領域」に格納する。
これに対し、CPUがステップ960及びステップ965の少なくとも一方にて「No」と判定する場合、CPUはステップ975に進み、着目している通信車(n)は「通信追従対象車の候補車」ではないとして、通信車(n)のIDを「候補車のIDを格納しているRAMの所定領域」から削除する。
なお、CPUは、上記条件4及び上記条件5のうちの少なくとも一方が成立した場合にステップ965からステップ970に進み、上記条件4及び上記条件5の何れもが成立していない場合にステップ965からステップ975に進んでもよい。
次に、図2のステップ230において位置ベース候補車を抽出するために実行される図12及び図13のルーチンについて説明する。
CPUは図2のステップ230に進むと、図12のルーチンを実行して通信車の速度(通信車速度)Vcを取得するようになっている。従って、CPUは図2のステップ230に進むと、図12のステップ1200から処理を開始してステップ1201に進み、以下に述べるステップ1201乃至ステップ1204の処理を順に実行する。その後、CPUはステップ1295を経由して図13のステップ1300に進む。
ステップ1201:CPUは、無線制御ECU80及び無線アンテナ81を利用して通信車である他車11乃至13から他車通信情報を取得(受信)する。この他車通信情報には、各他車11乃至13の通信車速度Vcb等が含まれる。
ステップ1202:CPUは、自車レーダセンサ61及びセンサECU60を利用して自車センサ情報を取得する。この自車センサ情報には、先行車11の相対速度Vr及び自車10と先行車11の車間距離Dr等が含まれる。更に、CPUは、自車速Vjと相対速度Vrとを加算することにより先行車速度Vfrを算出(演算)する。
ステップ1203:CPUは、通信車速度Vcb、相対速度Vr及び先行車速度Vfrを車両制御ECU20のRAMに記憶する。
ステップ1204:CPUは、RAMに記憶された通信車速度Vcbを補正する。具体的には、下記の式を用いて速度バイアス(Vb(t))を演算し、RAMに記憶させた通信車速度Vcbから速度バイアス(Vb(t))を減じる。なお、この速度バイアスは、車速センサ42の信号に基づき算出された自車速Vjと、実際の(真の)自車速との間の定常的な誤差である。この誤差は、自車10のタイヤ径などの設計値からの偏差により生じる。
Vb(t)=k×{Vcb(t−dt)−Vfr(t−dt)}+(1−k)×Vb(t−dt)
k:フィルタ係数
dt:演算周期
t:現在時刻
以下、このようにして補正された通信車速度を通信車速度(バイアス補正後通信車速度)Vcと表記する。
次に、CPUは図12のステップ1295に進むと、図13にフローチャートにより示したルーチンを実行して複数の他車(通信車)の中から通信追従対象車を特定するようになっている。まず、図13に示したルーチンの基本的な技術思想の概略を説明する。
CPUはステップ1306、ステップ1309及びステップ1312において、図12のフローチャートの処理中に取得した「通信車速度Vc及び先行車速度Vfrに基づき平均二乗誤差の平均値H2Eに基づく類似度g1n」、「速度平均乖離度e1の平均値He1に基づく類似度g2n」及び「速度相関係数coefの平均値Hcfに基づく類似度g3n」を算出する。
これらの類似度g1n、g2n及びg3nは何れも、先行車11と通信車の類似度、即ち、通信車が先行車11である可能性を表す数値である。なお、「n」は1〜3の数である。即ち、類似度g1n、g2n及びg3nはそれぞれ三種類ずつ算出される。類似度g1n、g2n及びg3nの大きさは何れも「0」以上且つ「1」以下である。
このように求めた類似度g1n、g2n及びg3n同士を掛け合わすことにより最終先行車確率を求めることは既に知られている。即ち、通信車速度Vc及び先行車速度Vfrの一定時間当たりの変化量を考慮せずに最終先行車確率を求めることは従来から行われている。
しかしながら、このようにして算出した最終先行車確率は、特に、先行車が略一定の速度で走行している場合に先行車以外の通信車が同様に実質的に同じ一定速度で走行していると、その先行車以外の通信車と先行車との間の速度の類似度が高くなり、よって、最終先行車確率の信用度が低くなる。つまり、先行車以外の通信車を先行車であると誤認識する可能性が高くなってしまう。
そこで、本実施形態においては、図13のステップ1301乃至ステップ1303において、「通信車速度Vc、相対速度Vr及び先行車速度Vfrの変動量」に基づき補正係数(先行車確率の補正係数)fnを算出する。より具体的には、ステップ1301及びステップ1302において「自車10、先行車11及び通信車の速度変化量SHn(以下、単に「速度変動量SHn」と称呼する。)」及び「通信車の非先々行車度(先々行車らしくなさ)apn(以下、単に「非先々行車度」と称呼する。)」を算出する。そして、速度変動量SHn及び非先々行車度apnに基づき、ステップ1303において補正係数fnを算出する。類似度g1n、g2n、g3nと同様に、補正係数fnも三種類(f1、f2、f3)算出される。
この補正係数fnは、通信車速度Vc、相対速度Vr及び先行車速度Vfrの変動量が最終先行車確率Pnに及ぼす影響を踏まえて演算された数値であり、その大きさは何れも0以上且つ1以下である。補正係数fnは、基本的には、速度変動量SHnが大きいほど「1」に近づき、非先々行車度apnが大きいほど「1」に近づくように算出される。
CPUは、ステップ1313において類似度g1n、g2n、g3n及び補正係数fnのnの値が同じもの同士を掛け合わせて最終先行車確率Pn(=P1、P2、P3)を算出する。更に、CPUは、求めた最終先行車確率Pnの中で最も値が大きいものが所定の閾値Pthを超えた場合に「その最終先行車確率Pnの基礎となる類似度g1n、g2n、g3n及び補正係数fnの元データ(通信車速度Vcb等)を含む他車通信情報を送信してきた通信車が先行車11である」と判定する。なお、最終先行車確率Pnは0以上且つ1以下の数値であり、「1」に近いほど「通信車が先行車11である確率が高い」ことを表し、「0」に近いほど「通信車が先行車11である確率が低い」ことを表す。
このように、類似度g1n、g2n、g3nのみならず補正係数fnをも考慮した上でCPUが算出した最終先行車確率Pnの信用度は高い。換言すると、この最終先行車確率Pnは類似度g1n、g2n、g3nのみに基づき算出された最終先行車確率に比べて、通信車が先行車11である確率をより正確に表している。
従って、補正係数fnを利用して求めた最終先行車確率Pnと閾値Pthに基づきCPUが「通信車が先行車11である」と判定した場合は、その先行車11が実際に通信車である確率は高くなる。
図13のルーチンについて具体的に説明する。CPUは、所定のタイミングになると、ステップ1300から処理を開始してステップ1301に進み、図14にフローチャートにより示したルーチンを実行して速度変動量SHnを算出する。
従って、CPUはステップ1301に進むと、図4のステップ1400から処理を開始し、以下に述べるステップ1401及びステップ1402の処理を順に行う。その後、CPUはステップ1403に進む。
ステップ1401:CPUは、自動運転モードになってから現時点までの間にRAMに記憶された全ての先行車速度Vfr、相対速度Vr及び対象としている(即ち、着目している)通信車の速度Vcの中から、それぞれの「最大値Vfrmax、Vrmax及びVcmax」と「最小値Vfrmin、Vrmin及びVcmin}を選択する。
ステップ1402:CPUは、最大値Vfrmax、Vrmax及びVcmaxと最小値Vfrmin、Vrmin及びVcminとに基づき、先行車速度の変動量ΔVfr=Vfrmax−Vfrmin、通信車速度の変動量ΔVc=Vcmax−Vcmin及び相対速度の変動量ΔVr=Vrmax−Vrminをそれぞれ算出する。
CPUはステップ1403に進むと、ΔVfr×k1(ΔVfr)≦ΔVcが成立しているか否かを判定する。後述するように、値k1(ΔVfr)は補正係数であり、先行車速度の変動量ΔVfrを図15に示したルックアップテーブルに適用することにより取得される。
仮に対象としている通信車が先行車11の直前に位置する先々行車(図示略)であり且つ非通信車である先行車11が先々行車に追従すべくACC制御を行っているとき、先々行車(通信車)のΔVcがΔVfrより大きくなり易いことが、経験的な事実として知られている。これは、例えば、先々行車が加速した後に先行車が加速し始めるからである。即ち、ΔVfr×k1(ΔVfr)≦ΔVcが成立している場合は、通信車が先行車11である可能性よりも、通信車が先々行車である可能性の方が高いと推測できる。
但し、ΔVfrが大きい場合は、CPUが非通信車である先行車を通信車であると誤認するおそれは小さいことが経験的に知られている。そのため、ステップ1403ではΔVfrとΔVcとを直接比較するのではなく、ΔVfrの大きさに応じて決まる補正係数k1をΔVfrに乗じて、この乗じた値とΔVcとの大小関係を比較する。
図15に示したように、ΔVfrが0から所定の大きさであるΔVfr1の間の大きさのときはk1=1である。しかしながら、ΔVfrがΔVfr1を超えるとk1は徐々に大きくなり、ΔVfrが所定の大きさであるΔVfr2を超えるとk1は1より大きい一定値となる。従って、図14のフローチャートでは、ΔVfrが所定の大きさであるΔVfr1を超えた場合は、超えない場合と比べて通信車が先行車11であると判定される可能性が高くなる。
ΔVfr×k1(ΔVfr)≦ΔVcが成立している場合、換言すると、CPUがΔVfr及びΔVcの値に基づき「通信車が先々行車らしい」と判定した場合、CPUはステップ1403にて「Yes」と判定してステップ1404に進み、「通信車が先々行車らしい」度合を表す値であるΔVcinv=ΔVc−ΔVfr×k1(ΔVfr)を算出する。その後、CPUはステップ1406に進む。
後述するステップ1414に示したように、図14のフローチャートは最終的に速度変動量SHnを算出する。更に、後述するように、速度変動量SHnの値が大きくなるほど補正係数fnの値は大きくなる。換言すると、速度変動量SHnの値が大きくなるほど、CPUが「通信車が先行車11である」と判定する可能性が高くなる。
そして、ΔVcinvは(後述するステップ1413においてΔVinvとして選択された場合は)、ステップ1414において速度変動量SHnの値を小さくするために利用される。換言するとΔVcinvは、CPUが「通信車が先行車11である」と判定する可能性を低くするために利用される。そのため、ステップ1404で求めたΔVcinvの値が大きくなればなるほど、CPUが「通信車が先行車11である」と判定する可能性が低くなる。
一方、CPUがステップ1403の処理を実行する時点においてΔVfr×k1(ΔVfr)≦ΔVcが成立していない場合、CPUはそのステップ1403にて「No」を判定してステップ1405に進み、ΔVcinvを「0(ゼロ)」に設定する。その後、CPUはステップ1406に進む。
上述の説明から明らかなように、ΔVcinvが「0」に設定された場合(且つΔVcinvがステップ1413でΔVinvとして選択される場合)、CPUはステップ1414において速度変動量SHnの値を大きめに算出する。即ち、CPUが「通信車が先行車11である」と判定する可能性が高くなる。
CPUはステップ1406に進むと、「dVrmax/dt>0(今回の本ステップ1406の処理時のVrmaxが前回の本ステップ1406の処理時のVrmaxよりも大きければ「dVrmax/dt>0」となる。逆に、今回の本ステップ1406の処理時のVrmaxが前回の本ステップ1406の処理時のVrmax以下であれば「dVrmax/dt>0」とはならない。)」、「dVfr/dt>0」及び「dVc/dt<0」の全てが成立しているか否かを判定する。先行車11が加速し且つ自車10の速度が殆ど変化しない場合に「dVrmax/dt>0」及び「dVfr/dt>0」が成立する。一方、通信車が減速している場合に「dVc/dt<0」が成立する。即ち、「dVrmax/dt>0」、「dVfr/dt>0」及び「dVc/dt<0」の全てが成立するときは、先行車11の加速度の符号(プラスとマイナス)と通信車の加速度の符号とが互いに異なる。そのため、「dVrmax/dt>0」、「dVfr/dt>0」及び「dVc/dt<0」の全てが成立する場合、「通信車は先行車11らしくない」と推測できる。
CPUがステップ1406の処理を実行する時点において同ステップ1406の条件が成立していない場合、CPUはそのステップ1406にて「No」と判定してステップ1407に進み、「dVrmax/dt<0」、「dVfr/dt<0」及び「dVc/dt>0」の全てが成立しているか否かを判定する。
先行車11が減速し且つ自車10の速度が殆ど変化しない場合に「dVrmax/dt<0」及び「dVfr/dt<0」が成立する。一方、通信車が加速している場合に「dVc/dt>0」が成立する。即ち、「dVrmax/dt<0」、「dVfr/dt<0」及び「dVc/dt>0」の全てが成立するときは、先行車11の加速度の符号と通信車の加速度の符号とが互いに異なる。そのため、「dVrmax/dt<0」、「dVfr/dt<0」及び「dVc/dt>0」の全てが成立する場合も「通信車は先行車11らしくない」と推測できる。
図16(a)及び(b)は、ステップ1406及びステップ1407で想定している「先行車速度Vfr、相対速度Vr及び通信車速度Vc」の時間経過に伴う変化を表している。図示するように図16(a)と図16(b)の時刻0から時刻taまでの先行車速度Vfr、相対速度Vr及び通信車速度Vcの変化態様は互いに同一である。その一方で、時刻taを経過すると、「先行車速度Vfr及び相対速度Vr」と「通信車速度Vc」とは、互いに異なる態様で変化する。
図16(a)及び(b)の時刻ta以前の時刻においては、「dVrmax/dt>0」、「dVfr/dt>0」及び「dVc/dt>0」となっている。即ち、時刻ta以前の時刻においてCPUがステップ1406の処理を行うとき、そのステップ1406にて「No」と判定してステップ1407に進む。更に、図16(a)及び(b)の時刻ta以前の時刻においてCPUがステップ1407の処理を行うと、そのステップ1407にて「No」と判定してステップ1409に進む。
一方、図16(a)に示した例においては、時刻taが経過すると、「dVrmax/dt>0」、「dVfr/dt>0」及び「dVc/dt<0」となる。従って、先行車速度Vfr、相対速度Vr及び通信車速度Vcが図16(a)のように変化する場合に時刻taを経過した時刻においてCPUがステップ1406の処理を行うとき、CPUは「Yes」と判定してステップ1408に進む。
また、図16(b)に示した例においては、時刻taが経過すると、「dVrmax/dt<0」、「dVfr/dt<0」及び「dVc/dt>0」となる。従って、先行車速度Vfr、相対速度Vr及び通信車速度Vcが図16(b)のように変化する場合に時刻taを経過した時刻においてCPUがステップ1407の処理を行うとき、CPUは「Yes」と判定してステップ1408に進む。
CPUはステップ1409に進むと、「無効カウンタ」を初期化する(即ち「0」にする)。その後、CPUはステップ1410に進む。前記無効カウンタとは、ステップ1406及びステップ1407の判定結果に基づき算出される「対象としている通信車が先行車11らしくない」度合を表すものであり、その数値が大きくなればなるほど「対象としている通信車が先行車11らしくない」度合が高くなる。
更に、CPUはステップ1409においてΔVrbaseとして現時点におけるΔVrを設定する。即ち、図16(a)及び(b)の時刻ta以前の現在時刻におけるΔVrをΔVrbaseとして設定する。なお、後述するようにこのΔVrbaseは、ステップ1411においてΔVrinvを求めるために用いられる。
一方、CPUはステップ1408に進むと、「無効カウンタ」に「1」を加算する。更に、CPUはステップ1408において、ΔVrbaseとして前回の図14のルーチン処理時のステップ1409又はステップ1408で求めたΔVrbaseである前回値を保持する。その後、CPUはステップ1410に進む。
ここで、例えば、今回のステップ1408の処理時刻が図16(a)及び(b)の時刻tbであり且つ前回の処理時が時刻taの場合、ΔVrbaseの前回値は時刻taにおけるΔVrとなる。また、例えば、今回のステップ1408の処理時刻が図16(a)及び(b)の時刻tcであり且つ前回の処理時が時刻tbの場合は、ΔVrbaseの前回値は時刻tbにおけるΔVrbase、即ち、時刻taにおけるΔVrとなる。即ち、ステップ1408にて設定されるΔVrbaseは、時刻ta以前にステップ1409で最後に取得されたΔVrとなる。
CPUはステップ1410に進むと、無効カウンタ数が所定の閾値invを超えているか否かを判定する。無効カウンタ数が閾値invを超えている場合、即ち、「通信車が先行車11らしくない」可能性がある程度の高さで推測できる場合、CPUはステップ1410で「Yes」と判定してステップ1411に進む。
CPUはステップ1411に進むと、現時点でのΔVrからステップ1409又はステップ1408で求めたΔVrbbaseを引いた値をΔVrinvとして算出する。その後、CPUはステップ1413に進む。
「ΔVrinv」は「ΔVcinv」と同様に(後述するステップ1413でΔVinvとして選択された場合に)、ステップ1414において速度変動量SHnの値を小さくするために利用される。そのため、ΔVrinvの値が大きくなればなるほど、CPUは最終的にステップ1414において速度変動量SHnの値を小さめに算出することになる。
例えば、図16(a)及び(b)の時刻ta以前にCPUがステップ1406及びステップ1407の処理を行った場合、CPUはステップ1409を経由してステップ1410へ進み、ステップ1410にて「No」と判定する。
上述したように、この場合、先行車速度Vfrと通信車速度Vcの加速度の符号が同じである。即ち、実際に通信車が先行車11である可能性が十分に考えられるため、ステップ1414において速度変動量SHnの値を小さくする必要がない。そのため、この場合、CPUはステップ1412に進んでΔVrinvを「0」にする。
一方、図16(a)及び(b)の時刻taの経過後にCPUがステップ1406及びステップ1407の処理を行った場合には、CPUはステップ1408を経由してステップ1410に進む。この場合、CPUがステップ1410で「Yes」と判定する可能性があり、「Yes」と判定した場合、CPUはステップ1411に進む。
上述したように、この場合、先行車速度Vfrと通信車速度Vcの加速度の符号が互いに異なる。即ち、「通信車が先行車11らしくない」可能性がある程度の高さで推測できるため、ステップ1414において速度変動量SHnの値を小さくする必要がある。そのため、この場合。ΔVrinvを「0」にしない。即ち、CPUはステップ1411においてΔVrinv=ΔVr−ΔVrbaseを算出する。
しかしながら、仮に、時刻taの経過後に取得された現時点でのΔVrをステップ1411においてそのままΔVrbaseとして用いると、ΔVrinvが「0」になってしまう。即ち、「通信車が先行車11らしくない」可能性がある程度の高さで推測できる状況にあるにもかかわらず、CPUが通信車を先行車11であると判断し易くなってしまう。そのため、この場合、ΔVrbaseとして現時点でのΔVrを利用すべきでない。
一方、時刻ta以前の状況では「通信車が先行車11らしい」可能性がある程度推測できる(即ち、通信車が先行車11らしくない可能性が高いとは言えない)ため、この時間帯に取得されたΔVrをΔVrbaseとして現時点でのΔVrから差し引いてΔVrinvを算出する。こうしてΔVrinvを算出すると、ΔVrbase=0のときよりも、ステップ1411で「通信車が先行車11である」と判定される可能性が高くなる。しかしながら、このΔVrは「通信車が先行車11らしい」可能性がある程度推測できる時間帯のΔVrなので、このΔVrinvを用いて算出した通信車が先行車11であるか否かの判定結果が、現実と大きく乖離するおそれは小さいと考えられる。
そのため、この場合のステップ1411では、時刻ta以前の時間帯にステップ1409で最後に取得されたΔVrをΔVrbaseとした上でVrinv=ΔVr−ΔVrbaseを取得する。
CPUはステップ1411又はステップ1412の処理を行った後、ステップ1413へ進み、「直前のステップ1404のΔVcinv」と、「直前のステップ1411のΔVrinv」と、「前回のステップ1413の処理時におけるΔVinv」と、の中で最も数値が大きいものをΔVinvとして選択する。このΔVinvは、ステップ1414において速度変動量SHnの値を小さくするために利用される。
ステップ1413で最も数値が大きいものを選ぶ理由は、ΔVinvを大きな値とすることにより、ステップ1414で求められる速度変動量SHnをできるだけ小さくするためである。換言すると、最終的にCPUが「通信車が先行車11である」と誤判定する可能性を低くするためである。
更に、CPUはステップ1414に進み、ΔVfr、ΔVr及びΔVcの中の最小値からΔVrinvを引いた値を速度変動量SHnとして算出する。従って、ΔVfr、ΔVr及びΔVcの値が大きいほど速度変動量SHnは大きくなり、ΔVrinvの値が大きいほど速度変動量SHnは小さくなる。その後、CPUはステップ1495を経由して図13のステップ1302に進む。
ステップ1414でΔVfr、ΔVr及びΔVcの中から最も数値が小さいものを選ぶ理由は、最終的に算出される速度変動量SHnをできるだけ小さくするためである。換言すると、最終的にCPUが「通信車が先行車11である」と誤判定する可能性を低くするためである。
更に、仮に自車10の直後を走行する車両である後続車(図示略)が自車10と無線通信を行うことによりCACC制御を実行し且つ非通信車である先行車11と自車10のΔVrが小さい場合、先行車11と後続車の速度がほぼ一致してしまう。この状況では、自車10のCPUが先行車11と後続車を識別するのが難しくなる。そのため、このような状況では、CPUが、通信車(即ち、後続車)が先行車11であると誤判定するリスクが高くなる。一方、後続車が自車10と通信を行うことによりCACC制御を実行する場合においても、自車10と先行車11のΔVrが大きいときは、先行車11と後続車の速度は一致し難い。そのため、ΔVrが大きいときは、自車10のCPUは先行車11と後続車を容易に識別できる。従って、このような状況においては、CPUが通信車(即ち、後続車)を先行車11であると誤判定するリスクは低くなる。
図14に示したルーチンにおいては、ステップ1414においてΔVrが速度変動量SHnの算出要素となっている。そのため、ΔVrが小さい場合、即ち、CPUが先行車11と後続車を識別し難い場合、ステップ1414で算出される速度変動量SHnの値は小さくなり易い。一方、ΔVrが大きい場合、即ち、CPUが先行車11と後続車を容易に識別できる場合、ステップ1414で算出される速度変動量SHnの値は大きくなり易い。
このようにステップ1414においてΔVrを速度変動量SHnの算出要素とすることにより、ΔVrの大小に起因する先行車11と後続車の識別の困難度を速度変動量SHnの算出値に反映させている。従って、「通信車が後続車ではなく先行車11である」とCPUが誤判定するおそれを小さくできる。
前述したように、ステップ1414(ステップ1301)で求めた速度変動量SHnが大きくなるほど、補正係数fnの値が大きくなる(「1」に近づく。)。換言すると、速度変動量SHnの値が大きくなるほど、最終的に「対象としている通信車が先行車11である」と判定される可能性が高くなる。
逆に、速度変動量SHnが小さくなるほど、補正係数fnの値が小さくなる(「0」に近づく。)。換言すると、速度変動量SHnの値が小さくなるほど、最終的に「対象としている通信車が先行車11である」と判定される可能性が低くなる。
CPUは図13のステップ1302に進むと、図17にフローチャートにより示したルーチンを実行して「非先々行車度apn」を算出する。従って、CPUはステップ1302に進むと、図17のステップ1700から処理を開始してステップ1701に進み、e1(第1指標値)=|dVc−dVfr|/min(|dVc|、|dVfr|)を演算する。更に、CPUは、算出したe1をRAMに記憶させる。
ここで、「dVc」及び「dVfr」はそれぞれ以下のように定義される。
dVc:現在の時刻tから微小時間t1だけ前の時刻(第1時刻=t−t1)から現在の時刻までの間の通信車速度Vcの変化量(=Vc(t)−Vc(t−t1)、図18のグラフを参照)。
dVfr:現在の時刻tから微小時間t1だけ前の時刻(第1時刻=t−t1)から現在の時刻までの間の先行車速度Vfrの変化量(=Vfr(t)−Vfr(t−t1)、図18のグラフを参照)。
このe1は先行車11と通信車の速度変化の乖離度(以下、単に「速度変化の乖離度」と称する)を示している。仮に通信車が先々行車であり且つ先行車11が先々行車に追従走行する場合は、同じ時間帯における通信車速度VcのdVcと先行車速度VfrのdVfrとの間に差が生じることが経験的に知られている。従って、速度変化の乖離度e1の値が大きいほど、換言すると|dVc−dVfr|の値が大きいほど、「通信車が先々行車らしい(即ち、通信車が先行車11らしくない)」と推測できる。その一方で、速度変化の乖離度e1の値が小さいほど、換言すると|dVc−dVfr|が小さいほど、「通信車が先々行車らしくない(即ち、通信車が先行車11らしい)」と推測できる。なお、min(|dVc|、|dVfr|)は|dVc|と|dVfr|のうちの小さい方の値であり、速度変化の乖離度e1を正規化するための値である。
次に、CPUはステップ1702に進み、e2(第2指標値)=|dVc’−dVfr’|/min(|dVc’|、|dVfr’|)を演算する。更に、CPUは、算出したe2をRAMに記憶させる。
ここで、「dVc’」及び「dVfr’」はそれぞれ以下のように定義される。
dVc’:現在の時刻tからオフセット時間toffだけ前の時刻から更に微小時間t2前の時刻(第2時刻=t−toff−t2)から、現在の時刻tからオフセット時間toffだけ前の時刻(=t−toff)までの間の通信車速度Vcの変化量(=Vc(t−toff)−Vc(t−toff−t2)、図18のグラフを参照)。
dVfr’:現在の時刻tから微小時間t2前の時刻(=t−t2)から、現在の時刻tまでの間の先行車速度Vfrの変化量(=Vfr(t)−Vfr(t−t2)、図18のグラフを参照)。
なお、この微小時間t2は微小時間t1と異なる長さであってもよいし、同じ長さであってもよい。また、オフセット時間toffは、先々行車が通信車であり且つ先行車が先々行車にACC制御により追従している非通信車である場合に、通信車速度(先々行車速度)Vcが変化してから先行車速度Vfrが変化し始めるまでの遅れ時間(例えば、0.5〜2s)であり、実験的に定められる値である。
このe2も先行車11と通信車の速度変化の乖離度(以下、単に「速度変化の乖離度」と称する)を示している。仮に通信車が先々行車であり且つ先行車11が先々行車に追従走行する場合は、ある時間帯において通信車速度VcがdVc’だけ変化すると、それからオフセット時間toffだけ経過した後に、先行車速度VfrがdVc’と(ほぼ)同じだけ変化することが経験的に知られている。従って、速度変化の乖離度e2の値が小さいほど、換言すると|dVc’−dVfr’|がゼロに近づくほど、「通信車が先々行車らしい」と推測できる。その一方で、速度変化の乖離度e2の値が大きいほど、換言すると|dVc’−dVfr’|が大きいほど、「通信車が先々行車らしくない」と推測できる。なお、min(|dVc’|、|dVfr’|)は|dVc’|と|dVfr’|のうちの小さい方の値であり、速度変化の乖離度e2を正規化するための値である。
次に、CPUはステップ1703に進み、現時点でRAMに記憶されている速度変化の乖離度e1及び速度変化の乖離度e2の数を取得(カウント)する。
次に、CPUはステップ1704に進み、「直前のステップ1701で算出された速度変化の乖離度e1」が「直前のステップ1702で算出された速度変化の乖離度e2」以下であるか否かを判定する。
上述したように、速度変化の乖離度e1の値が小さいほど「通信車が先々行車らしくない」と推測できる。また、速度変化の乖離度e2の値が大きいほど「通信車が先々行車らしくない」と推測できる。そのため、速度変化の乖離度e1≦速度変化の乖離度e2が成立する場合、「通信車が先々行車らしくない」と推測できる。一方、速度変化の乖離度e1≦速度変化の乖離度e2が成立しない場合、「通信車が先々行車らしい」と推測できる。
速度変化の乖離度e1が速度変化の乖離度e2以下である場合、CPUはステップ1704にて「Yes」と判定してステップ1705に進み、自車10と通信車との間の通信データが更新されているか否かを判定する。
自車10と通信車との間の通信データが更新されている場合、CPUはステップ1705にて「Yes」と判定してステップ1706に進み、非先々行車度カウンタに「1」を加算する。この非先々行車度カウンタとは、速度変化の乖離度e1及び速度変化の乖離度e2に基づき算出される「通信車が先々行車らしくない」度合を表すものであり、数値が大きくなればなるほど「通信車が先々行車らしくない」度合が高くなる。
次に、CPUはステップ1707に進み、RAMに記憶されている速度変化の乖離度e1及び速度変化の乖離度e2の数(バッファ数)が所定値以上であるか否かを判定する。速度変化の乖離度e1及び速度変化の乖離度e2の数が所定値以上であれば、先行車11と通信車との乖離度を判定するのに十分な数の速度変化の乖離度e1及び速度変化の乖離度e2が既に取得されていると判断できる。
なお、CPUはステップ1704及びステップ1705の何れかにて「No」と判定した場合、ステップ1707に直接進む。
RAMに記憶されている速度変化の乖離度e1及び速度変化の乖離度e2の数が所定値以上である場合、CPUはステップ1707にて「Yes」と判定してステップ1708に進み、非先々行車度apn=非先々行車度カウント数/バッファデータ数を算出する。即ち、CPUは現在の時刻までに取得された全ての速度変化の乖離度e1と速度変化の乖離度e2のペアの中に、どの程度の割合で速度変化の乖離度e1≦速度変化の乖離度e2の条件を満たしているペアが存在しているかを算出する。非先々行車度apnの数値が大きくなればなるほど、通信車が先々行車らしくないと推測することが可能である。
その後、CPUはステップ1795を経由して図13のステップ1303に進む。
一方、RAMに記憶されている速度変化の乖離度e1及び速度変化の乖離度e2の数が所定値よりも小さい場合、CPUはステップ1707にて「No」と判定してステップ1709に進み、非先々行車度apnとして「0」を設定する。その後、CPUはステップ1795を経由して図13のステップ1303に進む。
ステップ1707にて「No」と判定される場合とは、先行車11と通信車との乖離度を判定するための速度変化の乖離度e1及び速度変化の乖離度e2の数が不十分な場合である。
CPUは図13のステップ1303に進むと、ステップ1301及びステップ1302でそれぞれ算出した速度変動量SHn及び非先々行車度apnをルックアップテーブル(マップ)に適用することにより補正係数fnを取得する。
図19に示したように、補正係数fn(n=1、2、3)を求めるためのルックアップテーブルは三種類(Mapf1(SHn,apn)、Mapf2(SHn,apn)及びMapf3(SHn,apn))が用意されている。
即ち、「図19の(a)及び(b)に例示されたテーブルMapf1(SHn,apn)」は速度変動量SHnの変動量が小さいSH1に対し特に適合されたテーブルである。「図19の(c)及び(d)に例示されたテーブルMapf2(SHn,apn)」は速度変動量SHnの変動量が中程度のSH2に対し特に適合されたテーブルである。「図19の(e)及び(f)に例示されたテーブルMapf3(SHn,apn)」は速度変動量SHnの変動量が大きいSH3に対し特に適合されたテーブルである。
なお、図19に示したテーブル(Mapf1(SHn,apn)、Mapf2(SHn,apn)、Mapf3(SHn,apn))のそれぞれは、非先々行車度apnが0.5及び0.7である場合のテーブルであるが、実際には、各テーブルは、非先々行車度apnの取り得る範囲(0〜1)のそれぞれの値に対して作成されている。また、各テーブルの引数である「速度変動量SHn及び非先々行車度apn」は各テーブルに対して共通である。
CPUは、ルックアップテーブルMapf1(SHn,apn)、Mapf2(SHn,apn)及びMapf3(SHn,apn)のそれぞれに基づき三種類の補正係数f1、f2、及びf3をそれぞれ求める。
ルックアップテーブルMapf1(SHn,apn)、Mapf2(SHn,apn)及びMapf3(SHn,apn)は、速度変動量SHnが大きくなればなるほど補正係数fnが大きくなり(「1」に近づいた後「1」を維持する)、且つ、速度変動量SHnが小さくなればなるほど補正係数fnが小さくなる(「0」に近づいた後「0」を維持する)ように作成されている。
更に、ルックアップテーブルMapf1(SHn,apn)、Mapf2(SHn,apn)及びMapf3(SHn,apn)は、非先々行車度apnが大きくなればなるほど補正係数fnが大きくなり、且つ、非先々行車度apnが小さくなればなるほど補正係数fnが小さくなるように作成されている。
従って、前述したように、速度変動量SHn及び非先々行車度apnが大きい場合に補正係数fnは大きくなり(「1」に近づき)、速度変動量SHn及び非先々行車度apnが小さい場合に補正係数fnは小さくなる(「0」に近づく)。
このように速度変動量SHnの大きさに対応した三種類のルックアップテーブルMapf1(SHn,apn)、Mapf2(SHn,apn)及びMapf3(SHn,apn)を用いて補正係数fnを算出しているので、速度変動量SHnの程度が大中小のいずれの場合も、速度変動量SHnの程度に応じた補正係数fnを精度よく算出することが可能である。
CPUはステップ1301乃至ステップ1303の処理と並行して、ステップ1304乃至ステップ1312の処理を行う。
CPUはステップ1304において、下記の式を利用して通信車速度Vcと先行車速度Vfrの平均二乗誤差MSを演算し、演算した平均二乗誤差MSをRAMに記憶する。
m:RAMに記憶されている通信車速度Vc及び先行車速度Vfrの数
先行車速度Vfrと通信車速度Vcとが、過去の所定時点から現時点までの期間において近しい値を取り続けているほど平均二乗誤差MSは小さくなる。即ち、平均二乗誤差MSは、先行車速度Vfrと通信車速度Vcとが類似している程度を表す指標値(誤差統計量の一つ)である。
次に、CPUはステップ1305に進み、図20にフローチャートにより示したルーチンを実行して、ステップ1304で取得した平均二乗誤差MS全てを平均化処理する。従って、CPUはステップ1305に進むと、図20のステップ2000から処理を開始してステップステップ2001に進み、前回のステップ1305の処理から今回の処理の間に、自車10の直前を走行している車両が先行車11から別の車両に変化したか、又は、通信車と自車10との間の無線通信が遮断したか否かを判定する。
ステップ2001の条件の何れかが成立している場合、CPUはステップ2001にて「Yes」と判定してステップ2002に進み、これまでに取得した平均二乗誤差MSをRAMから全て消去すると共に、これまでに取得した平均二乗誤差MSの総和(合計値)及び総個数を何れも「0」に設定する。その後、CPUはステップ2006に進む。
これに対し、ステップ2001の条件の何れもが成立していない場合、CPUはステップ2001にて「No」と判定してステップ2003に進み、前回のステップ1305の処理時から今回の処理時の間に通信車情報が更新されたか否かを判定する。
前回のステップ1305の処理時から今回の処理時の間に通信車情報が更新されている場合、CPUはステップ2003にて「Yes」と判定し、以下に述べるステップ2004及びステップ2005の処理を順に行う。その後、CPUはステップ2006に進む。
ステップ2004:CPUは、現時点での平均二乗誤差MSの総和を演算する。具体的には、前回のステップ2004の処理時に取得した平均二乗誤差MSの和(前回値)に、直前のステップ1304で取得した平均二乗誤差MSの値を加算することにより、平均二乗誤差MSの総和を更新する。
ステップ2005」CPUは、現時点での平均二乗誤差MSの総個数を演算する。具体的には、前回のステップ2005の処理時に取得した平均二乗誤差MSの合計数に「1」を加算することにより、平均二乗誤差MSの総個数を更新する。
一方、CPUがステップ2003の処理を実行する時点において前回のステップ1305の処理時から今回の処理時の間に通信車情報が更新されていない場合、CPUはそのステップ2003にて「No」と判定してステップ2006に直接進む。
CPUはステップ2006に進むと、ステップ2002又は2005を経由してステップ2006に進んだ場合、ステップ2002又は2005で取得した平均二乗誤差MSの総個数が、所定の閾値bl(下限数)以上であるか否かを判定する。一方、CPUがステップ2003で「No」と判定してステップ2006に直接進んだ場合、前回のステップ1305の処理時のステップ2002又は2005で取得した平均二乗誤差MSの総個数が閾値bl以上であるか否かを判定する。
前記平均二乗誤差MSの総個数が閾値bl以上である場合、CPUはステップ2006にて「Yes」と判定してステップ2007へ進み、ステップ2002又は2004で取得した平均二乗誤差MSの総和を、ステップ2002又は2005で取得した平均二乗誤差MSの総個数で除することにより平均二乗誤差MSの平均値(H2E)を算出する。その後、CPUはステップ2095を経由して図13のステップ1306に進む。
これに対し、前記平均二乗誤差MSの総個数が閾値blよりも小さい場合、CPUはステップ2006にて「No」と判定してステップ2008に進み、RAMに記憶されている初期値(定数)を平均二乗誤差MSの平均値として設定する。
この初期値は大きな値の定数である。そのため、自車10の直前に位置する車両が先行車11から別の車両に変化したり、RAMに蓄積された平均二乗誤差MSの個数が少なかったりした場合のように、通信車が先行車11であるか否かを正確に判定するためにはまだ平均二乗誤差MSのデータが少ない場合に、平均二乗誤差MSの平均値が小さな値となることがない。即ち、ステップ2008をこのような処理とすることにより、このような場合にCPUが「先行車速度Vfrと通信車速度Vcとが類似している」という誤判定を行うリスクを低くしている。
その後、CPUはステップ2095を経由して図13のステップ1306に進む。
CPUは図13のステップ1306に進むと、ステップ1305で取得した平均二乗誤差MSの平均値(H2E)をルックアップテーブル(マップ)に適用することにより類似度g1nを取得する。
補正係数fn用のルックアップテーブルと同様にこのルップアップテーブルも、速度変動量SHnの大きさ(大、中、小)のそれぞれに特化した三種類(Mapg11(H2E)、Mapg12(H2E)及びMapg13(H2E))が用意されている(図示略)。ルックアップテーブルMapg11(H2E)、Mapg12(H2E)及びMapg13(H2E)のそれぞれは、平均二乗誤差MSの平均値(H2E)が小さいほど類似度g1n(n=1,2,3)の値が大きくなるように作成されている。
そして、CPUは、ルックアップテーブルMapg11(H2E)、Mapg12(H2E)及びMapg13(H2E)に基づき三種類の類似度g1nをg11、g12及びg13としてそれぞれ求める。従って、速度変動量SHnの程度が大中小のいずれの場合も、平均値(H2E)の程度に応じた類似度g1nを精度よく算出することが可能である。
一方、ステップ1307においては、CPUは、速度変化の乖離度e1=|dVc−dVfr|/min(|dVc|、|dVfr|)を算出し、算出した速度変化の乖離度e1をRAMに記憶する。
次に、CPUはステップ1308に進み、ステップ1307で算出した速度変化の乖離度e1を平均化処理することにより速度変化の乖離度e1の平均値(He1)を算出する。この平均化処理の方法はステップ1305(図20のフローチャート)と同様である。
次に、CPUはステップ1309に進み、ステップ1308で取得した速度変化の乖離度e1の平均値(He1)をルックアップテーブル(マップ)に適用することにより類似度g2n(n=1,2,3)を取得する。
補正係数fn用のルックアップテーブルと同様にこのルップアップテーブルも、速度変動量SHnの大きさ(大、中、小)のそれぞれに特化した三種類(Mapg21(He1)、Mapg22(He1)、Mapg23(He1))が用意されている(図示略)。ルックアップテーブルMapg21(He1)、Mapg22(He1)及びMapg23(He1)のそれぞれは、乖離度e1の平均値(He1)が小さいほど類似度g2nの値が大きくなるように作成されている。
そして、CPUは、ルックアップテーブルMapg21(He1)、Mapg22(He1)、Mapg23(He1)に基づき三種類の類似度g2nをg21、g22及びg23を取得する。従って、速度変動量SHnの程度が大中小のいずれの場合も、平均値(He1)の程度に応じた類似度g2nを精度よく算出することが可能である。
一方、ステップ1310においては、CPUは、下記の式を利用して速度相関係数coef(correlation coefficient)を算出し、算出した速度相関係数coefをRAMに記憶する。
周知なように、相関係数coefは、2つのパラメータの間の相関(類似性の度合い)を示す統計量である。原則的には、相関係数は「−1」から「1」の間の実数であり、相関係数が「1」に近いほど2つのパラメータには正の相関があり、2つのパラメータの類似度は高い。相関係数が「0」に近くなるにつれ2つのパラメータの相関は弱くなる。相関係数が「−1」に近いほど2つのパラメータには負の相関がある。従って、本例において速度相関係数coefが「1」に近いほど、通信車速度Vcと先行車速度Vfrとの類似性は高い。
更に、CPUは、ステップ1310の処理と並行して図21にフローチャートに示したルーチンを実行する。従って、CPUは、所定のタイミングになると、図21のステップ2100から処理を開始してステップ2101に進み、a=sum((Vfr(i)−ave(Vfr))2が所定の閾値x以下であるか否かを判定する。なお、sum(Z)は、変数Zの総和をとる関数であり、ave(Z)は変数Zの平均をとる関数である。
a=sum((Vfr(i)−ave(Vfr))2が所定の閾値x以下である場合、CPUはステップ2101にて「Yes」と判定してステップ2102に進み、b=sum((Vc(i)−ave(Vc))2が所定の閾値y以下であるか否かを判定する。ここでも、sum(Z)は、変数Zの総和をとる関数であり、ave(Z)は変数Zの平均をとる関数である。
通信車速度Vcと先行車速度Vfrの速度変動量が小さい場合に、ステップ2101又はステップ2102でCPUが「No」と判定する。通信車速度Vcと先行車速度Vfrの速度変動量が小さい場合は、CPUによる通信車の特定に関する最終判定に誤りが発生し易い。そのため、CPUがステップ2101又はステップ2102で「No」と判定した場合は、ステップ1310で取得した速度相関係数coefを、次のステップ1311の平均化処理に利用しない方がよい。従って、この場合、CPUはステップ2104に進む。即ち、CPUは前回のステップ1311で取得した平均値Hcfを保持し且つステップ1312に進む。
一方、CPUがステップ2101及び2102で「Yes」と判定した場合は、ステップ1310で取得した速度相関係数coefを平均化処理に利用すべく、CPUはステップ2103に進む。即ち、CPUはステップ1311に進む。
CPUはステップ1311に進むと、速度相関係数coefを平均化処理することにより速度相関係数coefの平均値(Hcf)を取得する。この平均化処理の方法はステップ1305(図20のフローチャート)と同様である。
次に、CPUはステップ1312に進み、ステップ1311で取得した速度相関係数coefの平均値(Hcf)をルックアップテーブル(マップ)に適用することにより類似度g3nを取得する。
補正係数fn用のルックアップテーブルと同様にこのルップアップテーブルも、速度変動量SHnの大きさ(大、中、小)のそれぞれに特化した三種類(Mapg31(Hcf)、Mapg32(Hcf)、Mapg33(Hcf))が用意されている(図示略)。ルックアップテーブルMapg31(Hcf)、Mapg32(Hcf)、Mapg33(Hcf)のそれぞれは、速度相関係数coefの平均値(Hcf)が1に近いほど類似度g3n(n=1,2,3)の値が大きくなるように作成されている。
そして、CPUは、ルックアップテーブルMapg31(Hcf)、Mapg32(Hcf)及びMapg33(Hcf)に基づき三種類の類似度g3nをg31、g32及びg33としてそれぞれ求める。従って、速度変動量SHnの程度が大中小のいずれの場合も、類似度g3nを精度よく算出することが可能である。
CPUはステップ1303、ステップ1306、ステップ1309及びステップ1312の処理が完了すると、ステップ1313に進み、類似度g1n、g2n、g3n及び補正係数fnのnの値が同じものどうしを掛け合わせて最終先行車確率Pn(=P1、P2、P3)を算出する。
次に、CPUはステップ1314に進み、ステップ1313で算出した最終先行車確率P1、P2及びP3の中から最も数値が大きいものを最終先行車確率Pとして一つだけ選択する。
次に、CPUはステップ1315に進み、「ステップ1314で選択した1つの最終先行車確率Pが所定の閾値Pth以上である通信車」を候補車として抽出する。図22に示したように、この閾値PthはCPUが図13のルーチンを開始してからの経過時間に応じて変化する。即ち、閾値Pthは、時刻teまでは最も大きな値の一定値をとり、時刻teの経過後、徐々に低下し、時刻tf以降は最小値を維持する。
更に、CPUは、所定時間が経過する毎に図23にフローチャートにより示したルーチンを実行するようになっている。
従って、所定のタイミングになると、CPUは図23のステップ2300から処理を開始してステップ2310に進み、CACCスイッチ22の位置がオン位置に設定されているか否かを判定する。CACCスイッチ22の位置がオフ位置に設定されていると、CPUはステップ2310からステップ2395に直接進んで本ルーチンを一旦終了する。
CACCスイッチ22の位置がオン位置に設定されていると、CPUはステップ2310にて「Yes」と判定してステップ2320に進み、通信追従対象車が特定済みであるか否かを判定する。通信追従対象車が特定済みである場合、CPUは以下に述べるステップ2330乃至ステップ2360の処理を順に行い、ステップ2395に進んで本ルーチンを一旦終了する。
ステップ2330:CPUは、通信追従対象車から車車間通信により送信されてくる要求加速度Gcに所定のゲインKgを乗じた値をフィードフォワード要求加速度FFGとして算出する。ゲインKgは、本例において「1」であるが、特開2015−51716号公報に記載している手法により自車10の運転状態に応じて設定されてもよい。なお、CPUは、通信追従対象車から送信されてくる他車通信情報に通信追従対象車の実際の加速度Gaが含まれている場合、要求加速度Gcにハイパスフィルタを施した値と、加速度Gaにローパスフィルタを施した値と、の和をフィードフォワード要求加速度FFGとして求めても良い。
ステップ2340:CPUは、下記の(11)式に従ってフィードバック要求加速度FBGを算出する。ΔDは車間偏差、Dtgtは目標車間距離、Vrは前述した相対速度である。
ステップ2350:CPUは、フィードフォワード要求加速度FFGとフィードバック要求加速度FBGとの和を、最終的な自車10の目標加速度Gtgtとして算出する。なお、CPUは、フィードフォワード要求加速度FFG及びフィードバック要求加速度FBGの加重平均値を目標加速度Gtgtとして算出してもよい。
ステップ2360:CPUは、自車10の実際の加速度が目標加速度Gtgtに一致するように、エンジン制御ECU30及びブレーキ制御ECU40に目標加速度Gtgtを送信する。エンジン制御ECU30及びブレーキ制御ECU40は、目標加速度Gtgtに応じて、エンジンアクチュエータ32及びブレーキアクチュエータ43をそれぞれ制御(駆動)する。この結果、自車10の実際の加速度が目標加速度Gtgtに一致させられる。以上の処理によりCACCが実行される。
一方、CPUがステップ2320の処理を行う際、通信追従対象車の特定が終了していない場合(通信追従対象車が存在しない場合、及び、通信追従対象車が存在しなくなった場合も含む。)、CPUはステップ2320にて「No」と判定してステップ2370に進み、フィードフォワード要求加速度FFGの値を「0」に設定し、その後、ステップ2340以降に進む。この結果、ACCが実行される。なお、車間偏差ΔDが閾値車間偏差以上になる場合、自車速Vjが所定速度になるようにフィードバック要求加速度FBGが変更される。
尚、本発明は、前記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。
例えば、図7のステップ705乃至ステップ715の処理を省略してもよい。この場合、CPUはステップ700から処理を開始するとステップ720に進む。
更に、図2のステップ240乃至ステップ260において、速度類似度gが所定の類似度gth以上である候補車をそれぞれPVg候補車、Vg候補車及びPg候補車として抽出してもよい。
例えば、自車速Vjは、図示しない各車輪に設けられた車輪速センサの検出信号に基づいて取得されてもよい。更に、自車レーダセンサ61は、光波(例えばレーザー)又は超音波等を発信及び受信するセンサであってもよい。
更に、図9のステップ930の判定を省略してもよい。この場合、CPUはステップ925にて「Yes」と判定するとステップ935に進む。加えて、ステップ965の判定を省略してもよい。この場合、CPUはステップ960にて「Yes」と判定したとき、ステップ970に進む。
更に、図13のステップ1301及びステップ1302における速度変動量SHn及び非先々行車度apnの算出に、通信車速度Vcではなく通信車速度Vcbを利用してもよい。更に、図15に示した補正係数k1を、ΔVfrの大きさにかかわらず「1」としてもよい。