以下、図面を参照して、本発明に係る車両搭載カメラの光軸調整方法の実施の形態を説明する。
本実施の形態では、本発明に係る車両搭載カメラの光軸調整方法を、車両に搭載された白線検出ECU[Electronic Control Unit]、車間制御ECU及びCAN通信システムと車両製造工場やディーラに配備されるテスタ及びターゲットとで構成される光軸調整システムにおける光軸調整に適用する。本実施の形態に係る光軸調整システムでは、白線検出ECUが車間制御ECUをバイパスとしてCAN通信システムによりテスタと通信可能である。本実施の形態に係る白線検出ECUは、車線を示す白線を検出するための画像情報を取得するカメラの光軸調整を行う機能を有し、光軸調整用の補正量としてFOE(X方向、Y方向)の補正量及びカメラのロール角を求める。本実施の形態では、このFOEの補正量及びロール角を求めるために3つのターゲットが利用され、3つのターゲットを3箇所に各々配置させて同時に利用する場合と1つのターゲットを3箇所に順次移動させて個別ターゲットとして利用する場合がある。
図1及び図2を参照して、光軸調整システム1について説明する。図1は、本実施の形態に係る光軸調整システムの構成図である。図2は、本実施の形態に係るターゲットと車両搭載カメラとの位置関係を示す図であり、(a)が側面図であり、(b)が平面図である。
光軸調整システム1は、車両の製造工場又はディーラにおいて車両搭載カメラの光軸調整を行うときに構築される。光軸調整システム1では、光軸調整用の補正量として、画面上の中心(FOE)とカメラの中心とのずれであるFOEの補正量を求めるとともに、カメラの傾きを示すロール角を求める。そのために、光軸調整システム1は、車両2、製造工場やディーラに配備される検査装置としてのテスタ3及びターゲット4から構成される。製造工場では、車両2が検査ラインを流れ、検査ライン上のターゲット4が配置されている位置で車両2に対して順々に光軸調整を行う。また、ディーラでは、ターゲット4が配置されている場所に車両2を移動させ、その位置で車両2に対して一台づつ光軸調整を行う。
車両2は、操舵支援システム2a及び車間制御システム2bを備えている。操舵支援システム2aでは、車両2が車線を示す左右両側の白線の中央を走行するように操舵をアシストする。操舵支援システム2aは、カメラ10、白線検出ECU11、車間制御ECU12を備えている。操舵支援システム2aでは、カメラ10で車両2の前方の左右両側の白線を含む広い範囲を撮影し、白線検出ECU11でカメラ10からの画像情報に基づいて2本の白線を検出する。さらに、操舵支援システム2aでは、車間制御ECU12でその検出した白線情報から2本の白線の中心を演算し、その白線の中心に車両2の中心が一致するように目標操舵トルクを演算し、目標操舵トルクになるように操舵アクチュエータ(図示せず)を制御する。また、車間制御システム2bは、レーザレーダセンサ13、車間制御ECU12を備えている。車間制御システム2bでは、レーザレーダセンサ13で前車との距離を検出し、車間制御ECU12で前車との車間距離を一定距離以上に保つように目標車速(あるいは、目標加減速度)を演算する。そして、車間制御システム2bでは、車間制御ECU12で目標車速となるように、駆動力やブレーキ力を制御する。
このカメラ10からピントが合った精度の高い画像情報を得るために、製造工場又はディーラにおいて光軸調整が施される。そのために、車両2では、白線検出ECU11が光軸調整を行うための主要な処理を行い、さらに、車間制御ECU12やCAN通信システム14がテスタ3との通信で利用される。白線検出ECU11は、光軸調整を行うためのソフトウエアが組み込まれており、このソフトウエアにより光軸調整処理を行う。車間制御ECU12は、白線検出ECU11とテスタ3との通信を実現するためのソフトウエアが組み込まれており、白線検出ECU11とテスタ3とのバイパスとして機能する。
白線検出ECU11では、テスタ3側と光軸調整に関する情報を遣り取りするために、テスタ3と通信を行うためにCAN通信システム14を利用する。白線検出ECU11は、CAN通信システム14に直接接続していないので、CAN通信するためのCANI/F12aを備える車間制御ECU12を介してCAN通信を行う。白線検出ECU11と車間制御ECU12との間は、シリアル通信が行われる。また、白線検出ECU11では、光軸調整処理を実行する際の開始条件を判定するために、車間制御ECU12及びCAN通信システム14を介して操舵支援スイッチ15及び車速センサ16から情報を取得する。ちなみに、操舵支援スイッチ15は、ステアリングホイール(図示せず)に設けられ、操舵支援を行うか否かを選択するためのスイッチである。光軸調整を行うか否かは、操舵支援スイッチ15がオンされていることが開始条件の一つとなる。また、白線検出ECU11では、光軸調整を行っていることを作業者に知らせるために、車間制御ECU12及びCAN通信システム14を介してブザー17及びメータECU18に指令を出す。
また、白線検出ECU11では、車間制御ECU12を介したCAN通信が異常と判定した場合には、CANI/F12aにCANC信号を送信する。CANC信号は、車間制御ECU12によるCAN通信を強制的に禁止させる信号であり、オン(1)が強制停止であり、オフ(0)が非停止である。異常か否かを検出するために、白線検出ECU11では、車間制御ECU12に対して宿題演算を行わせる指令信号を送信する。その指令信号を受信すると、車間制御ECU12では、白線検出ECU11からの簡単な宿題演算(例えば、足し算)を実行し、その宿題を実行し、宿題の回答を白線検出ECU11に対して送信する。そして、白線検出ECU11では、その宿題の回答が正しいか否かを判断し、正しい場合には車間制御ECU12が正常と判定し、正しくない場合や回答が送信されてこない場合には車間制御ECU12が異常と判定する。この異常と判定した場合に、白線検出ECU11では、CANI/F12aにCANC信号を送信する。
カメラ10は、図2に示すように、車両内部に、車両2中心より運転席側(右ハンドル車)の最上部に配置される。カメラ10は、車両2の前方の下方を撮影するように取り付けされ、左右両側の白線を十分含む範囲を撮影する。カメラ10の配置情報は、車両2の中心Cからのオフセット量O(m)、地面からの高さH(m)、水平面Wとなす角である仰角A(°)である。高さHは、フロントホイールアーチの高さH1とフロントホイールアーチからカメラ10までの距離H2とを加算して求められる。フロントホイールアーチの高さH1は、製造工場やディーラに配備される測定装置によって測定される。
テスタ3は、車両検査を行うための検査装置であり、車両2のCAN通信システム14と接続可能である。また、テスタ3は、ダイアグノース(診断ツール)を備え、車両の各種状態をスキャンできる。テスタ3では、光軸調整を行う際に、作業者による手動又は自動で各種情報を車両2側に送信するとともに、車両2側から各種情報を受信する。
ターゲット4は、水平方向に各々配置されたターゲット1、ターゲット2、ターゲット3からなる。ターゲット1は、その中心が画面中心(FOE)となる位置に配置される。したがって、カメラ10の光軸(画像中心)と画面中心とにずれがない場合にはカメラ10の光軸上にターゲット1の中心が位置する。ターゲット2は、ターゲット1と同じ高さで、車両2側から見てターゲット1の左側にターゲット1から一定距離あけて配置される。ターゲット3は、ターゲット1と同じ高さで、車両2側から見てターゲット1の右側にターゲット1から一定距離あけて配置される。ターゲット1とターゲット2との間隔は、ターゲット1とターゲット3との間隔と同一である。ターゲットの配置情報としては、ターゲット2の中心とターゲット3の中心との間隔Wtarget(m)、地面からターゲットの中心までの高さHterget(m)、カメラ10の前面からの距離Lterget(m)でもよいし、あるいは、ターゲット1〜3それぞれのターゲット1を基準(0m)とした左右方向の中心の位置(m)、地面からの中心の高さHterget(m)、カメラ10の前面からの距離Lterget(m)でもよい。
なお、ターゲット4は、製造工場やディーラにスペースがある場合には、3つのターゲットで3つのターゲット配置箇所に各々配置されてターゲット1〜3を構成してもよい。この場合、3つのターゲット1〜3を同時に利用して光軸調整用の補正量を1度に求めるので、本実施の形態では全ターゲット同時学習と呼ぶ。また、ターゲット1〜3は、製造工場やディーラに十分なスペースがない場合には、1つのターゲットを3つのターゲット配置箇所に順次移動させてターゲット1〜3を構成してもよい。この場合、ターゲット1〜3を個別に利用して光軸調整用の補正量を順に求めるので、本実施の形態ではターゲット1学習、ターゲット2学習、ターゲット3学習とそれぞれ呼び、それぞれが個別ターゲット学習である。ちなみに、本実施の形態では、ターゲットを利用して光軸調整用の補正量を求めることを「学習」と呼ぶ。
光軸調整システム1における白線検出ECU11、車間制御ECU12、テスタ3の情報の流れ及び動作について説明する。
まず、光軸調整を行う場合、作業者が、操舵支援スイッチ15をオンし、車両2を停止状態(車速0km/h)とする。この際、車両2の前方にターゲット4が配置される。ターゲット4としては、全ターゲット同時学習の場合にはターゲット1〜3が全て配置又は個別ターゲット学習の場合にはターゲット1〜3のいずれか1つが配置される。ターゲット1〜3のいずれか1つが配置される場合、各ターゲット1〜3を利用した光軸調整が完了する毎に、作業者が手動又は自動で、あるターゲット配置箇所に配置さているターゲットを他のターゲット配置箇所に移動させる。そして、作業者は、テスタ3からCAN通信システム14を介して車間制御ECU12に各種情報を送信する。
各種情報としては、車両情報、カメラの配置情報、ターゲットの配置情報、モード情報、学習要求情報等である。車両情報は、車種、右ハンドルかあるいは左ハンドルか、2WDかあるいは4WDか、日本向けや米国向けの仕向け等の光軸調整用の補正量を求めるために必要な情報である。モード情報は、工場光軸調整モードか、あるいは、ディーラ光軸調整モードかである。学習要求情報は、全ターゲット同時学習要求か、ターゲット1学習要求か、ターゲット2学習要求か、あるいは、ターゲット3学習要求かである。
テスタ3からの各種情報を受信すると、車間制御ECU12では、モード情報及び操舵支援スイッチ15からのオン/オフ情報並び車速センサ16からの車速情報に基づいて、モード判定を行う。操舵支援スイッチ15がオンかつ車速が0km/hのときに、モード情報が工場光軸調整モードの場合には工場光軸調整モードとし、モード情報がディーラ光軸調整モードの場合にはディーラ光軸調整モードとし、それ以外の場合には操舵支援モードとする。さらに、車間制御ECU12では、判定したモード及び学習要求情報に基づいて、各種フラグを設定する。そして、車間制御ECU12では、設定した各フラグ、ターゲットの配置情報、カメラの配置情報及び車両情報を白線検出ECU11に送信する。
設定するフラグとしては、工場光軸調整要求フラグ、ディーラ光軸調整要求フラグ、操舵支援要求フラグ、ターゲット1学習要求フラグ、ターゲット2学習要求フラグ、ターゲット3学習要求フラグ、全ターゲット同時学習要求フラグ、FOE変更要求フラグ、機種変更要求フラグである。工場光軸調整要求フラグは、モードが工場光軸調整モードの場合には1であり、それ以外の場合には0である。ディーラ光軸調整要求フラグは、モードがディーラ光軸調整モードの場合には1であり、それ以外の場合には0である。操舵支援要求フラグは、モードが操舵支援モードの場合には1であり、それ以外の場合には0である。ターゲット1学習要求フラグは、工場光軸調整モード又はディーラ光軸調整モードであり、学習要求情報がターゲット1学習要求の場合には1であり、それ以外の場合には0である。ターゲット2学習要求フラグは、工場光軸調整モード又はディーラ光軸調整モードであり、学習要求情報がターゲット2学習要求の場合には1であり、それ以外の場合には0である。ターゲット3学習要求フラグは、工場光軸調整モード又はディーラ光軸調整モードであり、学習要求情報がターゲット3学習要求の場合には1であり、それ以外の場合には0である。全ターゲット同時学習要求フラグは、工場光軸調整モード又はディーラ光軸調整モードであり、学習要求情報が全ターゲット同時学習要求の場合には1であり、それ以外の場合には0である。FOE変更要求フラグは、工場光軸調整モード又はディーラ光軸調整モードの場合(すなわち、光軸調整量の補正量の書き換え要求がある場合)には1であり、それ以外の場合には0である。機種変更要求フラグは、白線検出ECU11で車両情報の書き込みをさせるか否かのフラグであり、車種情報を書き込ませる場合には1であり、それ以外の場合には0である。なお、全ターゲット同時学習の場合にはターゲット1学習要求フラグ、ターゲット2学習要求フラグ、ターゲット3学習要求フラグを設定及び送信しなくてもよい。また、ターゲット1〜3の個別ターゲット学習の場合には全ターゲット同時学習要求フラグを設定及び送信しなくてもよい。
車間制御ECU12からの各種情報や各種フラグを受信すると、白線検出ECU11では、光軸調整処理を実行する。白線検出ECU11では、機種変更要求フラグ1の場合には車両情報をEEPROM11aに書き込み、正常に書き込めない場合にはセンサ故障フラグに1を設定する。そして、白線検出ECU11では、工場光軸調整フラグが1の場合かつFOE変更要求フラグが1の場合又はディーラ光軸調整フラグが1の場合かつFOE変更要求フラグが1の場合、全ターゲット同時学習要求フラグ、ターゲット1学習要求フラグ、ターゲット2学習要求フラグ又はターゲット3学習要求フラグに基づいて学習を行うために利用するターゲットを決定し、そのターゲットを利用して学習を行う。個別ターゲット学習の場合にはターゲット1を利用した学習によってFOEの補正量を求めることができ、ターゲット2及びターゲット3を利用した学習によってロール角を求めることができる。また、全ターゲット同時学習の場合にはFOEの補正量及びロール角を一度に求めることができる。各学習後、白線検出ECU11では、車間制御ECU12からのフラグに対する各種応答フラグ及び全ターゲット同時学習終了フラグ又は個別ターゲット学習終了フラグを設定する。さらに、白線検出ECU11では、学習で求めた光軸調整用の補正量(FOEの補正量(X方向、Y方向)、ロール角)をEEPROM11aに書き込むとともにターゲット配置情報及びカメラ配置情報をEEPROM11aに書き込み、正常に書き込めない場合にはセンサ故障フラグに1を設定する。また、白線検出ECU11では、光軸調整が異常となった場合や規定時間中に学習を終了できない場合等には初期学習異常フラグに1を設定する。そして、白線検出ECU11では、設定した各種フラグや求めた光軸調整用の補正量を車間制御ECU12に送信する。なお、白線検出ECU11における光軸調整処理については、後で詳細に説明する。
各種応答フラグとしては、工場光軸調整応答フラグ、ディーラ光軸調整応答フラグ、操舵支援応答フラグ、ターゲット1学習応答フラグ、ターゲット2学習応答フラグ、ターゲット3学習応答フラグ、全ターゲット同時学習応答フラグ、FOE変更応答フラグである。工場光軸調整応答フラグは、工場光軸調整モードでの学習が正常に終了した場合には1であり、それ以外の場合には0である。ディーラ光軸調整応答フラグは、ディーラ光軸調整モードでの学習が正常に終了した場合には1であり、それ以外の場合には0である。操舵支援応答フラグは、操舵支援を正常に行っている場合には1であり、それ以外の場合には0である。ターゲット1学習応答フラグは、ターゲット1を利用した学習を正常に完了した場合には1であり、それ以外の場合には0である。ターゲット2学習応答フラグは、ターゲット2を利用した学習を正常に完了した場合には1であり、それ以外の場合には0である。ターゲット3学習応答フラグは、ターゲット3を利用した学習を正常に完了した場合には1であり、それ以外の場合には0である。全ターゲット同時学習応答フラグは、全ターゲットを同時に利用した学習を正常に完了した場合には1であり、それ以外の場合には0である。FOE変更応答フラグは、光軸調整用の補正量を正常にEEPROMに書き込めた場合には1であり、それ以外の場合には0である。全ターゲット同時学習終了フラグは、全ターゲットを同時に利用した学習が正常に終了し、光軸調整用の補正量を正常にEEPROM11aに書き込めた場合には1であり、それ以外の場合には0である。個別ターゲット学習終了フラグは、ターゲット1〜3を個別に利用した学習が全て正常に終了し、光軸調整用の補正量を正常にEEPROM11aに書き込めた場合には1であり、それ以外の場合には0である。なお、全ターゲット同時学習の場合には個別ターゲット学習終了フラグを設定及び送信しなくてもよい。また、ターゲット1〜3の個別ターゲット学習の場合には全ターゲット同時学習終了フラグを設定及び送信しなくてもよい。
白線検出ECU11からの各種フラグを受信すると、車間制御ECU12では、工場光軸調整モードの場合、全ターゲット同時学習終了フラグが0又は個別ターゲット学習終了フラグが0のときには学習が継続中と判定し、ブザー音を連続して鳴らすためのブザー信号をCAN通信システム14を介してブザー17に送信する。また、車間制御ECU12では、ディーラ光軸調整モードの場合、全ターゲット同時学習終了フラグが0又は個別ターゲット学習終了フラグが0のときには学習が継続中と判定し、ブザー音を数秒間鳴らすためのブザー信号をCAN通信システム14を介してブザー17に送信する。さらに、車間制御ECU12では、工場光軸調整モード又はディーラ光軸調整モードの場合、全ターゲット同時学習終了フラグが0又は個別ターゲット学習終了フラグが0のときには学習が継続中と判定し、メータ19に光軸調整中であることを表示させるためのメータ表示信号をCAN通信システム14を介してメータECU18に送信する。
また、車間制御ECU12では、工場光軸調整モード又はディーラ光軸調整モードの場合、全ターゲット同時学習終了フラグが1又は個別ターゲット学習終了フラグが1になると学習が終了したと判定し、ブザー音を断続して(例えば、0.5秒鳴らし、0.5秒消す)鳴らすためのブザー信号をCAN通信システム14を介してブザー17に送信するとともに、メータ19に光軸調整終了であることを表示させるためのメータ表示信号をCAN通信システム14を介してメータECU18に送信する。
さらに、車間制御ECU12では、各種応答フラグ及び全ターゲット同時学習終了フラグ又は個別ターゲット学習終了フラグ並びに光軸調整用の補正量をCAN通信システム14を介してテスタ3に送信する。
車間制御ECU12からの各種フラグを受信すると、テスタ3では、ダイアグノースに全ターゲット同時学習が完了か未完了か、ターゲット1学習が完了か未完了か、ターゲット2学習が完了か未完了か、ターゲット3学習が完了か未完了かを書き込む。また、車間制御ECU12からの光軸調整用の補正量を受信すると、テスタ3では、ダイアグノースにFOEの補正量及びロール角を書き込む。また、テスタ3側(作業者を含む)では、個別ターゲット学習の場合、各ターゲット学習完了フラグに基づいて各個別ターゲット学習が完了したか否かを判断し、完了した場合には次のターゲットに対する学習に移る。また、テスタ3側では、全ターゲット同時学習終了フラグ又は個別ターゲット学習終了フラグに基づいて車両2に対する光軸調整が全て終了したか否かを判断し、終了した場合には次の車両2に対する光軸調整に移る。
次に、白線検出ECU11における光軸調整処理について詳細に説明する。白線検出ECU11では、車間制御ECU12を介してテスタ3からのターゲットを利用した学習要求を受けると、光軸調整処理を行うためのメインルーチンを一定時間毎に実行する。白線検出ECU11における光軸調整処理のメインルーチンについて図3のフローチャートに沿って説明する。図3は、白線検出ECUにおける光軸調整処理のメインルーチンを示すフローチャートである。
まず、メインルーチンでは、機能コード設定サブルーチンを実行し、車間制御ECU12からのモード情報に基づいて機能コードを設定する(S1)。
続いて、メインルーチンでは、光軸調整モード移行判定サブルーチンを実行し、光軸調整モードに移行したか否かを判定し、光軸調整モードに移行していないと判定した場合にはメインルーチンを終了する(S2)。
続いて、メインルーチンでは、光軸調整を正常に行うことができるか否かの異常判定を行い、異常がある場合にはメインルーチンを終了する(S3)。この異常判定では、工場光軸調整モード変化判定サブルーチン、ディーラ光軸調整モード変化判定サブルーチン、全ターゲット同時学習許可変化判定サブルーチン、ターゲット3学習許可変化判定サブルーチン、ターゲット2学習許可変化判定サブルーチン、ターゲット1学習許可変化判定サブルーチン、学習中EEPROMクリア要求判定サブルーチン、学習中EEPROM書換要求判定サブルーチン、初期学習異常フラグ設定サブルーチンを実行する。
S3にて異常がない場合、メインルーチンでは、車両情報書込サブルーチンを実行し、初めて光軸調整モードに入った場合には車間制御ECU12からの車両情報をEEPROM11aに書き込む(S4)。続いて、メインルーチンでは、S3と同様の異常判定を行い、異常がある場合にはメインルーチンを終了する(S5)。
S5にて異常がない場合、メインルーチンでは、EEPROM11aの変更を許可されているか否か(FOE変更要求フラグが1か否か)を判定し(S6)、変更が許可されていない場合にはS8の処理に移行し、変更が許可されている場合にはターゲット配置情報及びカメラ配置情報をEEPROM11aに書き込む(S7)。続いて、メインルーチンでは、S3と同様の異常判定を行い、異常がある場合にはメインルーチンを終了する(S8)。
S8にて異常がない場合、メインルーチンでは、学習を許可できるか否かを判定し、許可できない場合にはS16の処理に移行する(S9)。この許可判定では、まず、学習許可フラグ設定サブルーチンを実行し、さらに、ターゲット別学習許可フラグ設定サブルーチンを実行する。
学習を許可すると、メインルーチンでは、ターゲット別学習開始フラグ設定サブルーチンを実行し、各ターゲットに対する学習を開始するか否かを判定し、学習を開始しない場合にはS16の処理に移行する(S10)。そして、メインルーチンでは、学習開始と判定した場合には学習を開始する(S11)。この学習開始では、全ターゲット同時学習の場合には全ターゲット同時学習中フラグ設定サブルーチンを実行し、ターゲット3学習の場合には順位毎ターゲット3学習中フラグ設定サブルーチンを実行し、ターゲット2学習の場合には順位毎ターゲット2学習中フラグ設定サブルーチンを実行し、ターゲット1学習の場合には順位毎ターゲット1学習中フラグ設定サブルーチンを実行する。
続いて、メインルーチンでは、ターゲット配置情報、カメラ配置情報及び車両情報に基づいて光軸補正用の補正量を演算する(S12)。この際、個別ターゲット学習の場合、ターゲット1、ターゲット2、ターゲット3に分けて3度の学習が行われ、ターゲット1による学習によってFOEの補正量が求められ、ターゲット2による学習及びターゲット3による学習によってカメラのロール角が求められる。また、全ターゲット同時学習の場合、全ターゲットによる1度の学習が行われ、FOEの補正量及びロール角を求められる。
学習を開始すると、メインルーチンでは、全ターゲット又は各個別ターゲットによる学習が完了したか否かを判定し、完了するまで光軸補正用の補正量の演算を継続する(S13)。この完了判定では、全ターゲット同時学習の場合には全ターゲット同時学習終了フラグ設定サブルーチンを実行し、ターゲット3学習の場合にはターゲット3学習終了フラグ設定サブルーチンを実行し、ターゲット2学習の場合にはターゲット2学習終了フラグ設定サブルーチンを実行し、ターゲット1学習の場合にはターゲット1学習終了フラグ設定サブルーチンを実行する。なお、全ターゲット同時学習の場合には全ターゲット同時学習が完了した時点で学習が全て終了したことになり、個別ターゲット学習の場合にはターゲット1学習、ターゲット2学習、ターゲット3学習の3つの学習が全て完了して時点で学習が全て終了したことになる。したがって、S9〜S13までの処理は、全ターゲット同時学習の場合には1度だけ行われ、個別ターゲット学習の場合には3回繰り返し行われる。
学習が全て終了すると、メインルーチンでは、EEPROM11aの変更を許可されているか否か(FOE変更要求フラグが1か否か)を判定し(S14)、変更が許可されていない場合にはS16の処理に移行し、変更が許可されている場合には求めた光軸調整用の補正量をEEPROM11aに書き込む(S15)。続いて、メインルーチンでは、S3と同様の異常判定を行い、異常がある場合にはメインルーチンを終了する(S16)。
S16にて異常がない場合、メインルーチンでは、テスタ3から人為的又は車間制御ECU12の要求によりEEPROM11aのクリアが許可されているか否か判定し(S17)、許可されていない場合にはS19の処理に移行し、クリア許可されている場合にはEEPROM11aの書き込まれた内容をクリアする(S18)。ちなみに、車両2が光軸調整中に動いた等の異常が発生すると、再光軸調整するために作業者が意図的にEEPROM11aの内容のクリア要求を出す場合や再光軸調整のときに車間制御ECU12が自動的にクリア要求を出す場合がある。
最後に、メインルーチンでは、EEPROM11aから光軸調整用の補正量を読み出し、車間制御ECU12に送信する(S19)。
ここで、学習に関するフラグについて説明しておく。学習許可フラグ[a_s]は、光軸調整による学習を許可するか否かのフラグであり、許可する場合には1であり、非許可の場合には0である。全ターゲット同時学習許可フラグ[a_sa]、ターゲット3学習許可フラグ[a_s3]、ターゲット2学習許可フラグ[a_s2]、ターゲット1学習許可フラグ[a_s1]は、各ターゲットによる学習を許可するか否かのフラグであり、許可する場合には1であり、非許可の場合には0である。全ターゲット同時学習開始フラグ[sa_st]、ターゲット3学習開始フラグ[s3_st]、ターゲット2学習開始フラグ[s2_st]、ターゲット1学習開始フラグ[s1_st]は、各ターゲットによる学習を開始するか否かのフラグであり、開始する場合には1であり、開始しない場合には0である。全ターゲット同時学習中フラグ[sa_sp]、ターゲット3学習中フラグ[s3_sp]、ターゲット2学習中フラグ[s2_sp]、ターゲット1学習中フラグ[s1_sp]は、各ターゲットによる学習が継続中か否かのフラグであり、継続中の場合には1であり、継続中でない場合には0である。全ターゲット同時学習完了フラグ[sa_f]、ターゲット3学習完了フラグ[s3_f]、ターゲット2学習完了フラグ[s2_f]、ターゲット1学習完了フラグ[s1_f]は、各ターゲットによる学習が完了したか否かのフラグであり、完了した場合には1であり、完了していない場合には0である。全ターゲット同時学習終了フラグ[sa_e]、ターゲット3学習終了フラグ[s3_e]、ターゲット2学習終了フラグ[s2_e]、ターゲット1学習終了フラグ[s1_e]は、全ターゲット同時学習の場合には全ターゲット同時学習が完了してEEPROM11aに補正量を書き込みまたは個別ターゲット学習の場合には3つの個別ターゲット学習が全て完了してEEPROM11aに補正量を書き込み、学習が全て終了したか否かのフラグであり、終了した場合には1であり、終了していない場合には0である。
また、異常に関するフラグについても説明しておく。初期学習異常フラグ[w_f]は、光軸調整で異常がある場合には1であり、正常の場合には0である。初期学習異常フラグを構成する全ての異常フラグ[w_f(all)]は、機能コード変化異常フラグ[wse0]、ターゲット1学習許可変化異常フラグ[wse1]、ターゲット2学習許可変化異常フラグ[wse2]、ターゲット3学習許可変化異常フラグ[wse3]、全ターゲット同時学習許可変化異常フラグ[wse4]、クリア要求発生異常フラグ[wse5]、書換要求発生異常フラグ[wse6]、この7つの異常フラグ[wse0〜wse6]のまとめ異常フラグ[wsea]、カメラ角度異常フラグ[wse10]、学習時間異常フラグ[wse11]、ターゲット相対位置異常フラグ[wse12]、ターゲット数異常フラグ[wse13]、この4つの異常フラグ[wse10〜wse13]のまとめ異常フラグ[wseb]があり、異常がある場合には1であり、正常の場合には0である。全ての異常フラグ用のカウンタ[c_w_f(all)]は、6つの異常フラグ[wse1〜wse6]を設定する際に用いるカウンタである。
次に、白線検出ECU11における各サブルーチンについて説明する。まず、白線検出ECU11における機能コード設定サブルーチンを図4のフローチャートに沿って説明する。図4は、白線検出ECUにおける光軸調整処理の機能コード設定サブルーチンのフローチャートである。機能コード設定サブルーチンでは、操舵支援モードから光軸調整モード(工場光軸調整モード又はディーラ光軸調整モード)への移行を判定し、移行判定したモードに応じて機能コードを設定する。
まず、機能コード設定サブルーチンでは、前回機能コードを前々回機能コードに格納し、現在設定されている機能コードを前回機能コードに格納する(S20a)。続いて、機能コード設定サブルーチンでは、車両が停止状態(車速が0km/h)かつ操舵支援スイッチ[SASW]がオンか否かを判定し(S20b)、車両が停止状態でない場合又は操舵支援スイッチがオフの場合には機能コードに操舵支援モードを設定する(S20h)。
S20bにて車両が停止状態かつ操舵支援スイッチがオンの場合、機能コード設定サブルーチンでは、CANC信号がオフか否かを判定し(S20c)、CANC信号がオンの場合には機能コードに操舵支援モードを設定する(S20h)。
S20cにてCANC信号がオフの場合、機能コード設定サブルーチンでは、機能コードが操舵支援モード又は工場光軸調整モードかつテスタ3側からの工場光軸調整要求が有りか(すなわち、工場光軸調整要求フラグが1)を判定し(S20d)、この条件を満たす場合には機能コードに工場光軸調整モードを設定する(S20e)。
S20dにて条件を満たさない場合、機能コード設定サブルーチンでは、機能コードが操舵支援モード又はディーラ光軸調整モードかつテスタ3側からのディーラ光軸調整要求が有りか(すなわち、ディーラ光軸調整要求フラグが1)を判定し(S20f)、この条件を満たす場合には機能コードにディーラ光軸調整モードを設定(S20g)、条件を満たさない場合には機能コードに操舵支援モードを設定する(S20h)。
機能コード設定サブルーチンでは、車両2が動いている状態で作業者が光軸調整を行おうとしている場合や作業者が操舵支援スイッチ15をオフしている場合には光軸調整を行う環境が整っていないので、光軸調整モードに移行させない。また、機能コード設定サブルーチンでは、車間制御ECU12によるCAN通信が強制停止されている場合には、学習を行うために必要な情報を得られない可能性があるので、光軸調整モードに移行させない。このように、機能コード設定サブルーチンでは、光軸調整を行うための開始条件が整っていない場合には光軸調整モードに移行させない。
次に、白線検出ECU11における光軸調整モード移行判定サブルーチンを図5のフローチャートに沿って説明する。図5は、白線検出ECUにおける光軸調整処理の光軸調整モード移行判定サブルーチンのフローチャートである。光軸調整モード移行判定サブルーチンでは、2回連続の操舵支援モードから光軸調整モードに移行したか否かを判定し、光軸調整モードに移行した場合には新規な光軸調整あるいは作業者が意図した再光軸調整とみなし、各フラグ及び各カウンタを初期化する。ここでは、イグニッションスイッチがオンした後、テスタ3からの要求により光軸調整モードに移行した状態か否かを判定する。また、光軸調整を1度実施した後、操舵支援モードに復帰し、その後、再度、光軸調整モードに移行する場合を判定する。つまり、光軸調整モード中、車間制御ECU12からの通信が一時的にエラーとなり、直ぐに、通信が正常に復帰した場合(この場合、新規に光軸調整モードに移行したとみなされるのを避けたい)とを見分ける。
まず、光軸調整モード移行判定サブルーチンでは、前々回機能コードが操舵支援モードかつ前回機能コードが操舵支援モードかつ今回機能コードが工場光軸調整モード又はディーラ光軸調整モードか否かを判定する(S21a)。S21aの条件を満たさない場合、光軸調整モード移行判定サブルーチンでは、光軸調整モードに移行していないと判定する。
S21aの条件を満たす場合、光軸調整モード移行判定サブルーチンでは、新規な光軸調整あるいは作業者が意図した再光軸調整と判断し、初期学習異常フラグ[w_f]、初期学習異常フラグを構成する全ての異常フラグ[w_f(all)]、全ての異常フラグ用の各カウンタ[c_w_f(all)]を全て初期化する(S21b)。
車間制御ECU12からの通信が一時的に異常になり、直ぐに正常復帰した場合、機能コードが一時的に操舵支援モードになり、直ぐに、光軸調整モードになる可能性がある。この場合、再度、車両情報をEEPROM11aに書き込む処理や今学習中なのに最初から学習をやり直すのを防止するために(つまり、意図しない再光軸調整を行わないために)、光軸調整モード移行判定サブルーチンでは、S21aの判定を行う。つまり、光軸調整モード移行判定サブルーチンにより、作業者が意図的に再光軸調整に移行させたか、あるいは、単に車間制御ECU12による通信が一時的に異常になったので機能コードが変化したのかを判別できる。これにより、再光軸調整時の各処理を実行せずに済むので、光軸調整時間を低減することができる。再光軸調整時には、前回の光軸調整(学習)において初期学習異常フラグが異常(1)になっていると考えられるので、初期学習異常フラグ等を初期化しておき、別の処理において初期化することによる光軸調整時間の増加を防止する。
次に、白線検出ECU11における工場光軸調整モード変化判定サブルーチンを図6のフローチャートに沿って説明する。図6は、白線検出ECUにおける光軸調整処理の工場光軸調整モード変化判定サブルーチンのフローチャートである。工場光軸調整モード変化判定サブルーチンでは、学習中に機能コード(工場光軸調整モード)が変化した場合、初期学習異常とするために機能コード変化異常フラグ[wse0]に異常設定をする。ちなみに、基準ルーチンは今回実行しているメインルーチンのことであり、次ルーチンは次回実行するメインルーチンのことである。
まず、工場光軸調整モード変化判定サブルーチンでは、前々回機能コードが工場光軸調整モードかつ前回機能コードが工場光軸調整モードかを判定する(S22a)。S22aの条件には満たさない場合には、このサブルーチンを終了する。
S22aの条件を満たす場合、工場光軸調整モード変化判定サブルーチンでは、全ターゲット同時学習中フラグ[sa_sp]が1か、または、ターゲット3学習中フラグ[s3_sp]が1か、または、ターゲット2学習中フラグ[s2_sp]が1か、または、ターゲット1学習中フラグ[s1_sp]が1か(すなわち、いずれかのターゲットにより学習中か)を判定する(S22b)。学習中でない場合には、このサブルーチンを終了する。
いずれかのターゲットにより学習中の場合、工場光軸調整モード変化判定サブルーチンでは、機能コードが工場光軸調整モードでないか否かを判定する(S22c)。機能コードが工場光軸調整モードの場合には、このサブルーチンを終了する。
機能コードが工場光軸調整モードでない場合には、工場光軸調整モード変化判定サブルーチンでは、次のルーチンにおいて、再度、全ターゲット同時学習中フラグ[sa_sp]が1か、ターゲット3学習中フラグ[s3_sp]が1か、ターゲット2学習中フラグ[s2_sp]が1か、または、ターゲット1学習中フラグ[s1_sp]が1かを判定する(S22d)。学習中でない場合には、このサブルーチンを終了する。
いずれかのターゲットにより学習中の場合、工場光軸調整モード変化判定サブルーチンでは、再度、機能コードが工場光軸調整モードでないか否かを判定する(S22e)。機能コードが工場光軸調整モードの場合には、このサブルーチンを終了する。
機能コードが工場光軸調整モードでない場合には、工場光軸調整モード変化判定サブルーチンでは、学習中に機能コードが変化したと判断し、機能コード変化異常フラグ[wse0]に1(異常)を設定するとともに、全ターゲット同時学習、ターゲット3学習、ターゲット2学習、ターゲット1学習の全ての学習を禁止し(S22f)、このサブルーチンを終了する。
このように、工場光軸調整モード変化判定サブルーチンでは、機能コード(工場光軸調整モード)が何らかの原因で変化した場合、意図的な学習中止あるいは何らかの異常とみなせるので、無駄な学習を禁止する。2回のルーチンで連続して判定することにより、車間制御ECU12からの通信の一時的な異常になった場合を排除でき、システムとしての信頼性を向上させる。ちなみに、機能コードが変化する原因としては、作業者のミスや意図的に変化させる場合や車間制御ECU12の異常により変化させる場合等がある。
次に、白線検出ECU11におけるディーラ光軸調整モード変化判定サブルーチンを図7のフローチャートに沿って説明する。図7は、白線検出ECUにおける光軸調整処理のディーラ光軸調整モード変化判定サブルーチンのフローチャートである。ディーラ光軸調整モード変化判定サブルーチンでは、学習中に機能コード(ディーラ光軸調整モード)が変化した場合、初期学習異常とするために機能コード変化異常フラグ[wse0]に異常設定をする。ディーラ光軸調整モード変化判定サブルーチンは、機能コードが工場光軸調整モードからディーラ光軸調整モードに変わるだけで工場光軸調整モード変化判定サブルーチンと同様の処理であり、工場光軸調整モード変化判定サブルーチンのS22a〜S22fに対応してS23a〜S23fの処理がある。そこで、ディーラ光軸調整モード変化判定サブルーチンの詳細な説明は省略する。
次に、白線検出ECU11における全ターゲット同時学習許可変化サブルーチンを図8のフローチャートに沿って説明する。図8は、白線検出ECUにおける光軸調整処理の全ターゲット同時学習許可変化判定サブルーチンのフローチャートである。全ターゲット同時学習許可変化サブルーチンでは、全ターゲット同時学習中に、全ターゲット同時学習の学習許可が変化して異なる学習許可が発生した場合、作業者のミスや意図的な学習中止とみなし、初期学習異常とするために全ターゲット同時学習許可変化異常フラグ[wse4]に異常設定をする。
まず、全ターゲット同時学習許可変化サブルーチンでは、全ターゲット同時学習中フラグ[sa_sp]が1かつ(全ターゲット同時学習許可フラグ[a_sa]が0か、または、ターゲット3学習許可フラグ[a_s3]が1か、または、ターゲット2学習許可フラグ[a_s2]が1か、または、ターゲット1学習許可フラグ[a_s1]が1か)か(つまり、全ターゲット同時学習中に、他のターゲットに対する学習許可がでたか否か)を判定する(S24a)。S24aの条件を満たさない場合には、全ターゲット同時学習許可変化サブルーチンでは、カウンタ[c_wse4]に0を設定し(S24c)、このサブルーチンを終了する。
全ターゲット同時学習中に、他のターゲットに対する学習許可がでた場合には、全ターゲット同時学習許可変化サブルーチンでは、カウンタ[c_wse4]に1を加算する(S24b)。続いて、全ターゲット同時学習許可変化サブルーチンでは、カウンタ[c_wse4]が2以上か否かを判定する(S24d)。カウンタ[c_wse4]が2未満の場合、このサブルーチンを終了する。
カウンタ[c_wse4]が2以上の場合、全ターゲット同時学習許可変化サブルーチンでは、全ターゲット同時学習許可変化異常フラグ[wse4]に1(異常)を設定するとともに、全ターゲット同時学習、ターゲット3学習、ターゲット2学習、ターゲット1学習の全ての学習を禁止する(S24e)。そして、全ターゲット同時学習許可変化サブルーチンでは、カウンタ[c_wse4]に0を設定し(S24f)、このサブルーチンを終了する。
次に、白線検出ECU11におけるターゲット3学習許可変化サブルーチンを図9のフローチャートに沿って説明する。図9は、白線検出ECUにおける光軸調整処理のターゲット3学習許可変化判定サブルーチンのフローチャートである。ターゲット3学習許可変化サブルーチンでは、ターゲット3学習中に、ターゲット3学習の学習許可が変化して異なる学習許可が発生した場合、初期学習異常とするためにターゲット3学習許可変化異常フラグ[wse3]に異常設定をする。ターゲット3学習許可変化サブルーチンは、学習のターゲットが全ターゲット同時からターゲット3に変わるだけで全ターゲット同時学習許可サブルーチンと同様の処理であり、全ターゲット同時学習許可サブルーチンのS24a〜S24fに対応してS25a〜S25fの処理がある。そこで、ターゲット3学習許可変化サブルーチンの詳細な説明は省略する。ちなみに、S25aの処理では、ターゲット3学習中に、他のターゲットに対する学習許可がでたか否かを判定している。
次に、白線検出ECU11におけるターゲット2学習許可変化サブルーチンを図10のフローチャートに沿って説明する。図10は、白線検出ECUにおける光軸調整処理のターゲット2学習許可変化判定サブルーチンのフローチャートである。ターゲット2学習許可変化サブルーチンでは、ターゲット2学習中に、ターゲット2学習の学習許可が変化して異なる学習許可が発生した場合、初期学習異常とするためにターゲット2学習許可変化異常フラグ[wse2]に異常設定をする。ターゲット2学習許可変化サブルーチンも、学習のターゲットが全ターゲット同時からターゲット2に変わるだけで全ターゲット同時学習許可サブルーチンと同様の処理であり、全ターゲット同時学習許可サブルーチンのS24a〜S24fに対応してS26a〜S26fの処理がある。そこで、ターゲット2学習許可変化サブルーチンの詳細な説明は省略する。ちなみに、S26aの処理では、ターゲット2学習中に、他のターゲットに対する学習許可がでたか否かを判定している。
次に、白線検出ECU11におけるターゲット1学習許可変化サブルーチンを図11のフローチャートに沿って説明する。図11は、白線検出ECUにおける光軸調整処理のターゲット1学習許可変化判定サブルーチンのフローチャートである。ターゲット1学習許可変化サブルーチンでは、ターゲット1学習中に、ターゲット1学習の学習許可が変化して異なる学習許可が発生した場合、初期学習異常とするためにターゲット1学習許可変化異常フラグ[wse1]に異常設定をする。ターゲット1学習許可変化サブルーチンも、学習のターゲットが全ターゲット同時からターゲット1に変わるだけで全ターゲット同時学習許可サブルーチンと同様の処理であり、全ターゲット同時学習許可サブルーチンのS24a〜S24fに対応してS27a〜S27fの処理がある。そこで、ターゲット1学習許可変化サブルーチンの詳細な説明は省略する。ちなみに、S27aの処理では、ターゲット1学習中に、他のターゲットに対する学習許可がでたか否かを判定している。
このように、学習中に何らかの原因で学習許可が変化した場合、学習中止とみなせるので、無駄な学習を禁止する。また、2回のルーチンで連続して判定することにより、車間制御ECU12による通信が一時的に異常になった場合を排除でき、システムとしての信頼性を向上させる。ちなみに、学習許可が変化する原因としては、作業者によるヒューマンエラーの場合や車間制御ECU12が異常の場合等がある。
次に、白線検出ECU11における学習中EEPROMクリア要求判定サブルーチンを図12のフローチャートに沿って説明する。図12は、白線検出ECUにおける光軸調整処理の学習中EEPROMクリア要求判定サブルーチンのフローチャートである。学習中EEPROMクリア要求判定サブルーチンでは、学習中にEEPEOM11aのクリア要求があった場合、作業者のミスや意図的な学習中止とみなし、初期学習異常とするためにクリア要求発生異常フラグ[wse5]に異常設定をする。
まず、学習中EEPROMクリア要求判定サブルーチンでは、(全ターゲット同時学習中フラグ[sa_sp]が1か、または、ターゲット3学習中フラグ[s3_sp]が1か、または、ターゲット2学習中フラグ[s2_sp]が1か、または、ターゲット1学習中フラグ[s1_sp]が1か)の時にEEPROMクリア要求があるか否かを判定する(S28a)。S28aの条件を満たさない場合には、学習中EEPROMクリア要求判定サブルーチンでは、カウンタ[c_wse5]に0を設定し(S28c)、このサブルーチンを終了する。
学習中にEEPROMクリア要求があった場合には、学習中EEPROMクリア要求判定サブルーチンでは、カウンタ[c_wse5]に1を加算する(S28b)。続いて、学習中EEPROMクリア要求判定サブルーチンでは、カウンタ[c_wse5]が2以上か否かを判定する(S28d)。カウンタ[c_wse5]が2未満の場合、このサブルーチンを終了する。
カウンタ[c_wse5]が2以上の場合、学習中EEPROMクリア要求判定サブルーチンでは、クリア要求発生異常フラグ[wse5]に1(異常)を設定するとともに、全ターゲット同時学習、ターゲット3学習、ターゲット2学習、ターゲット1学習の全ての学習を禁止する(S28e)。そして、学習中EEPROMクリア要求判定サブルーチンでは、カウンタ[c_wse5]に0を設定し(S28f)、このサブルーチンを終了する。
次に、白線検出ECU11における学習中EEPROM書換要求判定サブルーチンを図13のフローチャートに沿って説明する。図13は、白線検出ECUにおける光軸調整処理の学習中EEPROM書換要求判定サブルーチンのフローチャートである。学習中EEPROM書換要求判定サブルーチンでは、学習中にEEPEOM11aの書換要求があった場合、作業者のミスや意図的な学習中止とみなし、初期学習異常とするために書換要求発生異常フラグ[wse6]に異常設定をする。学習中EEPROM書換要求判定サブルーチンは、EEPROMに対する要求がクリア要求から書換要求に変わるだけで学習中EEPROMクリア要求判定サブルーチンと同様の処理であり、学習中EEPROMクリア要求判定サブルーチンのS28a〜S28fに対応してS29a〜S29fの処理がある。そこで、学習中EEPROM書換要求判定サブルーチンの詳細な説明は省略する。
このように、学習中に何らかの原因でクリア要求や書換要求が発生した場合、学習中止とみなせるので、無駄な学習を禁止する。また、2回のルーチンで連続して判定することにより、上記と同様に、システムとしての信頼性を向上させる。ちなみに、クリア要求や書換要求の発生原因としては、作業者によるヒューマンエラーの場合や車間制御ECU12が異常の場合等がある。
次に、白線検出ECU11における初期学習異常フラグ設定サブルーチンを図14のフローチャートに沿って説明する。図14は、白線検出ECUにおける光軸調整処理の初期学習異常フラグ設定サブルーチンのフローチャートである。初期学習異常フラグ設定サブルーチンでは、各種異常フラグのいずれかに異常設定がされている場合に、初期学習異常フラグ[w_f]に異常設定する。
まず、初期学習異常フラグ設定サブルーチンでは、書換要求発生異常フラグ[wse6]が1か、または、クリア要求発生異常フラグ[wse5]が1か、または、全ターゲット同時学習許可変化異常フラグ[wse4]が1か、または、ターゲット3学習許可変化異常フラグ[wse3]が1か、または、ターゲット2学習許可変化異常フラグ[wse2]が1か、または、ターゲット1学習許可変化異常フラグ[wse1]が1か、または、機能コード変化異常フラグ[wse0]が1かを判定する(S30a)。S30aの条件を満たさない場合には、S30cの処理に移行する。
7つの異常フラグ[wse0〜wse6]のいずれかが異常設定されている場合、初期学習異常フラグ設定サブルーチンでは、まとめ異常フラグ[wsea]に1(異常)を設定する(S30b)。
続いて、初期学習異常フラグ設定サブルーチンでは、ターゲット数異常フラグ[wse13]が1か、または、ターゲット相対位置異常フラグ[wse12]が1か、または、学習時間異常フラグ[wse11]が1か、または、カメラ角度異常フラグ[wse10]が1かを判定する(S30c)。S30cの条件を満たさない場合には、S30eの処理に移行する。
4つの異常フラグ[wse10〜wse13]のいずれかが異常設定されている場合、初期学習異常フラグ設定サブルーチンでは、まとめ異常フラグ[wseb]に1(異常)を設定する(S30d)。
続いて、初期学習異常フラグ設定サブルーチンでは、まとめ異常フラグ[wsea]が1か、または、まとめ異常フラグ[wseb]が1かを判定する(S30e)。S30eの条件を満たさない場合には、このサブルーチンを終了する。
まとめ異常フラグ[wsea,wseb]のいずれかが異常設定(すなわち、11の異常フラグ[wse0〜wse6,wse10〜wse13]のいずれかが異常設定)されている場合、初期学習異常フラグ設定サブルーチンでは、初期学習異常フラグ[w_f]に1(異常)を設定し(S30f)、このサブルーチンを終了する。
次に、白線検出ECU11における車両情報書込サブルーチンを図15のフローチャートに沿って説明する。図15は、白線検出ECUにおける光軸調整処理の車両情報書込サブルーチンのフローチャートである。車両情報書込サブルーチンでは、操舵支援モードから光軸調整モードに初めて移行したか否かを判定し、初めて移行した場合にはEEPROM11aに車両情報を書き込む。
まず、車両情報書込サブルーチンでは、機能コードが操舵支援モードから工場光軸調整モードまたはディーラ光軸調整モードに今回のルーチンで移行したか否かを判定する(S31a)。車両情報書込サブルーチンでは、S31aにて移行したと判定した場合には光軸調整モード初回移行フラグ[f_u]に1を設定し(S31b)、S31aにて移行していないと判定した場合にはS31cの処理に移行する。光軸調整モード初回移行フラグ[f_u]は、光軸調整モードに初めて移行したか否かを示すとともに車両情報がEEPROM11aに書き込まれているか否かも示し、初めて移行した場合(書き込まれていない場合)には1であり、初めての移行でない場合(書き込まれている場合)には0である。
続いて、車両情報書込サブルーチンでは、光軸調整モード初回移行フラグ[f_u]が1か否かを判定する(S31c)。S31にて光軸調整モード初回移行フラグ[f_u]が1でない場合、このサブルーチンを終了する。
S31にて光軸調整モード初回移行フラグ[f_u]が1の場合、車両情報書込サブルーチンでは、再度、機能コードが工場光軸調整モードか、または、ディーラ光軸調整モードか(すなわち、光軸調整モードか)を判定する(S31d)。光軸調整モードでない場合には、車両情報書込サブルーチンでは、車両情報の書き込みを止めて、S31fの処理に移行する。
光軸調整モードの場合、車両情報書込サブルーチンでは、車両情報をEEPROM11aに書き込む(S31e)。そして、車両情報書込サブルーチンでは、光軸調整モード初回移行フラグ[f_u]に0を設定し(S31f)、このサブルーチンを終了する。
このように、車両情報書込サブルーチンでは、光軸調整モードに初めて移行したとき1回だけ車両情報を書き込み、車両情報の書き込み回数を制限し、光軸調整時間を短縮する。
次に、白線検出ECU11における学習許可フラグ設定サブルーチンを図16のフローチャートに沿って説明する。図16は、白線検出ECUにおける光軸調整処理の学習許可フラグ設定サブルーチンのフローチャートである。学習許可フラグ設定サブルーチンでは、学習を始める(光軸調整用の補正量を求める)ための諸条件が成立しているか否かを判定し、成立している場合には光軸調整による学習を許可する。ちなみに、各学習には1分程度の時間が必要であり、この学習時間を短くすることが検査ライン(生産ライン)の効率を上げることになる。したがって、外乱等によって車間制御ECU12との通信が一時的に異常となった場合でも、学習を中止せずに、可能な限り学習を続けさせる。
まず、学習許可フラグ設定サブルーチンでは、機能コードが工場光軸調整モードか、または、ディーラ光軸調整モードかを判定する(S32a)。光軸調整モードでない場合、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。
光軸調整モードの場合、学習許可フラグ設定サブルーチンでは、電源電圧が正常か否かを判定する(S32b)。電源電圧が異常の場合には、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。
電源電圧が正常の場合には、学習許可フラグ設定サブルーチンでは、電源投入から1秒以上が経過しているか否かを判定する(S32c)。1秒以上経過していない場合には、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。電源投入から間もないとシステム的に安定していないので、電源投入から1秒間を条件としている。
1秒以上経過している場合、学習許可フラグ設定サブルーチンでは、全ターゲット同時学習開始フラグ[sa_st]が1か、または、ターゲット1学習開始フラグ[s1_st]が1か、または、ターゲット2学習開始フラグ[s2_st]が1か、または、ターゲット3学習開始フラグ[s3_st]が1か、または、全ターゲット同時学習中フラグ[sa_sp]が1か、または、ターゲット1学習中フラグ[s1_sp]が1か、または、ターゲット2学習中フラグ[s2_sp]が1か、または、ターゲット3学習中フラグ[s3_sp]が1か(すなわち、いずれかのターゲットによる学習中か否か)を判定する(S32d)。
S32dにて学習中の場合には、学習許可フラグ設定サブルーチンでは、車間制御ECU12とのシリアル通信の異常時間がTi以下か、または、車間制御ECU12とのシリアル通信が正常かを判定する(S32e)。Tiは、車間制御ECU12とのシリアル通信の一時的な異常の許容時間である。
S32dにて学習中でない場合、学習許可フラグ設定サブルーチンでは、(全ターゲット同時学習開始フラグ[sa_st]が0か、かつ、ターゲット1学習開始フラグ[s1_st]が0か、かつ、ターゲット2学習開始フラグ[s2_st]が0か、かつ、ターゲット3学習開始フラグ[s3_st]が0か、かつ、全ターゲット同時学習中フラグ[sa_sp]が0か、かつ、ターゲット1学習中フラグ[s1_sp]が0か、かつ、ターゲット2学習中フラグ[s2_sp]が0か、かつ、ターゲット3学習中フラグ[s3_sp]が0か(すなわち、いずれのターゲットでも学習中でないか))、かつ、車間制御ECU12とのシリアル通信が正常かを判定する(S32f)。S32fの条件を満たさない場合には、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。
S32eの条件を満たす場合またはS32fの条件を満たす場合、学習許可フラグ設定サブルーチンでは、宿題演算フラグ[wh]が0か否かを判定する(S32g)。宿題演算フラグ[wh]は、車間制御ECU12での宿題演算が正常に行われたか否かを示すフラグであり、正常の場合には0であり、異常の場合には1である。車間制御ECU12での宿題演算が異常の場合には、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。
車間制御ECU12での宿題演算が正常の場合には、学習許可フラグ設定サブルーチンでは、CANCフラグが0か否かを判定する(S32h)。CANCフラグは、CANC信号がオンされて車間制御ECU12によるCAN通信が強制停止させたか否かを示すフラグであり、強制停止中の場合には1であり、非停止中の場合には0である。CAN通信が強制停止中の場合には、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。
CAN通信が非停止中の場合には、学習許可フラグ設定サブルーチンでは、白線検出ECU11が正常か否かを判定する(S32i)。白線検出ECU11が異常の場合には、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。
白線検出ECU11が正常の場合には、学習許可フラグ設定サブルーチンでは、FOE変更要求フラグが1か否か(すなわち、光軸調整量の補正量の書き換え要求があるか否か)を判定する(S32j)。光軸調整量の補正量の書き換え要求がない場合には、学習許可フラグ設定サブルーチンでは、学習を非許可とし、学習許可フラグ[a_s]に0を設定する(S32l)。
光軸調整量の補正量の書き換え要求がある場合には、学習許可フラグ設定サブルーチンでは、学習を許可し、学習許可フラグ[a_s]に1を設定する(S32k)。学習許可フラグ設定サブルーチンでは、学習許可フラグ[a_s]に1または0を設定し、このサブルーチンを終了する。
このように、学習許可フラグ設定サブルーチンでは、学習中に一時的に車間制御ECU12の通信が異常となっても学習に必要な情報は既に取得しているので、学習を継続させ、光軸調整時間の短縮を図る。また、学習許可フラグ設定サブルーチンでは、車間制御ECU12の通信が正常であっても、宿題演算が異常の場合(すなわち、車間制御ECU12の異常の場合)には車間制御ECU12からの情報の信憑性に欠けるので、学習を許可せず、システムとしての信頼性を向上させる。
次に、白線検出ECU11におけるターゲット別学習許可フラグ設定サブルーチンを図17のフローチャートに沿って説明する。図17は、白線検出ECUにおける光軸調整処理のターゲット別学習許可フラグ設定サブルーチンのフローチャートである。ターゲット別学習許可フラグ設定サブルーチンでは、光軸調整による学習が許可されている場合、いずれのターゲットに対する学習要求が有るかを判定し、学習要求が有るターゲットに対する学習を許可する。
まず、ターゲット別学習許可フラグ設定サブルーチンでは、学習許可フラグ[a_s]が1か否かを判定する(S33a)。光軸調整による学習が許可されていない場合、ターゲット別学習許可フラグ設定サブルーチンでは、全てのターゲットに対する学習を非許可とし、全ターゲット同時学習許可フラグ[a_sa]、ターゲット1学習許可フラグ[a_s1]、ターゲット2学習許可フラグ[a_s2]、ターゲット3学習許可フラグ[a_s3]に全て0を設定し(S33n)、このサブルーチンを終了する。
光軸調整による学習が許可されている場合、ターゲット別学習許可フラグ設定サブルーチンでは、全ターゲット同時学習要求が有るか否か(すなわち、全ターゲット同時学習要求フラグが1か否か)を判定する(S33b)。
全ターゲット同時学習要求が有る場合には、ターゲット別学習許可フラグ設定サブルーチンでは、全ターゲット同時学習許可フラグ[a_sa]に1を設定(すなわち、全ターゲット同時学習を許可)し(S33c)、このサブルーチンを終了する。全ターゲット同時学習要求がない場合には、ターゲット別学習許可フラグ設定サブルーチンでは、全ターゲット同時学習許可フラグ[a_sa]に0を設定(すなわち、全ターゲット同時学習を非許可と)し(S33d)、ターゲット1学習要求が有るか否か(すなわち、ターゲット1学習要求フラグが1か否か)を判定する(S33e)。
ターゲット1学習要求が有る場合には、ターゲット別学習許可フラグ設定サブルーチンでは、ターゲット1学習許可フラグ[a_s1]に1を設定(すなわち、ターゲット1学習を許可)し(S33f)、このサブルーチンを終了する。ターゲット1学習要求がない場合には、ターゲット別学習許可フラグ設定サブルーチンでは、ターゲット1学習許可フラグ[a_s1]に0を設定(すなわち、ターゲット1学習を非許可と)し(S33g)、ターゲット2学習要求が有るか否か(すなわち、ターゲット2学習要求フラグが1か否か)を判定する(S33h)。
ターゲット2学習要求が有る場合には、ターゲット別学習許可フラグ設定サブルーチンでは、ターゲット2学習許可フラグ[a_s2]に1を設定(すなわち、ターゲット2学習を許可)し(S33i)、このサブルーチンを終了する。ターゲット2学習要求がない場合には、ターゲット別学習許可フラグ設定サブルーチンでは、ターゲット2学習許可フラグ[a_s2]に0を設定(すなわち、ターゲット2学習を非許可と)し(S33j)、ターゲット3学習要求が有るか否か(すなわち、ターゲット3学習要求フラグが1か否か)を判定する(S33k)。
ターゲット3学習要求が有る場合には、ターゲット別学習許可フラグ設定サブルーチンでは、ターゲット3学習許可フラグ[a_s3]に1を設定(すなわち、ターゲット3学習を許可)し(S33l)、このサブルーチンを終了する。ターゲット3学習要求がない場合には、ターゲット別学習許可フラグ設定サブルーチンでは、ターゲット3学習許可フラグ[a_s3]に0を設定(すなわち、ターゲット3学習を非許可と)し(S33m)、このサブルーチンを終了する。
このように、ターゲット別学習許可フラグ設定サブルーチンにおいて各ターゲットに対する学習を許可することによって、全ターゲット同時に学習することもできるし、あるいは、ターゲット1、ターゲット2、ターゲット3によって個別に学習することもできる。
次に、白線検出ECU11におけるターゲット別学習開始サブルーチンを図18のフローチャートに沿って説明する。図18は、白線検出ECUにおける光軸調整処理のターゲット別学習開始フラグ設定サブルーチンのフローチャートである。ターゲット別学習開始サブルーチンでは、全ターゲット同時またはターゲット1、ターゲット2、ターゲット3のいずれのターゲットによって学習を始めるのかを判定する。特に、複数の個別ターゲット学習の場合、あるターゲットに対して学習が許可されていても、そのターゲットに対する学習が完了しているときにはそのターゲットに対する学習を開始しない。
まず、ターゲット別学習開始サブルーチンでは、全ターゲット同時学習許可フラグ[a_sa]が今回のルーチンで初めて0から1に切り替わり(全ターゲット同時学習が今回のルーチンで許可され)、かつ、(いずれのターゲットに対しても学習開始していないかつ学習中でもない)を判定する(S34a)。いずれのターゲットに対しても学習開始していないかつ学習中でもないかは、条件Xに示すように、全ターゲット同時学習開始フラグ[sa_st]、全ターゲット同時学習中フラグ[sa_sp]、ターゲット1学習開始フラグ[s1_st]、ターゲット1学習中フラグ[s1_sp]、ターゲット2学習開始フラグ[s2_st]、ターゲット2学習中フラグ[s2_sp]、ターゲット3学習開始フラグ[s3_st]、ターゲット3学習中フラグ[s3_sp]が全て0であるか否かで判定され、全て0の場合がいずれのターゲットに対しても学習開始していないかつ学習中でもない。
S34aの条件を満たす場合には、ターゲット別学習開始サブルーチンでは、全ターゲット同時学習を始めると決定し、全ターゲット同時学習開始フラグ[sa_st]に1を設定し(S34b)、このサブルーチンを終了する。S34aの条件を満たさない場合には、ターゲット別学習開始サブルーチンでは、ターゲット1学習許可フラグ[a_s1]が今回のルーチンで初めて0から1に切り替わり(ターゲット1学習が今回のルーチンで許可され)、かつ、(いずれのターゲットに対しても学習開始していないかつ学習中でもない)を判定する(S34c)。
S34cの条件を満たす場合には、ターゲット別学習開始サブルーチンでは、ターゲット1学習完了フラグ[s1_f]が0か否かを判定する(S34d)。ターゲット1学習完了フラグ[s1_f]が1の場合、ターゲット1による学習は既に完了しているので、ターゲット1による再学習をさせないために、このS34dの判定を行う。
S34dの条件を満たす場合(すなわち、ターゲット1による初めて学習の場合)には、ターゲット別学習開始サブルーチンでは、ターゲット1学習を始めると決定し、ターゲット1学習開始フラグ[s1_st]に1を設定し(S34e)、このサブルーチンを終了する。S34cの条件を満たさない場合またはS34dの条件を満たさない場合には、ターゲット別学習開始サブルーチンでは、ターゲット2学習許可フラグ[a_s2]が今回のルーチンで初めて0から1に切り替わり(ターゲット2学習が今回のルーチンで許可され)、かつ、(いずれのターゲットに対しても学習開始していないかつ学習中でもない)を判定する(S34f)。
S34fの条件を満たす場合には、ターゲット別学習開始サブルーチンでは、ターゲット2学習完了フラグ[s2_f]が0か否かを判定する(S34g)。ターゲット2学習完了フラグ[s2_f]が1の場合、ターゲット2による学習は既に完了しているので、ターゲット2による再学習をさせないために、このS34gの判定を行う。
S34gの条件を満たす場合(すなわち、ターゲット2による初めて学習の場合)には、ターゲット別学習開始サブルーチンでは、ターゲット2学習を始めると決定し、ターゲット2学習開始フラグ[s2_st]に1を設定し(S34h)、このサブルーチンを終了する。S34fの条件を満たさない場合またはS34gの条件を満たさない場合には、ターゲット別学習開始サブルーチンでは、ターゲット3学習許可フラグ[a_s3]が今回のルーチンで初めて0から1に切り替わり(ターゲット3学習が今回のルーチンで許可され)、かつ、(いずれのターゲットに対しても学習開始していないかつ学習中でもない)を判定する(S34i)。
S34iの条件を満たす場合には、ターゲット別学習開始サブルーチンでは、ターゲット3学習完了フラグ[s3_f]が0か否かを判定する(S34j)。ターゲット3学習完了フラグ[s2_f]が1の場合、ターゲット3による学習は既に完了しているので、ターゲット3による再学習をさせないために、このS34iの判定を行う。
S34iの条件を満たす場合(すなわち、ターゲット3による初めて学習の場合)には、ターゲット別学習開始サブルーチンでは、ターゲット3学習を始めると決定し、ターゲット3学習開始フラグ[s3_st]に1を設定し(S34k)、このサブルーチンを終了する。S34iの条件を満たさない場合またはS34jの条件を満たさない場合には、ターゲット別学習開始サブルーチンでは、このサブルーチンを終了する。
このように、ターゲット別学習開始サブルーチンでは、各ターゲットに対する学習許可されたルーチンにおいてのみそのターゲットによる学習開始を決定するので、学習中に同じターゲットに対する学習要求がきても、再度、学習を開始することなくそのまま学習を継続し、光軸調整時間を短縮する。また、ターゲット別学習開始サブルーチンでは、個別ターゲット学習の場合、既に学習が完了しているターゲットに対する学習要求がきても、その学習を開始させないので、再度、学習を開始することなく、光軸調整時間を短縮する。これにより、作業者によるミスをカバーできる。
次に、白線検出ECU11における全ターゲット同時学習中フラグ設定サブルーチンを図19のフローチャートに沿って説明する。図19は、白線検出ECUにおける光軸調整処理の全ターゲット同時学習中フラグ設定サブルーチンのフローチャートである。全ターゲット同時学習中フラグ設定サブルーチンでは、全ターゲット同時学習が継続している状態であれば、全ターゲット学習を開始し、全ターゲット同時学習開始フラグ[sa_st]をクリアする。
まず、全ターゲット同時学習中フラグ設定サブルーチンでは、全ターゲット同時学習開始フラグ[sa_st]が1か否かを判定する(S35a)。全ターゲット同時学習開始フラグ[sa_st]が0の場合には、このサブルーチンを終了する。
全ターゲット同時学習開始フラグ[sa_st]が1の場合には、全ターゲット同時学習中フラグ設定サブルーチンでは、全ターゲット同時学習を開始するとともに、全ターゲット同時学習開始フラグ[sa_st]に0を設定し、全ターゲット同時学習中フラグ[sa_sp]に1を設定する(S35b)。さらに、全ターゲット同時学習中フラグ設定サブルーチンでは、全ターゲット同時学習完了フラグ[sa_f]、ターゲット1学習完了フラグ[s1_f]、ターゲット2学習完了フラグ[s2_f]、ターゲット3学習完了フラグ[s3_f]に全て0を設定して初期化し(S35c)、このサブルーチンを終了する。
このように、全ターゲット同時学習中フラグ設定サブルーチンでは、学習開始時期と学習継続時期とを見極めることができる。
次に、白線検出ECU11における順位毎ターゲット3学習中フラグ設定サブルーチンを図20のフローチャートに沿って説明する。図20は、図1の白線検出ECUにおける光軸調整処理の順位毎ターゲット3学習中フラグ設定サブルーチンのフローチャートである。順位毎ターゲット3学習中フラグ設定サブルーチンでは、ターゲット3学習が他の個別ターゲット学習に対してどの順位で学習を実行するかを見極め、ターゲット3学習を開始し、ターゲット3学習開始フラグ[s3_st]をクリアする
まず、順位毎ターゲット3学習中フラグ設定サブルーチンでは、最初にターゲット3学習を実行するかを見極めるために、ターゲット3学習開始フラグ[s3_st]が1、かつ、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が0、かつ、ターゲット1学習完了フラグ[s1_f]が0か(つまり、ターゲット3の開始フラグが開始にセットされ、かつ、ターゲット3以外のターゲットの学習許可がなく、かつ、他の個別ターゲット学習が完了していないか)を判定する(S36a)。
S36aの条件を満たす場合には、順位毎ターゲット3学習中フラグ設定サブルーチンでは、3つの個別ターゲット学習のうちでターゲット3学習を最初に実行すると判断し、全ターゲット同時学習完了フラグ[sa_f]、ターゲット1学習完了フラグ[s1_f]、ターゲット2学習完了フラグ[s2_f]、ターゲット3学習完了フラグ[s3_f]に全て0を設定し、完了フラグを全て初期化する(S36c)。
S36aの条件を満たさない場合には、順位毎ターゲット3学習中フラグ設定サブルーチンでは、ターゲット1学習完了後にターゲット3学習を実行するかを見極めるために、ターゲット3学習開始フラグ[s3_st]が1、かつ、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が0、かつ、ターゲット1学習完了フラグ[s1_f]が1か(つまり、ターゲット3の開始フラグが開始にセットされ、かつ、ターゲット3以外のターゲットの学習許可がなく、かつ、ターゲット1学習のみ完了しているか)を判定する(S36c)。
S36cの条件を満たす場合には、順位毎ターゲット3学習中フラグ設定サブルーチンでは、3つの個別ターゲット学習のうちでターゲット1学習の次にターゲット3学習を実行すると判断し、全ターゲット同時学習完了フラグ[sa_f]、ターゲット2学習完了フラグ[s2_f]、ターゲット3学習完了フラグ[s3_f]に全て0を設定し、ターゲット1学習以外の完了フラグを初期化する(S36d)。
S36cの条件を満たさない場合には、順位毎ターゲット3学習中フラグ設定サブルーチンでは、ターゲット2学習完了後にターゲット3学習を実行するかを見極めるために、ターゲット3学習開始フラグ[s3_st]が1、かつ、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が1、かつ、ターゲット1学習完了フラグ[s1_f]が0か(つまり、ターゲット3の開始フラグが開始にセットされ、かつ、ターゲット3以外のターゲットの学習許可がなく、かつ、ターゲット2学習のみ完了しているか)を判定する(S36e)。
S36eの条件を満たす場合には、順位毎ターゲット3学習中フラグ設定サブルーチンでは、3つの個別ターゲット学習のうちでターゲット2学習の次にターゲット3学習を実行すると判断し、全ターゲット同時学習完了フラグ[sa_f]、ターゲット1学習完了フラグ[s1_f]、ターゲット3学習完了フラグ[s3_f]に全て0を設定し、ターゲット2学習以外の完了フラグを初期化する(S36f)。
S36eの条件を満たさない場合には、順位毎ターゲット3学習中フラグ設定サブルーチンでは、ターゲット1学習完了後かつターゲット2学習完了後に(つまり、最後に)ターゲット3学習を実行するかを見極めるために、ターゲット3学習開始フラグ[s3_st]が1、かつ、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が1、かつ、ターゲット1学習完了フラグ[s1_f]が1か(つまり、ターゲット3の開始フラグが開始にセットされ、かつ、ターゲット3以外のターゲットの学習許可がなく、かつ、ターゲット1学習及びターゲット2学習が完了しているか)を判定する(S36g)。
S36gの条件を満たす場合には、順位毎ターゲット3学習中フラグ設定サブルーチンでは、3つの個別ターゲット学習のうちでターゲット3学習を最後に実行すると判断し、全ターゲット同時学習完了フラグ[sa_f]及びターゲット3学習完了フラグ[s3_f]に0を設定し、ターゲット1学習及びターゲット2学習以外の完了フラグを初期化する(S36h)。S36gの条件を満たさない場合には、このサブルーチンを終了する。
各順位において完了フラグを0に初期化すると、順位毎ターゲット3学習中フラグ設定サブルーチンでは、ターゲット3学習を開始するとともに、ターゲット3学習開始フラグ[s3_st]に0を設定し、ターゲット3学習中フラグ[s3_sp]に1を設定し(S36i)、このサブルーチンを終了する。
次に、白線検出ECU11における順位毎ターゲット2学習中フラグ設定サブルーチンを図21のフローチャートに沿って説明する。図21は、図1の白線検出ECUにおける光軸調整処理の順位毎ターゲット2学習中フラグ設定サブルーチンのフローチャートである。順位毎ターゲット2学習中フラグ設定サブルーチンでは、ターゲット2学習が他の個別ターゲット学習に対してどの順位で学習を実行するかを見極め、ターゲット2学習を開始し、ターゲット2学習開始フラグ[s2_st]をクリアする。順位毎ターゲット2学習中フラグ設定サブルーチンは、学習対象の個別ターゲットがターゲット3からターゲット2に変わるだけで順位毎ターゲット3学習中フラグ設定サブルーチンと同様の処理であり、順位毎ターゲット3学習中フラグ設定サブルーチンのS36a〜S36iに対応してS37a〜S37iの処理がある。そこで、順位毎ターゲット2学習中フラグ設定サブルーチンの詳細な説明は省略する。ちなみに、ターゲット2学習の場合、最初にターゲット2学習を実行するかの見極め(S37a)、ターゲット1学習完了後にターゲット2学習を実行するかの見極め(S37c)、ターゲット3学習完了後にターゲット2学習を実行するかの見極め(S37e)、最後にターゲット2学習を実行するかの見極め(S37g)がある。
次に、白線検出ECU11における順位毎ターゲット1学習中フラグ設定サブルーチンを図22のフローチャートに沿って説明する。図22は、図1の白線検出ECUにおける光軸調整処理の順位毎ターゲット1学習中フラグ設定サブルーチンのフローチャートである。順位毎ターゲット1学習中フラグ設定サブルーチンでは、ターゲット1学習が他の個別ターゲット学習に対してどの順位で学習を実行するかを見極め、ターゲット1学習を開始し、ターゲット1学習開始フラグ[s1_st]をクリアする。順位毎ターゲット1学習中フラグ設定サブルーチンは、学習対象の個別ターゲットがターゲット3からターゲット1に変わるだけで順位毎ターゲット3学習中フラグ設定サブルーチンと同様の処理であり、順位毎ターゲット3学習中フラグ設定サブルーチンのS36a〜S36iに対応してS38a〜S38iの処理がある。そこで、順位毎ターゲット1学習中フラグ設定サブルーチンの詳細な説明は省略する。ちなみに、ターゲット1学習の場合、最初にターゲット1学習を実行するかの見極め(S38a)、ターゲット2学習完了後にターゲット1学習を実行するかの見極め(S38c)、ターゲット3学習完了後にターゲット1学習を実行するかの見極め(S38e)、最後にターゲット1学習を実行するかの見極め(S38g)がある。
このように、順位毎ターゲット1〜3学習中フラグ設定サブルーチンにより、個別ターゲットによる学習の場合、他の個別ターゲットに対してどの順位で学習を実行するかを見極めることによって、既に学習が完了しているターゲットに対して学習要求がきても、その学習要求を排除できる。その結果、作業者のミスをカバーでき、同じ学習を重複して行うようなことなく、光軸調整時間を短縮できる。
次に、白線検出ECU11における全ターゲット同時学習終了フラグ設定サブルーチンを図23のフローチャートに沿って説明する。図23は、白線検出ECUにおける光軸調整処理の全ターゲット同時学習終了フラグ設定サブルーチンのフローチャートである。全ターゲット同時学習終了フラグ設定サブルーチンでは、全ターゲット同時学習の完了したか否かを判定し、正常に完了した場合には全ターゲット同時学習が終了したと判定する。
まず、全ターゲット同時学習終了フラグ設定サブルーチンでは、前回ルーチンで全ターゲット同時学習中(全ターゲット同時学習中フラグ[sa_sp]が1)、かつ、今回ルーチンで全ターゲット同時学習が完了かを判定する(S39a)。S39aの条件を満たさない場合には、このサブルーチンを終了する。
S39aの条件を満たす場合には、全ターゲット同時学習終了フラグ設定サブルーチンでは、全ターゲット同時学習の完了形態が正常か否かを判定する(S39b)。完了形態が異常とは、例えば、作業者が学習中にEEPROMクリア要求を出した等のヒューマンエラー、車間制御ECU12の異常、EEPROM11aへの補正量の書き込み異常がある。
完了形態が正常の場合には、全ターゲット同時学習終了フラグ設定サブルーチンでは、全ターゲット同時学習が終了したと判定し、全ターゲット同時学習中フラグ[sa_sp]に0、全ターゲット同時学習完了フラグ[sa_f]に1、ターゲット3学習完了フラグ[s3_f]に1、ターゲット2学習完了フラグ[s2_f]に1、ターゲット1学習完了フラグ[s1_f]に1、全ターゲット同時学習終了フラグ[sa_e]に1、ターゲット3学習終了フラグ[s3_e]に0、ターゲット2学習終了フラグ[s2_e]に0、ターゲット1学習終了フラグ[s1_e]に0を設定する(S39c)。ちなみに、全ターゲット同時学習の場合、学習が完了し、EEPROM11aに光軸調整量の補正量を正常に書き込んだ時点で学習が終了するので、全ターゲット同時学習終了フラグ[sa_e]に1を設定している。
完了形態が異常の場合には、全ターゲット同時学習終了フラグ設定サブルーチンでは、全ターゲット同時学習が終了していないと判定し、全ターゲット同時学習中フラグ[sa_sp]に0、全ターゲット同時学習終了フラグ[sa_e]に0、ターゲット3学習終了フラグ[s3_e]に0、ターゲット2学習終了フラグ[s2_e]に0、ターゲット1学習終了フラグ[s1_e]に0を設定する(S39d)。ちなみに、全ターゲット同時学習の場合、学習が正常に完了し、EEPROM11aに光軸調整量の補正量を正常に書き込んでいないと、学習が終了しないので、全ターゲット同時学習終了フラグ[sa_e]に0を設定している。
次に、白線検出ECU11におけるターゲット3学習終了フラグ設定サブルーチンを図24のフローチャートに沿って説明する。図24は、白線検出ECUにおける光軸調整処理のターゲット3学習終了フラグ設定サブルーチンのフローチャートである。ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット3学習を完了したことを判定し、さらに、ターゲット3学習が他の個別ターゲット学習に対してどの順位で完了したかを見極め、最後に正常に完了した場合には個別ターゲット学習が全て終了したと判定する。
まず、ターゲット3学習終了フラグ設定サブルーチンでは、最初にターゲット3学習を完了することを見極めるために、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が0、かつ、ターゲット1学習完了フラグ[s1_f]が0、かつ、前回ルーチンでターゲット3同時学習中(ターゲット3学習中フラグ[s3_sp]が1)、かつ、今回ルーチンでターゲット3が学習完了か(つまり、ターゲット3以外のターゲットの学習許可がなく、かつ、他の個別ターゲット学習が完了していない、かつ、ターゲット3が前回ルーチンまで学習中で今回のルーチンで学習完了か)を判定する(S40a)。
S40aの条件を満たす場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット3学習の完了形態が正常か否かを判定する(S40b)。
完了形態が正常の場合には、ターゲット3学習終了フラグ設定サブルーチンでは、3つの個別ターゲット学習のうち最初にターゲット3学習が正常に完了したと判断し、ターゲット3学習中フラグ[sa_sp]に0、ターゲット3学習完了フラグ[sa_f]に1を設定し(S40c)、このサブルーチンを終了する。ちなみに、個別ターゲット学習の場合、3つの個別ターゲット学習が完了し、光軸調整量の補正量をEEPROM11aに書き込まないと学習が終了しないので、ターゲット3学習のみが完了した時点では学習が終了しない。完了形態が異常の場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット3学習中フラグ[s3_sp]に0、全ターゲット同時学習終了フラグ[sa_e]に0、ターゲット3学習終了フラグ[s3_e]に0、ターゲット2学習終了フラグ[s2_e]に0、ターゲット1学習終了フラグ[s1_e]に0を設定する(S40d)。ちなみに、個別ターゲット学習の場合、3つの個別ターゲット学習が正常に完了しないと学習が終了しないので、ターゲット1〜3学習終了フラグに0を設定している。
S40aの条件を満たさない場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット1学習完了後にターゲット3学習を完了することを見極めるために、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が0、かつ、ターゲット1学習完了フラグ[s1_f]が1、かつ、前回ルーチンでターゲット3同時学習中、かつ、今回ルーチンでターゲット3が学習完了か(つまり、ターゲット3以外のターゲットの学習許可がなく、かつ、ターゲット1学習のみ完了している、かつ、ターゲット3が前回ルーチンまで学習中で今回のルーチンで学習完了か)を判定する(S40e)。
S40eの条件を満たす場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット3学習の完了形態が正常か否かを判定する(S40f)。ターゲット3学習終了フラグ設定サブルーチンでは、完了形態が正常の場合には、3つの個別ターゲット学習のうちターゲット1学習完了後にターゲット3学習が正常に完了したと判断し、S40cと同様のフラグ設定し(S40g)、完了形態が異常の場合にはS40dと同様のフラグ設定をし(S40h)、このサブルーチンを終了する。ちなみに、個別ターゲット学習の場合、ターゲット3学習及びターゲット1学習が完了した時点では学習が終了しない。
S40eの条件を満たさない場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット2学習完了後にターゲット3学習を完了することを見極めるために、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が1、かつ、ターゲット1学習完了フラグ[s1_f]が0、かつ、前回ルーチンでターゲット3同時学習中、かつ、今回ルーチンでターゲット3が学習完了か(つまり、ターゲット3以外のターゲットの学習許可がなく、かつ、ターゲット2学習のみ完了している、かつ、ターゲット3が前回ルーチンまで学習中で今回のルーチンで学習完了か)を判定する(S40i)。
S40iの条件を満たす場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット3学習の完了形態が正常か否かを判定する(S40j)。ターゲット3学習終了フラグ設定サブルーチンでは、完了形態が正常の場合には、3つの個別ターゲット学習のうちターゲット2学習完了後にターゲット3学習が正常に完了したと判断し、S40cと同様のフラグ設定し(S40k)、完了形態が異常の場合にはS40dと同様のフラグ設定をし(S40l)、このサブルーチンを終了する。ちなみに、個別ターゲット学習の場合、ターゲット3学習及びターゲット2学習が完了した時点では学習が終了しない。
S40iの条件を満たさない場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット1学習完了後かつターゲット2学習完了後に(つまり、最後に)ターゲット3学習を完了することを見極めるために、全ターゲット同時学習許可フラグ[a_sa]が0、かつ、ターゲット2学習許可フラグ[a_s2]が0、かつ、ターゲット1学習許可フラグ[a_s1]が0、かつ、ターゲット2学習完了フラグ[s2_f]が1、かつ、ターゲット1学習完了フラグ[s1_f]が1、かつ、前回ルーチンでターゲット3同時学習中、かつ、今回ルーチンでターゲット3が学習完了か(つまり、ターゲット3以外のターゲットの学習許可がなく、かつ、ターゲット1学習及びターゲット2学習が完了している、かつ、ターゲット3が前回ルーチンまで学習中で今回のルーチンで学習完了か)を判定する(S40m)。
S40mの条件を満たす場合には、ターゲット3学習終了フラグ設定サブルーチンでは、ターゲット3学習の完了形態が正常か否かを判定する(S40n)。
完了形態が正常の場合には、ターゲット3学習終了フラグ設定サブルーチンでは、3つの個別ターゲット学習のうちターゲット3学習が最後に完了したと判断し、ターゲット3学習中フラグ[sa_sp]に0、ターゲット3学習完了フラグ[s3_f]に1、全ターゲット同時学習終了フラグ[sa_e]に0、ターゲット3学習終了フラグ[s3_e]に1、ターゲット2学習終了フラグ[s2_e]に0、ターゲット1学習終了フラグ[s1_e]に0を設定し(S40o)、このサブルーチンを終了する。個別ターゲット同時学習の場合、3つの個別ターゲット学習が全て正常に完了し、EEPROM11aに光軸調整量の補正量を正常に書き込んだ時点で学習が終了するので、最後に学習を完了したターゲット3のターゲット3学習終了フラグ[s3_e]に1を設定している。完了形態が異常の場合には、ターゲット3学習終了フラグ設定サブルーチンでは、S40dと同様のフラグ設定をし(S40p)、このサブルーチンを終了する。
次に、白線検出ECU11におけるターゲット2学習終了フラグ設定サブルーチンを図25のフローチャートに沿って説明する。図25は、白線検出ECUにおける光軸調整処理のターゲット2学習終了フラグ設定サブルーチンのフローチャートである。ターゲット2学習終了フラグ設定サブルーチンでは、ターゲット2学習を完了したことを判定し、さらに、ターゲット2学習が他の個別ターゲット学習に対してどの順位で完了したかを見極め、最後に正常に完了した場合には個別ターゲット学習が全て終了したと判定する。ターゲット2学習終了フラグ設定サブルーチンは、学習対象の個別ターゲットがターゲット3からターゲット2に変わるだけでターゲット3学習終了フラグ設定サブルーチンと同様の処理であり、ターゲット3学習終了フラグ設定のS40a〜S40pに対応してS41a〜S41pの処理がある。そこで、ターゲット2学習終了フラグ設定サブルーチンの詳細な説明は省略する。ちなみに、ターゲット2学習の場合、最初にターゲット2学習を完了したかの見極め(S41a)、ターゲット1学習完了後にターゲット2学習を完了したかの見極め(S41e)、ターゲット3学習完了後にターゲット2学習を完了したかの見極め(S41i)、最後にターゲット2学習を完了したかの見極め(S41m)がある。
次に、白線検出ECU11におけるターゲット1学習終了フラグ設定サブルーチンを図26のフローチャートに沿って説明する。図26は、白線検出ECUにおける光軸調整処理のターゲット1学習終了フラグ設定サブルーチンのフローチャートである。ターゲット1学習終了フラグ設定サブルーチンでは、ターゲット1学習を完了したことを判定し、さらに、ターゲット1学習が他の個別ターゲット学習に対してどの順位で完了したかを見極め、最後に正常に完了した場合には個別ターゲット学習が全て終了したと判定する。ターゲット1学習終了フラグ設定サブルーチンは、学習対象の個別ターゲットがターゲット3からターゲット1に変わるだけでターゲット3学習終了フラグ設定サブルーチンと同様の処理であり、ターゲット3学習終了フラグ設定のS40a〜S40pに対応してS42a〜S42pの処理がある。そこで、ターゲット2学習終了フラグ設定サブルーチンの詳細な説明は省略する。ちなみに、ターゲット1学習の場合、最初にターゲット1学習を完了したかの見極め(S42a)、ターゲット2学習完了後にターゲット1学習を完了したかの見極め(S42e)、ターゲット3学習完了後にターゲット1学習を完了したかの見極め(S42i)、最後にターゲット1学習を完了したかの見極め(S42m)がある。
このように、ターゲット1〜3学習終了フラグ設定サブルーチンにより、個別ターゲット学習の場合、最後に学習を正常に完了したターゲットが明確になるので、個別ターゲットによる学習が全て終了したことが判る。また、学習を完了したターゲットが明確になるので、そのターゲットの学習の完了結果をテスタ3に送信することにより、作業者が同一のターゲットによる学習要求を発行するようなことがなくなる。その結果、作業者のミスを極力無くしことでき、光軸調整時間を短縮できる。
光軸調整システム1によれば、ターゲット1〜3による左右方向に配置した複数のターゲットを利用した光軸調整が可能であり、FOEの補正量のみならず、ロール角も求めることができ、カメラ10に対するロール角の調整も可能となる。その結果、カメラ10により、車線を示す左右両側の白線を含む精度の高い画像情報を得ることができる。さらに、光軸調整システム1によれば、3つのターゲットによる全ターゲット同時学習のみならず、1つのターゲットによる個別ターゲット学習にも対応可能であり、ターゲットを1つしか配置できない検査スペースやターゲットを1つしか備えない検査装置に対応可能である。
また、光軸調整システム1(特に、白線検出ECU11)によれば、個別ターゲット学習の場合、各個別ターゲット学習を実行する際の順位及び完了した際の順位を判別しているので、同一の個別ターゲットに対する重複した学習を防止でき、光軸調整時間を短縮化できる。また、作業者の学習要求ミスを防止できるとともに、学習要求ミスを行った場合でもそのミスをカバーできる。さらに、ターゲット1〜3の順番に関係なく、個別ターゲット学習が可能であり、また、作業者が順番を間違えても白線検出ECU11では対応可能である。その結果、検査効率を向上させることができる。
また、光軸調整システム1(特に、白線検出ECU11)によれば、作業者が意図的に再光軸調整に移行させたか否かを判別できる。さらに、光軸調整システム1(特に、白線検出ECU11)によれば、必要な情報を白線検出ECU11で取り込んだ後、車間制御ECU12による通信が一時的に異常となった場合でも学習を継続させ、ロバスト性を向上させる。
また、光軸調整システム1によれば、機能コードとして3つの光軸調整モードを設けることにより、製造工場やディーラにおける環境に対応して光軸調整中や光軸調整終了を作業者に知らせることができる。
また、白線検出ECU11に光軸調整処理を行うためのソフトウエアを組み込むとともに車間制御ECU12にバイパス処理を行うためのソフトウエアを組み込み、テスタ3側から各種フラグ及び各種情報を送信するだけで、光軸調整システム1を簡単に構築することができる。
以上、本発明に係る実施の形態について説明したが、本発明は上記実施の形態に限定されることなく様々な形態で実施される。
例えば、本実施の形態では3つのターゲットを左右方向に配置させて光軸調整を行う場合に適用したが、複数のターゲットを上下方向に配置させて光軸調整を行う場合に適用してもよいし、複数のターゲットを上下左右に配置させて光軸調整を行う場合に適用してもよいし、あるいは、単一のターゲットで光軸調整を行う場合に適用してもよい。
また、本実施の形態では白線を検出するためのカメラの光軸調整に適用したが、車両や歩行者等を検出するためのカメラの光軸調整に適用してもよいし、車両の後方の情報を取得するためのカメラの光軸調整に適用してもよい。
また、本実施の形態では車間制御ECUにバイパス機能をさせて車間制御ECUを介して白線検出ECUがCAN通信を行う構成としたが、CAN通信システムに直接接続可能な場合にはCAN通信を直接行う構成でもよい。
1…光軸調整システム、2…車両、2a…操舵支援システム、2b…車間制御システム、3…テスタ、4…ターゲット、10…カメラ、11…白線検出ECU、11a…EEPROM、12…車間制御ECU、12a…CANI/F、13…レーザレーダセンサ、14…CAN通信システム、15…操舵支援スイッチ、16…車速センサ、17…ブザー、18…メータECU、19…メータ