(57)【特許請求の範囲】
【請求項１】
車輪の回転に伴い移動する車両に搭載されるナビゲーションシステムに備えられ、車両の現在位置を算出する現在位置算出装置において、
少なくとも道路を記述した地図を表す地図データを記憶している地図データ記憶手段と、
車両の進行方向を検出する進行方向検出手段と、
車輪の回転速度を検出する回転速度検出手段と、
上記回転速度検出手段が検出した車輪の回転速度、および、設定された走行距離係数に応じて、車両の走行距離を算出する走行距離算出手段と、
上記走行距離算出手段が算出した走行距離、上記進行方向検出手段が検出した進行方向、および、上記地図データ記憶手段が記憶している地図データが表す地図に応じて、車両が走行している道路である走行道路と該走行道路上の車両の現在位置とを推定する現在位置推定手段と、
上記現在位置推定手段が推定した現在位置における走行道路の方向と、上記進行方向検出手段が検出した進行方向との差に応じて、上記走行距離係数を補正する走行距離係数補正手段と、
上記現在位置推定手段が推定した現在位置の修正後の現在位置を含む、現在位置を修正する旨の修正指示を受付ける修正指示受付手段と、
上記修正指示受付手段が受付けた修正指示に含まれる、修正後の現在位置となるように、上記現在位置推定手段が推定した現在位置を修正する現在位置修正手段と、
上記修正指示受付手段が受付けた修正指示に応じて、上記走行距離係数を初期化する走行距離係数初期化手段と
を有することを特徴とする現在位置算出装置。
【請求項２】
請求項１記載の現在位置算出装置において、
上記走行距離係数初期化手段は、
上記走行距離算出手段が算出した走行距離が所定の距離に達する前に、上記修正指示受付手段が修正指示を受付けた回数が所定の回数に達した場合に、上記走行距離係数を初期化することを特徴とする現在位置算出装置。
【請求項３】
車輪の回転に伴い移動する車両に搭載されるナビゲーションシステムに備えられ、車両の現在位置を算出する現在位置算出装置において、
少なくとも道路を記述した地図を表す地図データを記憶している地図データ記憶手段と、
車両の進行方向を検出する進行方向検出手段と、
車輪の回転速度を検出する回転速度検出手段と、
ＧＰＳ衛星から発信された信号を用いて、車両の現在位置を測定する現在位置測定手段と、
上記回転速度検出手段が検出した車輪の回転速度、および、設定された走行距離係数に応じて、車両の走行距離を算出する走行距離算出手段と、
上記走行距離算出手段が算出した走行距離、上記進行方向検出手段が検出した進行方向、および、上記地図データ記憶手段が記憶している地図データが表す地図に応じて、車両が走行している道路である走行道路と該走行道路上の車両の現在位置とを推定する現在位置推定手段と、
上記現在位置推定手段が推定した現在位置における走行道路の方向と、上記進行方向検出手段が検出した進行方向との差に応じて、上記走行距離係数を補正する走行距離係数補正手段と、
上記現在位置測定手段が測定した現在位置となるように、上記現在位置推定手段が推定した現在位置を修正する現在位置修正手段と、
上記現在位置測定手段が測定した現在位置と上記現在位置推定手段が推定した現在位置との差に応じて、上記走行距離係数を初期化する走行距離係数初期化手段と
を有することを特徴とする現在位置算出装置。
【請求項４】
請求項３記載の現在位置算出装置において、
上記走行距離係数初期化手段は、
上記走行距離算出手段が算出した走行距離が第１の所定の距離に達する毎に、上記現在位置測定手段が測定した現在位置と上記現在位置推定手段が推定した現在位置と差が第２の所定の距離より大きくなったか否かを判定し、上記走行距離算出手段が算出した走行距離が上記第２の所定の距離に達する前に、上記２つの現在位置の差が第３の所定の距離より大きくなったと判定した回数が所定の回数に達した場合に、上記走行距離係数を初期化することを特徴とする現在位置算出装置。
【請求項５】
車輪の回転に伴い移動する車両に搭載されるナビゲーションシステムに備えられ、車両の走行距離および進行方向に基づいて、地図中に記述されている道路のうちの、車両が走行している道路である走行道路と該走行道路上の車両の現在位置とを推定する現在位置算
出装置において、車両の走行距離を求めるための走行距離係数を補正し初期化する方法であって、
推定した車両の現在位置における走行道路の方向を求め、
求めた走行道路の方向と車両の進行方向との差に応じて、上記走行距離係数を補正し、
外部から入力される、推定した車両の現在位置を修正する旨の指示に応じて、推定した車両の現在位置を修正すると共に、上記走行距離係数を初期化することを特徴とする走行距離係数補正／初期化方法。
【請求項６】
車輪の回転に伴い移動する車両に搭載されるナビゲーションシステムに備えられ、車両の走行距離および進行方向に基づいて、地図中に記述されている道路のうちの、車両が走行している道路である走行道路と該走行道路上の車両の現在位置とを推定する現在位置算
出装置において、車両の走行距離を求めるための走行距離係数を補正し初期化する方法であって、
推定した車両の現在位置における走行道路の方向を求め、
求めた走行道路の方向と車両の進行方向との差に応じて、上記走行距離係数を補正し、
ＧＰＳ衛星から発信された信号を用いて、車両の現在位置を測定し、
測定した車両の現在位置と推定した車両の現在位置との差に応じて、推定した車両の現在位置を修正すると共に、上記走行距離係数を初期化すること
を特徴とする走行距離係数補正／初期化方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、車輪の回転に伴い移動する車両に搭載されるナビゲーションシステムに備えられ、車両の走行距離や進行方向等から車両の現在位置を算出する現在位置算出装置に関する。
【０００２】
【従来の技術】
従来、ナビゲーションシステムにおいて、車両の現在位置は、ジャイロ等の方位センサにより測定した車両の進行方向、および、車速センサまたは距離センサにより測定した車両の走行距離に基づいて算出することが行われている。
【０００３】
なお、車両の走行距離は、一般的には、トランスミッションの出力軸やタイヤの回転数を計測し、その回転数に、タイヤ１回転当りに車両が進む距離である走行距離係数を乗ずることにより求めることができる。
【０００４】
しかしながら、算出した車両の現在位置と実際に車両が存在する位置との間には、誤差が生じることが多いので、この誤差を解消するために、例えば、特公平６−１３９７２号公報に記載されているように、車両が走行している道路を推定し、推定した道路上に位置するように、算出した車両の現在位置を修正する、いわゆる、マップマッチングが行われている。このマップマッチングによれば、現在位置の精度を高めることができる。
【０００５】
ところで、走行時には、タイヤの磨耗や温度変化による膨張等により、タイヤの直径、すなわち、走行距離係数が時々刻々と変化する。このため、走行距離を求める過程で誤差が発生し、走行距離に基づいて算出される現在位置の精度が低くなってしまう。例えば、タイヤ１回転当りの走行距離係数に、１％の誤差が生じると、１００ｋｍ走行した場合、１ｋｍの誤差が発生してしまう。
【０００６】
このような走行距離の誤差は、通常の道路を走行している場合は、上述したマップマッチングの技術により、ある程度修正できる。しかし、高速道路等の道路を走行する際には、マップマッチングで利用できるカーブや交差点等の特徴が道路にないことから、十分に現在位置を修正することができなくなる。
【０００７】
さらに、一旦、算出した現在位置と実際に車両が存在する位置との間に１ｋｍ程度の誤差が発生してしまうと、マップマッチングの技術によって現在位置を修正することは困難になる。
【０００８】
そこで、走行距離の誤差をなくすために、従来は、
（１）交差点を曲がったとき（始点）から、次の交差点を曲がる（終点）までの道路と、車輪の回転数から求めた車両の走行距離とを比較することにより、走行距離係数を補正する技術、
（２）特公平６−２７６５２号公報に記載されているように、２つのビーコン間の地図上の距離と、該２つのビーコン間を実際に走行して求めた車両の走行距離とを比較することにより、走行距離係数を補正する技術、
（３）特開平２−１０７９５８号公報に記載されているように、ＧＰＳ衛星から発信された信号を用いて、車両の現在位置を算出するＧＰＳ受信装置を利用することにより、車両の走行速度を求め、求めた走行速度とタイヤの回転数とを比較することにより、走行距離係数を補正する技術、
が行われていた。
【０００９】
【発明が解決しようとする課題】
しかし、上述した（１）の技術では、交差点間の道路が少しでも曲がっていたり、車両が蛇行運転したりすると、走行距離係数を適切な値に補正することができなくなる。また、上述した始終点を正確に特定するのが難しいという問題もある。例えば、交差点内に複数車線がある場合には、どちらの車線を通って曲がるかによって始終点が異なってくるが、このような車線まで特定することは容易ではない。
【００１０】
また、上述した（２）の技術でも、道路が直線でないと、走行距離係数を適切な値に補正することができないし、また、車両が利用できるビーコン設備を設けなければならないという問題点がある。
【００１１】
また、上述した（３）の技術では、車両の走行速度が低い場合に、正確な走行速度を求めることができない場合があり、また、車両の走行速度の変化が大きい場合には、処理に時間がかかり、算出した走行速度に誤差が生じてしまう。このため、走行距離係数を適切な値に補正することができない場合があるという問題点がある。また、車両がトンネルや高架下や建物の影など、ＧＰＳ信号を受信できない走行状態の場合には、ＧＰＳ衛星を利用できないことから、走行距離係数を補正することができなくなるという問題もある。
【００１２】
そこで、本発明は、後述するように、走行する道路の特徴の多少や車両の走行速度に関わらず、推定した現在位置における道路の方向と車両の進行方向との差、および、推定した道路の右左折に応じて、動的に、走行距離係数を適切な値に補正する技術を提供している。
【００１３】
しかしながら、いずれの技術によって走行距離係数を補正した場合でも、例えば、車両のタイヤが交換されるなどの何らかの要因によって、走行距離係数の補正結果に誤りが生じると、求める走行距離の誤差が大きくなってしまい、従って、推定する現在位置の精度（マップマッチングの精度）が低下してしまう。
【００１４】
そこで、このようなときには、走行距離係数を一旦初期値に戻して、補正をし直すことが好ましい。
【００１５】
本発明の目的は、車両の走行に伴って補正されている、走行距離を求めるために用いられる走行距離係数を初期値に戻すことが可能な現在位置算出装置を提供することにある。
【００１６】
【課題を解決するための手段】
上記目的を達成するために、本発明は、車輪の回転に伴い移動する車両に搭載されるナビゲーションシステムに備えられ、車両の現在位置を算出する現在位置算出装置において、
（１）少なくとも道路を記述した地図を表す地図データを記憶している地図データ記憶手段、
（２）車両の進行方向を検出する進行方向検出手段、
（３）車輪の回転速度を検出する回転速度検出手段と、
（４）上記回転速度検出手段が検出した車輪の回転速度、および、設定された走行距離係数に応じて、車両の走行距離を算出する走行距離算出手段、
（５）上記走行距離算出手段が算出した走行距離、上記進行方向検出手段が検出した進行方向、および、上記地図データ記憶手段が記憶している地図データが表す地図に応じて、車両が走行している道路である走行道路と該走行道路上の車両の現在位置とを推定する現在位置推定手段、
（６）上記現在位置推定手段が推定した現在位置における走行道路の方向と、上記進行方向検出手段が検出した進行方向との差に応じて、上記走行距離係数を補正する走行距離係数補正手段、
（７）上記現在位置推定手段が推定した現在位置の修正後の現在位置を含む、現在位置を修正する旨の修正指示を受付ける修正指示受付手段、
（８）上記修正指示受付手段が受付けた修正指示に含まれる、修正後の現在位置となるように、上記現在位置推定手段が推定した現在位置を修正する現在位置修正手段、
（９）上記修正指示受付手段が受付けた修正指示に応じて、上記走行距離係数を初期化する走行距離係数初期化手段、
を有するようにしている。
【００１７】
例えば、上記走行距離係数初期化手段は、上記走行距離算出手段が算出した走行距離が所定の距離に達する前に、上記修正指示受付手段が修正指示を受付けた回数が所定の回数に達した場合に、上記走行距離係数を初期化するようにすることができる。
【００１８】
また、上記目的を達成するために、本発明は、車輪の回転に伴い移動する車両に搭載されるナビゲーションシステムに備えられ、車両の現在位置を算出する現在位置算出装置において、
（１）少なくとも道路を記述した地図を表す地図データを記憶している地図データ記憶手段、
（２）車両の進行方向を検出する進行方向検出手段、
（３）車輪の回転速度を検出する回転速度検出手段、
（４）ＧＰＳ衛星から発信された信号を用いて、車両の現在位置を測定する現在位置測定手段、
（５）上記回転速度検出手段が検出した車輪の回転速度、および、設定された走行距離係数に応じて、車両の走行距離を算出する走行距離算出手段、
（６）上記走行距離算出手段が算出した走行距離、上記進行方向検出手段が検出した進行方向、および、上記地図データ記憶手段が記憶している地図データが表す地図に応じて、車両が走行している道路である走行道路と該走行道路上の車両の現在位置とを推定する現在位置推定手段と、
（７）上記現在位置推定手段が推定した現在位置における走行道路の方向と、上記進行方向検出手段が検出した進行方向との差に応じて、上記走行距離係数を補正する走行距離係数補正手段、
（８）上記現在位置測定手段が測定した現在位置となるように、上記現在位置推定手段が推定した現在位置を修正する現在位置修正手段、
（９）上記現在位置測定手段が測定した現在位置と上記現在位置推定手段が推定した現在位置との差に応じて、上記走行距離係数を初期化する走行距離係数初期化手段、
を有するようにしている。
【００１９】
例えば、上記走行距離係数初期化手段は、上記走行距離算出手段が算出した走行距離が所定の距離に達する毎に、上記現在位置測定手段が測定した現在位置と上記現在位置推定手段が推定した現在位置と差が所定の距離より大きくなったか否かを判定し、上記走行距離算出手段が算出した走行距離が上記所定の距離より大きい所定の距離に達する前に、上記２つの現在位置の差が所定の距離より大きくなったと判定した回数が所定の回数に達した場合に、上記走行距離係数を初期化するようにすることができる。
【００２０】
【作用】
本発明の現在位置算出装置では、上記走行距離係数補正手段は、上記現在位置推定手段が推定した現在位置における走行道路の方向と、上記進行方向検出手段が検出した進行方向との差に応じて、上記走行距離係数を補正する。
【００２１】
しかしながら、例えば、車両のタイヤが交換されるなどの何らかの要因によって、上記走行距離係数補正手段による補正結果に誤りが生じると、上記走行距離算出手段が算出する走行距離の誤差が大きくなってしまい、従って、上記現在位置推定手段が推定する現在位置の精度が低下してしまう。
【００２２】
ところが、本発明の現在位置算出装置では、上記走行距離係数初期化手段は、上記修正指示受付手段が受付けた修正指示に応じて、上記走行距離係数を初期化し、また、上記現在位置測定手段が測定した現在位置と上記現在位置推定手段が推定した現在位置との差に応じて、上記走行距離係数を初期化しているので、上記走行距離係数補正手段による補正結果に誤りが生じ、上記現在位置推定手段が推定する現在位置の精度が低下してしまっても、上記走行距離係数補正手段が、走行距離係数を補正し直すことができるようになる。
【００２３】
【実施例】
以下、本発明の実施例について図面を参照して説明する。
【００２４】
図１は本実施例の現在位置算出装置を適用したナビゲーションシステムの構成を示すブロック図である。
【００２５】
図１に示すように、本実施例に係るナビゲーションシステムは、車両のヨーレイトを検出することにより車両の進行方向の変化を検出する角速度センサ１０１と、地磁気を検出することにより車両の進行方向を検出する方位センサ１０２と、車両のトランスミッションの出力軸の回転速度に比例した時間間隔でパルスを出力する車速センサ１０３とを備えている。
【００２６】
また、本実施例に係るナビゲーションシステムは、車両の現在位置およびその周辺の地図を表示するディスプレイ１０７と、ディスプレイ１０７に表示する地図の縮尺を切替える旨の指示をユーザから受付けるスイッチ１０４と、地図を表す地図データを記憶しているＣＤ−ＲＯＭ１０５と、ＣＤ−ＲＯＭ１０５から地図データを読み込むドライバ１０６とを備えている。さらに、ディスプレイ１０７に表示された車両の現在位置の修正する旨の指示をユーザから受付けるスイッチ１１７を備えている。
【００２７】
また、本実施例に係るナビゲーションシステムは、上述した各周辺機器の動作を制御するコントローラ１０８を備えている。
【００２８】
コントローラ１０８は、角速度センサ１０１の出力値（アナログ信号）をディジタル信号に変換するＡ／Ｄ変換器１０９と、方位センサ１０２の出力値（アナログ信号）をディジタル信号に変換するＡ／Ｄ変換器１１０と、車速センサ１０３の出力パルス数を０.１秒毎にカウントするカウンタ１１６と、スイッチ１０４の押下の有無を入力するパラレルＩ／Ｏ１１１と、ドライバ１０６がＣＤ−ＲＯＭ１０５から読み込んだ地図データを転送するＤＭＡ（Direct Memory Access）コントローラ１１２と、ディスプレイ１０７に車両の現在位置およびその周辺の地図を表示する表示プロセッサ１１３とを有している。
【００２９】
また、コントローラ１０８は、さらに、マイクロプロセッサ（ＭＰＵ）１１４と、メモリ１１５とを有している。
【００３０】
ＭＰＵ１１４は、Ａ／Ｄ変換器１０９を介して得た角速度センサ１０１の出力値、Ａ／Ｄ変換器１１０を介して得た方位センサ１０２の出力値、カウンタ１１６がカウントした車速センサ１０３の出力パルス数、パラレルＩ／Ｏ１１１を介して得たスイッチ１０４の押下の有無、ＤＭＡコントローラ１１２を介して得た地図データを入力し、これらに基づいて処理を行うことにより、車両の現在位置を算出する。また、ＭＰＵ１１４は、算出した車両の現在位置およびその周辺の地図を表示プロセッサ１１３を介してディスプレイ１０７に表示させる。
【００３１】
なお、車両の現在位置の表示は、図２に示すように、既にディスプレイ１０７に表示している地図にマーク（ここでは、矢印）２０を重畳して表示することにより行う。これにより、ユーザは、車両の現在位置を知ることができる。
【００３２】
また、メモリ１１５は、ＭＰＵ１１４が実行するプログラムおよび後述するテーブルを記憶しているＲＯＭと、ＭＰＵ１１４がワークエリアとして使用するＲＡＭとから構成されている。
【００３３】
以下、本実施例に係るナビゲーションシステムの動作について説明する。
【００３４】
まず、車両の進行方向および走行距離を算出する進行方向・走行距離算出処理について説明する。
【００３５】
図３は進行方向・走行距離算出処理のフローチャートである。
【００３６】
本処理は、一定周期、例えば、１００ｍＳ毎に起動されるＭＰＵ１１４のプログラムルーチンである。
【００３７】
図３に示すように、本処理では、まず、Ａ／Ｄ変換器１０９から角速度センサ１０１の出力値を読み込む（ステップ３０１）。この角速度センサ１０１の出力値は、方向の変化（角速度）を示す値であるので、車両の相対的な進行方向しか検出できない。そこで、続いて、Ａ／Ｄ変換器１１０から方位センサ１０２の出力値を読み込み（ステップ３０２）、読み込んだ方位センサ１０２の出力値が示す絶対的な方向、および、ステップ３０１で読み込んだ角速度センサ１０１の出力値が示す方向の変化を用いて、車両の進行方向Ｗを決定し、決定した進行方向ＷをＲＡＭに保存する（ステップ３０３）。
【００３８】
なお、進行方向Ｗの決定は、例えば、長い時間、車速が低いときには、角速度センサ１０１の誤差が大きいので、一定時間以上車速が低い場合には、方位センサ１０２の出力値が示す絶対的な方向のみを利用するという方法により行う。
【００３９】
続いて、車速センサ１０３からの出力パルス数を０.１秒毎に計数したカウンタ１１６の計数値を読み込み（ステップ３０４）、読み込んだ計数値に、走行距離係数Ｒを乗ずることにより、０.１秒当りに車両が進んだ走行距離Ｌを求める（ステップ３０５）。なお、走行距離係数Ｒは、タイヤ１回転当りに車両が進む距離を示す値であり、その求め方については後述する。
【００４０】
続いて、ステップ３０５で求めた走行距離Ｌを、ＲＡＭに保存されている走行距離Ｌの積算値ΣＬ１に加算し、積算値ΣＬ１が一定距離（例えば、２ｍ）に達したか否かを判定し（ステップ３０６）、２ｍに満たない場合は、ステップ３０９に進む。また、積算値ΣＬ１が２ｍに達した場合は、積算値ΣＬ１を「０」に初期化すると共に（ステップ３０７）、後述するＲ初期化処理を起動してから（ステップ３０８）、ステップ３０９に進む。
【００４１】
ステップ３０９では、ステップ３０５で求めた走行距離Ｌを、ＲＡＭに保存されている走行距離Ｌの積算値ΣＬ２に加算し、積算値ΣＬ２が一定距離（例えば、２０ｍ）に達したか否かを判定し、２０ｍに満たない場合は、今回の処理を終了する。また、積算値ΣＬ２が２０ｍに達した場合は、積算値ΣＬ２を「０」に初期化すると共に（ステップ３１０）、後述する現在位置算出処理を起動してから（ステップ３１１）、今回の処理を終了する。
【００４２】
次に、車両の現在位置を算出する現在位置算出処理について説明する。
【００４３】
図４は現在位置算出処理のフローチャートである。
【００４４】
本処理は、図３のステップ３０８で起動されるＭＰＵ１１４のプログラムルーチンである。すなわち、本処理は、車両が進んだ距離が２０ｍに達する毎に起動される。
【００４５】
図４に示すように、本処理では、まず、ＲＡＭに保存されている進行方向Ｗを読み込む（ステップ４０１）。続いて、読み込んだ進行方向Ｗおよび２０ｍに基づいて、車両の移動量を、緯度方向および経度方向の各々について算出し、さらに、これらの各方向についての移動量を、ＲＡＭに保存されている車両の現在位置Ｂ（前回の処理で修正した現在位置Ｂ）に加算して、現在の車両の現在位置Ａを求める（ステップ４０２）。
【００４６】
なお、ナビゲーションシステムの始動直後など、前回の処理で修正した車両の現在位置Ｂがない場合には、所定の位置を車両の現在位置Ｂとして用いることにより、現在位置Ａを求めるようにする。
【００４７】
続いて、ステップ４０２で求めた現在位置Ａの周辺の地図を表す地図データを、ＣＤ−ＲＯＭ１０５からドライバ１０６およびＤＭＡコントローラ１１３を介して読み込み（ステップ４０３）、現在位置Ａを中心とする所定の距離Ｄ内に存在する道路（線分）のうちから、ステップ４０１で読み込んだ進行方向Ｗとの間の角度のズレθがしきい値Ｔ以内にある全ての線分を選択する（ステップ４０４）。
【００４８】
なお、道路は、例えば、図６に示すように、２点間を結ぶ複数の線分６０〜６３で近似し、これらの線分を、その始点および終点の座標によって表したものを用いるようになっている。図６に示した例では、線分６２は、その始点（ｘ３，ｙ３）および終点（ｘ４，ｙ４）によって表される。
【００４９】
続いて、ステップ４０４で選択した全ての線分に対して、現在位置Ａから垂線を下し、該垂線の長さ（現在位置Ａと線分との間の最短距離）ｌを求め（ステップ４０５）、エラーコスト＝α×θ＋β×ｌを求める（ステップ４０６）。
【００５０】
ここで、α，βは、重み付け係数であり、これらは、車両が走行している道路を推定する際に、進行方向と道路との間の角度のズレθ、および、現在位置Ａと道路との間の最短距離ｌのいずれを重視するかによって変化させることができる。例えば、現在位置Ａとの間が近い道路を重視する場合は、αよりもβを大きくするようにする。
【００５１】
各線分についてのエラーコストを求めたならば、エラーコストが最も小さい線分を、車両が走行している道路であると推定する（ステップ４０７）。
【００５２】
最後に、車両が走行している道路であると推定した線分と現在位置Ａからの垂線とが交差する点を、修正した現在位置Ｂとして、ＲＡＭに保存すると共に（ステップ４０８）、後述する第１のＲｓｈ変更処理を起動すると共に（ステップ４０９）、後述する第２のＲｓｈ変更処理を起動する（ステップ４１０）。
【００５３】
続いて、ＲＡＭに保存されている走行距離Ｌの積算値ΣＬ３に２０ｍを加算し、積算値ΣＬ３が一定距離（例えば、１０ｋｍ）に達したか否かを判定し（ステップ４１１）、１０ｋｍに満たない場合は、今回の処理を終了する。また、積算値ΣＬ３が１０ｋｍに達した場合は、積算値ΣＬ３を「０」に初期化すると共に（ステップ４１２）、後述するＲａ変更処理を起動してから（ステップ４１３）、今回の処理を終了する。
【００５４】
ところで、上述したステップ４０４では、現在位置Ａを中心とする所定の距離Ｄ内に存在する道路（線分）のうちから、進行方向Ｗとの間の角度のズレθがしきい値Ｔ以内にある全ての線分を選択するようにしているが、この距離Ｄは、前回の処理で推定した道路についてのエラーコストに基づいて決定するようにしてもよい。ここで、エラーコストに基づいて距離Ｄを決定する理由は、エラーコストが大きい場合は、前回の処理で修正した現在位置Ｂの精度に対する信憑性が低いと考えられるので、より広い範囲を検索して道路を探す方が、正しい現在位置Ａを算出する上で適当であるからである。
【００５５】
次に、現在位置およびその周辺の地図を表示する表示処理について説明する。
【００５６】
図５は表示処理のフローチャートである。
【００５７】
本処理は、一定周期、例えば、１Ｓ毎に起動されるＭＰＵ１１４のプログラムルーチンである。
【００５８】
図５に示すように、本処理では、まず、スイッチ１０４が押下されて地図の縮尺の切替えが指示されているか否かを、パラレルＩ／Ｏ１１１が入力している内容を見て判断する（ステップ５０１）。スイッチ１０４が押下されている場合は、それに対応して、所定の縮尺フラグを設定する（ステップ５０２）。
【００５９】
続いて、ＲＡＭに保存されている現在位置Ｂおよび進行方向Ｗを読み込み（ステップ５０３）、ステップ５０２で設定した縮尺フラグの内容に応じた縮尺の地図を、例えば、図２に示すように、表示プロセッサ１１３を介してディスプレイ１０７に表示する（ステップ５０４）。
【００６０】
続いて、ディスプレイ１０７に表示された地図に重畳して、車両の現在位置Ｂと車両の進行方向Ｗを、例えば、図２に示すように、矢印２０を用いて、表示プロセッサ１１３を介してディスプレイ１０７に表示する（ステップ５０５）。
【００６１】
最後に、これらに重畳して、北を示す北マーク２１および縮尺に対応した距離マーク２２を、例えば、図２に示すように、表示プロセッサ１１３を介してディスプレイ１０７に表示する（ステップ５０６）。
【００６２】
なお、本実施例においては、上述したように、矢印を用いて車両の現在位置および進行方向を示したが、車両の現在位置Ｂおよび進行方向Ｗの表示形態は、これらが明確に示されるものであれば、任意でよい。また、北マーク２１等も同様である。
【００６３】
次に、図３のステップ３０５で用いる走行距離係数Ｒの求め方について説明する。
【００６４】
上述したように、車両の走行距離Ｌは、車速センサ１０３の出力パルス数に走行距離係数Ｒを乗じて算出する。しかし、タイヤの摩耗等によって、タイヤ１回転当りに車両が進む距離が変化するので、走行距離係数Ｒを固定値とすると、車両の走行に伴い、走行距離Ｌを正確に求めることができなくなってくる。
【００６５】
そこで、本実施例では、逐次、図４のステップ４０８で修正した現在位置Ｂ、図４のステップ４０７で推定した道路（現在位置Ｂが位置する道路）の方向（道路方向Ｖ）、および、図３のステップ３０３で決定した車両の進行方向Ｗを比較することにより、現在位置Ｂが、実際に車両が走行している位置に対して進んでいるか遅れているかを判断し、走行距離係数Ｒを動的に修正するようにしている。
【００６６】
このような走行距離係数Ｒの修正は、例えば、以下に示すようにして行うことができる。
【００６７】
すなわち、短期的に走行距離係数Ｒを補正するための補正係数Ｒｓｈと、長期的に走行距離係数Ｒを補正するための補正係数Ｒａとを導入する。そして、走行距離係数Ｒ＝Ｒ０×（１＋Ｒａ＋Ｒｓｈ）に従って、動的に走行距離係数Ｒを修正する。なお、ここで、Ｒ０は、走行距離係数Ｒの初期値を示している。
【００６８】
そして、ＭＰＵ１１４が、補正係数Ｒｓｈおよび補正係数Ｒａを、後述する第１のＲｓｈ変更処理、第２のＲｓｈ変更処理、および、Ｒａ変更処理の３つの補正係数変更処理を行うことにより、逐次変更する。
【００６９】
なお、ナビゲーションシステムの始動直後には、初期化処理として、各補正係数変更処理で用いる各種変数（Σθ，Σ２０θ，Σφ，Ｄｘ，Ｒｓｈ，Ｒａ，ΣＡ，Ｆ１〜Ｆ１０）やフラグｆを全て「０」に初期化しておく。
【００７０】
まず、補正係数Ｒｓｈを変更する第１のＲｓｈ変更処理について説明する。
【００７１】
図７は第１のＲｓｈ変更処理のフローチャートである。
【００７２】
本処理は、図４のステップ４０９で起動されるＭＰＵ１１４のプログラムルーチンである。すなわち、本処理は、車両が進んだ距離が２０ｍに達する毎に起動される。
【００７３】
図７に示すように、本処理では、まず、フラグｆが「０」であるか否かを判定し（ステップ７０１）、「０」でない場合は、今回の処理を終了する。一方、フラグｆが「０」である場合は、ＲＡＭに保存されている現在位置Ｂおよび進行方向Ｗを読み込み（ステップ７０２）、ＣＤ−ＲＯＭ１０５からドライバ１０６を介して読み込んだ地図データが表す地図に記述されている道路のうちの、現在位置Ｂが位置する道路の道路方向Ｖを求める（ステップ７０３）。
【００７４】
続いて、道路方向Ｖと進行方向Ｗとの間の角度の差である道路・車両方向差θを求め（ステップ７０４）、前回の処理で求めてＲＡＭに保存しておいた道路方向Ｖと今回の処理で求めた道路方向Ｖとの間の角度の差である道路方向差φを求める（ステップ７０５）。ここで、道路方向差φの値の正負は、今回の処理で求めた道路方向Ｖが前回の処理で求めた道路方向Ｖを基準として左側にある場合を正とし、右側にある場合を負とする。また、道路・車両方向差θの値の正負は、例えば、道路方向Ｖを基準として、車両方向Ｗが左側にある場合を正とし、右側にある場合を負とする。
【００７５】
なお、このとき、今回の処理で求めた道路方向Ｖを次回の処理で用いることができるようにするために、ＲＡＭに保存しておく（ステップ７０６）。
【００７６】
続いて、ステップ７０４で求めた道路・車両方向差θの絶対値が３ｄｅｇ未満であるか否かを調べ（ステップ７０７）、３ｄｅｇ以上である場合は、道路・車両方向差θを、ＲＡＭに保存されている道路・車両方向差積算値Σθに加算し（ステップ７１５）、道路・車両方向差θに２０ｍを乗じた値を、ＲＡＭに保存されている走行距離重み付け道路・車両方向差積算値Σ２０θに加算し（ステップ７１６）、ステップ７０５で求めた道路方向差φを、ＲＡＭに保存されている道路方向差積分値Σφに加算してから（ステップ７１７）、今回の処理を終了する。
【００７７】
一方、ステップ７０４で求めた道路・車両方向差θが３ｄｅｇ未満である場合は、ＲＡＭに保存されている道路・車両方向差積算値Σθの絶対値が５ｄｅｇ以上であるか否かを調べ（ステップ７０８）、５ｄｅｇ未満である場合は、Σθ，Σ２０θ，Σφを、全て「０」に初期化してから（ステップ７１４）、今回の処理を終了する。ここで、道路・車両方向差θの絶対値が３ｄｅｇ未満であるということは、３ｄｅｇを超える道路・車両方向差θの２回以上の連続が途絶えたことを意味している。
【００７８】
一方、道路・車両方向差積算値Σθの絶対値が５ｄｅｇ以上である場合は、ステップ７０９〜ステップ７１２で、補正係数Ｒｓｈを変更する。
【００７９】
すなわち、まず、ＲＡＭに保存されている変数ΣＡの値に、補正係数Ｒａと補正係数Ｒｓｈとの和に距離変数Ｄｘを乗じた値を加算し（ステップ７０９）、距離変数Ｄｘを「０」に初期化すると共に、補正係数Ｒｓｈを変数Ｒｓｈｐに保存しておく（ステップ７１０）。ここで、変数ΣＡは、各Ｒａ＋Ｒｓｈの値に、該Ｒａ＋Ｒｓｈの値で走行した距離を重み付けした値となり、この値は、後述する第２のＲｓｈ変更処理およびＲａ変更処理においても変更される場合がある。また、距離変数Ｄｘは、常に、距離変数Ｄｘが「０」に初期化された後に車両が走行した距離を表し、この距離は、やはり車速センサ１０３の出力パルス数に走行距離係数Ｒを乗じて求める。なお、補正係数Ｒａ，補正係数Ｒｓｈ，距離変数Ｄｘは、ＲＡＭに保存されているものである。
【００８０】
続いて、ＲＡＭに保存されている道路方向差積算値Σφから、３ｄｅｇを超える道路・車両方向差θが連続していた間に車両が走行していた道路が右折であったか左折であったかを判定する（ステップ７１１）。この判定は、道路方向差積算値Σφが正である場合は左折であると判定し、負である場合は右折であると判定する。
【００８１】
続いて、ＲＡＭに保存されている走行距離重み付け道路・車両方向差積算値Σ２０θ、および、ステップ７１１で判定した右左折に応じて、補正係数Ｒｓｈを変更する（ステップ７１２）。
【００８２】
ここで、ステップ７１２の変更方法について、具体的に説明する。
【００８３】
図１０は、３ｄｅｇを超える道路・車両方向差θが連続していた間に車両が走行していた道路が左折である場合と右折である場合との各々の場合について、走行距離重み付け道路・車両方向差積分値Σ２０θが正となる場合の道路・車両方向差θと、負となる場合の道路・車両方向差θとを表したものである。
【００８４】
ここで、図１０における状態１は、左折であり、かつ、走行距離重み付け道路・車両方向差積算値Σ２０θが正である場合、すなわち、道路・車両方向差積算値Σθが正である場合を示しており、この場合には、現在位置Ｂは、実際の位置より遅れている。なぜならば、現在位置Ｂが左折すべき位置に達する前に、実際には車両が左折しているからである。
【００８５】
また、状態２は、左折であり、かつ、走行距離重み付け道路・車両方向差積算値Σ２０θが負である場合を示しており、この場合には、現在位置Ｂは、実際の位置より進んでいる。なぜならば、現在位置Ｂが左折すべき位置に達しているのに、実際には車両が左折していないからである。
【００８６】
右折の場合も同様に考えることができ、状態３は、走行距離重み付け道路・車両方向差積算値Σ２０θが負である場合を示しており、この場合には、現在位置Ｂは、実際の位置より遅れている。また、状態４は、走行距離重み付け道路・車両方向差積算値Σ２０θが正である場合を示しており、この場合には、現在位置Ｂは、実際の位置より進んでいる。
【００８７】
そこで、ステップ７１２では、まず、走行距離重み付け道路・車両方向差積算値Σ２０θの正負、および、ステップ７１１で判定した右左折に応じて、図１１に示すように、補正係数Ｒｓｈを修正するための変数Ｔａの正負を決定する。そして、走行距離重み付け道路・車両方向差積算値Σ２０θの絶対値の大きさに応じて、変数Ｔａの絶対値の大きさを決定する。なお、変数Ｔａの絶対値の大きさは、予め用意しておいたテーブルＡに従って決定することができる。テーブルＡは、走行距離重み付け道路・車両方向差積算値Σ２０θの絶対値の大きさと変数Ｔａの絶対値の大きさとを対応付けて記述したテーブルである。
【００８８】
続いて、このようにして求めた変数Ｔａの絶対値の大きさと変数Ｔａの正負とから、変数Ｔａの値を決定し、ステップ７１０でＲＡＭに保存しておいた変数Ｒｓｈｐ（前回の処理で変更された補正係数Ｒｓｈを示す。）に、決定した変数Ｔａの値を加算することにより、補正係数Ｒｓｈを変更し、ＲＡＭに保存しておく。
【００８９】
さて、図７に戻って、補正係数Ｒｓｈを変更したならば、フラグｆを「１」に設定する（ステップ７１３）。
【００９０】
最後に、Σθ，Σ２０θ，Σφを全て「０」に初期化してから（ステップ７１４）、処理を終了する。
【００９１】
次に、補正係数Ｒｓｈを変更する第２のＲｓｈ変更処理について説明する。
【００９２】
図８は第２のＲｓｈ変更処理のフローチャートである。
【００９３】
本処理は、図４のステップ４１０で起動されるＭＰＵ１１４のプログラムルーチンである。すなわち、本処理は、車両が進んだ距離が２０ｍに達する毎に起動される。
【００９４】
図８に示すように、本処理では、まず、ＲＡＭに保存されている距離変数Ｄｘが３００ｍに達しているか否かを判定し（ステップ８０１）、３００ｍに達していない場合は、今回の処理を終了する。距離変数Ｄｘは、図７のステップ７１０で「０」に初期化された後、車両が３００ｍ以上走行した場合に、３００ｍに達することになる。
【００９５】
一方、距離変数Ｄｘが３００ｍを超えている場合は、ＲＡＭに保存されている変数ΣＡの値に、補正係数Ｒａと補正係数Ｒｓｈとの和に距離変数Ｄｘを乗じた値を加算し（ステップ８０２）、補正係数Ｒｓｈを、予め用意したテーブルＢを用いて変更する（ステップ８０３）。
【００９６】
すなわち、ステップ８０３では、まず、変数Ｔｂの絶対値を、テーブルＢを参照することによって決定し、変数Ｔａの正負と変数Ｔｂの正負とが一致するように、変数Ｔｂの正負を決定する。テーブルＢは、変数Ｔａの絶対値と変数Ｔｂの絶対値とを対応付けて記述したテーブルである。この対応は、変数Ｔａの絶対値の大きさが所定の割合で小さくなった値が変数Ｔｂの絶対値となるように定めている。具体的には、変数Ｔａは、対応する変数Ｔｂより１桁程度大きい値とする。
【００９７】
そして、図７のステップ７１０でＲＡＭに保存しておいた変数Ｒｓｈｐ（図７のステップ７１２で変更される前の補正係数Ｒｓｈを表す。）に、決定した変数Ｔｂの値を加算することにより、Ｒｓｈを変更する。
【００９８】
最後に、フラグｆおよび距離変数Ｄｘを「０」に初期化してから（ステップ８０４）、今回の処理を終了する。
【００９９】
次に、補正係数Ｒａを変更するＲａ変更処理について説明する。
【０１００】
図９はＲａ変更処理のフローチャートである。
【０１０１】
本処理は、図４のステップ４１３で起動されるＭＰＵ１１４のプログラムルーチンである、すなわち、本処理は、車両が進んだ距離が１０ｋｍに達する毎に起動される。
【０１０２】
図９に示すように、本処理では、まず、ＲＡＭに保存されている変数ΣＡの値に、補正係数Ｒａと補正係数Ｒｓｈとの和に距離変数Ｄｘを乗じた値を加算する（ステップ９０１）。
【０１０３】
続いて、ＲＡＭに保存されている９つの変数Ｆ１〜Ｆ９を、１つずつずらして、変数Ｆ２〜Ｆ１０とし（ステップ９０２）、変数Ｆ１に、以下の式に従って求めた値を設定する（ステップ９０３）。
【０１０４】
Ｆ１＝｛（ΣＡ＋１０ｋｍ）／１０ｋｍ｝−１
続いて、変数Ｆ１〜Ｆ１０の値の平均をとり、この平均値を、以降の補正係数Ｒａとする（ステップ９０４）。
【０１０５】
最後に、ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ，Ｄｘを「０」に初期化すると共に、フラグｆを「０」に初期化してから（ステップ９０５）、今回の処理を終了する。
【０１０６】
以上、補正係数Ｒｓｈおよび補正係数Ｒａを変更する処理の内容について説明した。以下では、実際の車両の走行において、これらの処理によって、どのように補正係数Ｒｓｈおよび補正係数Ｒａが変更されていくかについて、図１２に示す道路を車両が走行している場合を例にして説明する。
【０１０７】
いま、図１２において、ａ地点に車両が存在するときに、図９に示したＲａ変更処理が実行されて、補正係数Ｒａが変更され、各変数ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ，Ｄｘ、および、フラグｆが「０」に初期化されたものとする。そして、ａ地点からｂ地点までの間は、車両が進んだ距離が２０ｍに達する毎に、図７に示した第１のＲｓｈ変更処理が実行されるが、このとき、ステップ７０４で求めた道路・車両方向差θが３ｄｅｇ未満であるとする。
【０１０８】
この場合、ａ地点からｂ地点までの間は、ステップ７０７で、道路・車両方向差θが３ｄｅｇ未満であると判定され、ステップ７０８で、道路・車両方向差積算値Σθが５ｄｅｇ未満であると判定されるので、各変数ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ、および、フラグｆは、ステップ７１４で、再度、「０」に初期化される。一方、距離変数Ｄｘは、この間も増加している。
【０１０９】
次に、ｂ地点から２０ｍ離れたｃ地点に車両が達すると、図７に示した第１のＲｓｈ変更処理が実行されるが、このとき、ステップ７０４で求めた道路・車両方向差θが４ｄｅｇであるとし、ｃ地点から２０ｍ離れたｄ地点に車両が達すると、図７に示した第１のＲｓｈ変更処理が実行されるが、このとき、ステップ７０４で求めた道路・車両方向差θが３ｄｅｇ未満であるとする。
【０１１０】
この場合、ｃ地点で実行される第１のＲｓｈ変更処理においては、ステップ７０７で、道路・車両方向差θが３ｄｅｇ以上であると判定され、ステップ７１５〜ステップ７１７で、各変数Σ２０θ，Σφ，Σθが更新される。しかし、その後、ｄ地点で実行される第１のＲｓｈ変更処理において、ステップ７０７で、道路・車両方向差θが３ｄｅｇ未満であると判定され、ステップ７０８で、道路・車両方向差積算値Σθが５ｄｅｇ未満であると判定されるので、各変数ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ、および、フラグｆは、ステップ７１４で、再度、「０」に初期化される。
【０１１１】
このように、図７に示した第１のＲｓｈ変更処理においては、道路・車両方向差θが３ｄｅｇ未満であり、かつ、道路・車両方向差積算値Σθが５ｄｅｇ未満である場合には、単に、各変数ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ、および、フラグｆを「０」に初期化するだけである。これは、３ｄｅｇ未満の道路・車両方向差θや、連続せずに１回だけ３ｄｅｇ以上５ｄｅｇ未満となった道路・車両方向差θは、走行距離係数Ｒの誤り以外の要因による誤差である可能性があると考え、このような道路・車両方向差θが、補正係数Ｒｓｈおよび補正係数Ｒａを変更する際に無視されるようにするためである。
【０１１２】
次に、ｄ地点からｅ地点までの間に、車両が進んだ距離が２０ｍに達する毎に、図７に示した第１のＲｓｈ変更処理が実行されるが、このとき、ステップ７０４で求めた道路・車両方向差θが、２回以上連続して３ｄｅｇ以上になったものとする。
【０１１３】
この場合、ｄ地点からｅ地点までの間は、ステップ７１５〜ステップ７１７で、各変数Σ２０θ，Σφ，Σθが更新される。従って、ｅ地点では、Σφは、ｄ地点からｅ地点までの間の道路方向差φの積算値を表し、Σθは、ｄ地点からｅ地点までの間の道路・車両方向差θの積算値を表し、Σ２０θは、ｄ地点からｅ地点までの間の道路・車両方向差θに２０ｍを重み付けした値の積算値を表していることになる。
【０１１４】
次に、ｅ地点から２０ｍ離れたｆ地点に車両が達すると、図７に示した第１のＲｓｈ変更処理が実行されるが、このとき、ステップ７０４で求めた道路・車両方向差θが３ｄｅｇ未満であるとする。
【０１１５】
この場合、ステップ７０７で、道路・車両方向差θが３ｄｅｇ未満であると判定され、ステップ７０８で、道路・車両方向差積算値Σθが５ｄｅｇ以上であると判定されるので、ステップ７０９〜７１２で、上述したように、補正係数Ｒｓｈが変更される。
【０１１６】
また、ステップ７０９で、ΣＡ（この時点では「０」）の値に、距離変数Ｄｘ（距離変数Ｄｘが「０」に初期化されたａ地点からｆ地点までの距離を表す。）を乗じた値が加算され、ステップ７１０で、距離変数Ｄｘが「０」に初期化される。このΣＡは、後に、図９に示したＲａ変更処理で補正係数Ｒａを変更するために用いられる。
【０１１７】
また、ステップ７１３で、フラグｆが「１」に設定され、ステップ７１４で、補正係数Ｒｓｈを変更するために求めておいた各変数Σ２０θ，Σθ，Σφが「０」に初期化される。
【０１１８】
この結果、この後車両が３００ｍ走行したｇ時点で、図８に示した第２のＲｓｈ変更処理が実行されて、フラグｆが「０」に解除されるまでは、図７に示した第１のＲｓｈ変更処理は、ステップ７０１で、実質的にスキップされることになる。
【０１１９】
次に、ｆ地点（距離変数Ｄｘが「０」に初期化された地点）から３００ｍ離れたｇ地点に車両が達すると、図８に示した第２のＲｓｈ変更処理が実行されるので、ステップ８０１で、距離変数Ｄｘが３００ｍ以上であると判定される。そして、ステップ８０２で、ΣＡに、ｆ地点で補正係数Ｒｓｈが変更されてから現在まで用いられていた補正係数Ｒａと補正係数Ｒｓｈとの和に距離変数Ｄｘを乗じた値が加算され、ステップ８０３で、上述したように、補正係数Ｒｓｈが変更される。
【０１２０】
この結果、ｆ地点からｇ地点までの間の３００ｍの区間は、ｆ地点で変更された補正係数Ｒｓｈを用いて走行距離係数Ｒが求められ、ｇ地点以降は、ｇ地点で変更された補正係数Ｒｓｈより小さな値が、補正係数Ｒｓｈとして用いられて、走行距離係数Ｒが求められることになる。
【０１２１】
これにより、始めの３００ｍの区間は、補正係数Ｒｓｈを適当と思われる値より大きくすることにより、走行距離係数Ｒを正しいと思われる値より意図的に大きくして、ｃ地点からｄ地点までの間に蓄積された現在位置Ｂのズレを、この３００ｍの区間を車両が進む間に少しずつ修正し、その後に、補正係数Ｒｓｈを小さくして、走行距離係数Ｒを正しいと思われる値に設定し直すことができる。
【０１２２】
３００ｍの区間をかけて現在位置Ｂのズレを少しずつ修正するのは、現在位置Ｂを表すマーク２０がジャンプして表示されることなく、スムーズに移動されるようにするためである。また、この３００ｍの区間で、図８に示した第２のＲｓｈ変更処理が実質的に実行されなくするのは、正しいと思われる値より意図的に大きくした走行距離係数Ｒで走行している間は、図８に示した第２のＲｓｈ変更処理は、適当な補正係数Ｒｓｈを変更するよう動作しないからである。
【０１２３】
この後、ｇ地点で実行される第２のＲｓｈ変更処理において、ステップ８０４で、フラグｆおよび距離変数Ｄｘが「０」に初期化される。フラグｆが「０」に初期化されることにより、図７に示した第１のＲｓｈ変更処理は、再度、ａ地点からの処理と同様に、道路・車両方向差θに従って動作できるようになる。
【０１２４】
さて、さらに、ａ地点から１０ｋｍ離れたｈ地点に車両が達すると、図９に示したＲａ変更処理が実行される。
【０１２５】
Ｒａ変更処理においては、まず、ステップ９０１で、ΣＡに、現在まで用いられていた補正変数Ｒａと補正係数Ｒｓｈの和に距離変数Ｄｘ（ステップ７のステップ７０９または図８のステップ８０２で最後にΣＡを変更してからの距離を表す。）を乗じた値が加算される。この結果、ΣＡは、ａ地点からｆ地点までの１０ｋｍの区間で用いられた各（Ｒａ＋Ｒｓｈ）に、該（Ｒａ＋Ｒｓｈ）が有効であった走行距離を重み付けした値の積算値となる。
【０１２６】
そして、ステップ９０２で、９つの変数Ｆ１〜Ｆ９（初期値として、全て「０」が設定されている。）が、１つずつずらされて、変数Ｆ２〜Ｆ１０とされ、ステップ９０３で、｛（ΣＡ＋１０ｋｍ）／１０ｋｍ｝−１がＦ１の値として設定される。ここで、｛（ΣＡ＋１０ｋｍ）／１０ｋｍ｝−１は、ａ地点からｈ地点までの間で求められた走行距離Ｌの積算値ΣＬ３（≦１０ｋｍ）中に含まれる、補正係数Ｒａおよび補正係数Ｒｓｈの影響によって補正された走行距離Ｌの割合に、近似的に比例した値となる。従って、Ｆ１０〜Ｆ１の平均値は、過去１００ｋｍ中に含まれる、補正係数Ｒａおよび補正係数Ｒｓｈの影響によって補正された走行距離Ｌの割合に、近似的に比例した値となる。
【０１２７】
そこで、ステップ９０４では、この平均値が、新たな補正係数Ｒａとして変更される。なお、この平均値に適当な定数を乗じた値が、新たな補正係数Ｒａとして変更されるようにしてもよい。そして、ステップ９０５で、各変数ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ，Ｄｘ、および、フラグｆが「０」に初期化される。
【０１２８】
ｈ地点以降は、ａ地点からの処理と同様な処理が繰返されることになる。
【０１２９】
なお、上述したように、変数Ｔａは、対応する変数Ｔｂより１桁程度大きい値としているので、図７のステップ７１２で求められる変数Ｔａは、それまでの補正係数Ｒｓｈに比べて、１桁程度大きい値となる。従って、ステップ７１２では、変数Ｔａ自体を新たな補正係数Ｒｓｈとして処理するようにしてもよい。
【０１３０】
以上、説明してきたように、道路方向Ｖと進行方向Ｗとの間の角度の差である道路・車両方向差θから、走行距離Ｌを求めるために用いる走行距離係数Ｒの誤差を見積り、これを補正する。従って、車両の走行状態に関わらず、走行距離係数Ｒを適切な値に補正を行うことができると共に、交差点等の特徴が少ない道路を車両が走行した場合でも補正を行うことができるようになる。
【０１３１】
このように、本実施例では、常に、適切な値に走行距離係数Ｒを補正することができるので、より良い精度で走行距離Ｌを求めることができ、より良い精度で車両の現在位置Ａを求めることが可能となる。
【０１３２】
さらに、本実施例では、ユーザがスイッチ１１７を押下して、ディスプレイ１０７におけるマーク２０の表示位置（車両の現在位置Ｂ）を修正する指示を入力したときに、走行距離係数Ｒを初期値Ｒ０に初期化することができるようにしている。
【０１３３】
例えば、車両のタイヤが交換されるなどの何らかの要因によって、走行距離係数Ｒの補正結果に誤りが生じると、求める走行距離Ｌの誤差が大きくなってしまい、従って、ディスプレイ１０７にマーク２０として表示される現在位置Ｂの精度が低下してしまうが、本実施例では、これに対処する方法として、走行距離係数Ｒを一旦初期値Ｒ０に初期化することにより、走行距離係数Ｒの補正をし直すことができるようにしている。
【０１３４】
以下、走行距離Ｒを初期化するＲ初期化処理について説明する。
【０１３５】
走行距離係数Ｒは、上述したように、Ｒ＝Ｒ０×（１＋Ｒｓｈ＋Ｒａ）に従って求められている。そこで、走行距離係数Ｒを初期値Ｒ０に初期化するためには、補正係数Ｒｓｈおよび補正係数Ｒａを「０」に初期化すればよい。
【０１３６】
図１３はＲ初期化処理のフローチャートである。
【０１３７】
本処理は、図３のステップ３０８で起動されるＭＰＵ１１４のプログラムルーチンである。すなわち、本処理は、車両が進んだ距離が２ｍに達する毎に起動される。
【０１３８】
なお、ナビゲーションシステムの始動直後には、初期化処理として、本処理で用いられる各種変数（ΣＬ４，ｃｎｔ）を全て「０」に初期化しておく。
【０１３９】
図１３に示すように、本処理では、まず、ＲＡＭに保存されている走行距離Ｌの積算値ΣＬ４に、２ｍを加算する（ステップ１３０１）。
【０１４０】
続いて、スイッチ１１７が押下されたか否かを判定し（ステップ１３０２）、押下されていない場合は、今回の処理を終了する。一方、スイッチ１１７が押下されている場合は、積算値ΣＬ４が３ｋｍに達しているか否かを判定する（ステップ１３０３）。
【０１４１】
なお、スイッチ１１７が押下されているということは、ユーザが、現在位置Ｂの修正後の位置を指定していることを意味しているので、このとき、指定された位置に基づいて、現在位置Ｂおよびマーク２０を修正する。
【０１４２】
積算値ΣＬ４が３ｋｍに達している場合は、積算値ΣＬ４およびカウンタｃｎｔを「０」に初期化してから（ステップ１３０７）、今回の処理を終了する。
【０１４３】
一方、積算値ΣＬ４が３ｋｍに達していない場合は、ＲＡＭに保存されているカウンタｃｎｔのカウント値に「１」を加算し（ステップ１３０４）、加算した結果のカウント値が「５」に達しているか否かを判定する（ステップ１３０５）。カウンタｃｎｔのカウント値が「５」に達していない場合は、今回の処理を終了する。
【０１４４】
一方、カウンタｃｎｔのカウント値が「５」に達している場合は、補正係数Ｒｓｈおよび補正係数Ｒａを「０」に初期化する（ステップ１３０６）。このとき、さらに、上述した第１のＲｓｈ変更処理，第２のＲｓｈ変更処理，Ｒａ変更処理で用いられる、各変数ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ，Ｄｘ、および、フラグｆも「０」に初期化して、図１２に示したａ地点に車両が存在する状態になるようにする。
【０１４５】
最後に、積算値ΣＬ４およびカウンタｃｎｔを「０」に初期化してから（ステップ１３０７）、今回の処理を終了する。
【０１４６】
なお、図１３に示した例では、走行距離Ｌの積算値ΣＬ４が３ｋｍに達する前に、スイッチ１１７が押下された回数が５回に達した場合に、補正係数Ｒｓｈおよび補正係数Ｒａを「０」に初期化することにより、走行距離係数Ｒを初期値Ｒ０に初期化しているが、スイッチ１１７が押下される毎に、走行距離係数Ｒを初期値Ｒ０に初期化するようにしてもよい。
【０１４７】
また、本実施例では、ユーザがスイッチ１１７を押下することで、走行距離係数Ｒを初期値Ｒ０に初期化することができるようにしているが、図１４に示すように、ＧＰＳ衛星から発信された信号を用いて車両の現在位置を測定するＧＰＳ受信装置１１８を設け、ＧＰＳ受信装置１１８が測定した現在位置と図４のステップ４０８で修正した現在位置Ｂとの差に応じて、走行距離係数Ｒを初期値Ｒ０に初期化するようにしてもよい。
【０１４８】
このようにする場合は、Ｒ初期化処理は、図１５に示すようになる。
【０１４９】
なお、ナビゲーションシステムの始動直後には、初期化処理として、本処理で用いられる各種変数（ΣＬ４，ｃｎｔ）を全て「０」に初期化しておく。
【０１５０】
図１５に示すように、本処理では、まず、ＲＡＭに保存されている走行距離Ｌの積算値ΣＬ４に、２ｍを加算する（ステップ１５０１）。
【０１５１】
続いて、ＧＰＳ受信装置１１８が測定した現在位置ＣおよびＲＡＭに保存されている現在位置Ｂを読み込み（ステップ１５０２）、読み込んだ現在位置Ｃと現在位置Ｂとの差δを求める（ステップ１５０３）。
【０１５２】
続いて、求めた差δがしきい値Ｓ以上であるか否かを調べ（ステップ１５０４）、しきい値Ｓ未満である場合は、今回の処理を終了する。
【０１５３】
一方、求めた差δがしきい値Ｓ以上である場合は、積算値ΣＬ４が３ｋｍに達しているか否かを判定し（ステップ１５０５）、達している場合は、積算値ΣＬ４およびカウンタｃｎｔを「０」に初期化してから（ステップ１５０９）、今回の処理を終了する。
【０１５４】
なお、求めた差δがしきい値Ｓ以上であるということは、現在位置Ｂと現在位置Ｃとの誤差が大きいことを意味しているので、このとき、現在位置Ｂを現在位置Ｃに修正すると共に、マーク２０も修正する。
【０１５５】
一方、積算値ΣＬ４が３ｋｍに達していない場合は、ＲＡＭに保存されているカウンタｃｎｔのカウント値に「１」を加算し（ステップ１５０６）、加算した結果のカウント値が「５」に達しているか否かを判定する（ステップ１５０７）。カウンタｃｎｔのカウント値が「５」に達していない場合は、今回の処理を終了する。
【０１５６】
一方、カウンタｃｎｔのカウント値が「５」に達している場合は、補正係数Ｒｓｈおよび補正係数Ｒａを「０」に初期化する（ステップ１５０８）。このとき、さらに、上述した第１のＲｓｈ変更処理，第２のＲｓｈ変更処理，Ｒａ変更処理で用いられる、各変数ΣＡ，Σ２０θ，Σφ，Ｒｓｈ，Σθ，Ｄｘ、および、フラグｆも「０」に初期化して、図１２に示したａ地点に車両が存在する状態になるようにする。
【０１５７】
最後に、積算値ΣＬ４およびカウンタｃｎｔを「０」に初期化してから（ステップ１５０９）、今回の処理を終了する。
【０１５８】
なお、図１５に示した例では、走行距離Ｌの積算値ΣＬ４が３ｋｍに達する前に、現在位置Ｃと現在位置Ｂとの差δがしきい値Ｓ以上となった回数が５回に達した場合に、補正係数Ｒｓｈおよび補正係数Ｒａを「０」に初期化することにより、走行距離係数Ｒを初期値Ｒ０に初期化しているが、現在位置Ｃと現在位置Ｂとの差δがしきい値Ｓ以上となる毎に、走行距離係数Ｒを初期値Ｒ０に初期化するようにしてもよい。
【０１５９】
【発明の効果】
以上説明したように、本発明によれば、車両の走行の伴って補正されている、走行距離を求めるために用いられる走行距離係数を、初期値に戻すことが可能な現在位置算出装置を提供することができる。
【図面の簡単な説明】
【図１】本実施例の現在位置算出装置を適用したナビゲーションシステムの構成を示すブロック図。
【図２】ディスプレイの表示例を示す説明図。
【図３】本実施例における進行方向・走行距離算出処理のフローチャート。
【図４】本実施例における現在位置算出処理のフローチャート。
【図５】本実施例における表示処理のフローチャート。
【図６】道路の表現形式を示す説明図。
【図７】本実施例における第１のＲｓｈ補正処理のフローチャート。
【図８】本実施例における第２のＲｓｈ補正処理のフローチャート。
【図９】本実施例におけるＲａ補正処理のフローチャート。
【図１０】本実施例において判定する道路車両方位差を示す説明図。
【図１１】本実施例において算出する変数Ｔａの正負の決定の仕方を示す説明図。
【図１２】補正係数を変更する処理の説明に用いる道路を表す説明図。
【図１３】本実施例におけるＲ初期化処理のフローチャート。
【図１４】本実施例の現在位置算出装置を適用したナビゲーションシステムの別の構成を示すブロック図。
【図１５】本実施例におけるＲ初期化処理の別のフローチャート。
【符号の説明】
１０１…角速度センサ、１０２…方位センサ、１０３…車速センサ、１０４…スイッチ、１０５…ＣＤ−ＲＯＭ、１０６…ドライバ、１０７…ディスプレイ、１０８…コントローラ、１０９，１１０…Ａ／Ｄ変換器、１１１…パラレルＩ／Ｏ、１１２…ＤＭＡコントローラ、１１３…表示プロセッサ、１１４…マイクロプロセッサ、１１５…メモリ、１１６…カウンタ。
【図１】
0003679456.tif 000002
【図２】
0003679456.tif 000003
【図３】
0003679456.tif 000004
【図４】
0003679456.tif 000005
【図５】
0003679456.tif 000006
【図６】
0003679456.tif 000007
【図７】
0003679456.tif 000008
【図８】
0003679456.tif 000009
【図９】
0003679456.tif 000010
【図１０】
0003679456.tif 000011
【図１１】
0003679456.tif 000012
【図１２】
0003679456.tif 000013
【図１３】
0003679456.tif 000014
【図１４】
0003679456.tif 000015
【図１５】
0003679456.tif 000016