カーナビで発生するGPSロールオーバーに対する取り組み方にメーカによる違いがありましたので紹介したいと思います。
技術者としては先々まで使うことを考慮したシステム設計を心掛けたいものです。
SONYのDVDナビを使っていますが地図データが古い
今乗っている車は購入時にカーナビのオプションをつけませんでした。
理由はそれまで使っていたSONYのDVDナビをそのまま使うことにしたからです。
NVX-DV705という型番の物で、車を購入後に自分で配線して取り付けました。
モニターをダッシュボードの上に取り付ける「オンダッシュ」タイプと呼ばれているものです。
「オンダッシュ」タイプは見た目は悪いもののコンソールに埋め込まれているタイプ(インダッシュ)よりも地図を見る際に視線を動かす量が少ないので安全かつ見やすいこともあって使い続けることにしました。
本音はお金を掛けたくなかっただけです。
メーカーオプションにしろディーラーオプションにしろ新品を導入するとなると10万円ぐらいかかりました。
NVX-DV705はヤフオクで1万円程度で手に入れた物でした。
2000年頃製造の古いもので地図データも2004年でしたので新しい道路は載っていませんでしたが自分がどこにいるのかわかれば十分でした。
その後、同じSONYのDVDナビのNVX-Gシリーズで一部のトヨタ製カーナビ用地図DVD(型番1*のもの:*はアルファベット)が使えるという情報を見つけました。
トヨタのカーナビは利用者が多く年に2回地図更新しているので2~3年前の地図DVDであれば安価に入手できます。
そこでNVX-G6500という機種とトヨタの地図DVDをヤフオクで手に入れて使ってきました。
NVX-DV705は松下電器のOEM、NVX-G6500はデンソーのOEM製品で互換性がほとんどないのですがモニターだけは共通でした。
残念ながらNVX-G6500で使える地図DVDの更新は2015年秋版が最終でそれ以降の更新はありません。
トヨタのDVDナビの一部は今も地図更新がある
このままNVX-G6500を使い続けるつもりでいたのですが、たまたまトヨタの別の型番(2*シリーズ)は今も更新が続いていることを知りました。
トヨタ車を使っている人は多く、対応しているDVDナビを搭載していた車は廃車になっているものが多いので中古のDVDナビは安く多数出回っています。
そこで試しに中古品を買ってみました。
トヨタのDVDナビを入手するもGPSロールオーバー非対応だった
買ったのはNDDN-W58という機種で松下電器製のDVDナビとしては最終機種です。
(後継機はSDカードを使ったSDナビになりました)
メルカリで送料込み1,000円程で購入しました。
これを選んだ理由はワンセグTVチューナー搭載だからです。
これ以前の機種はアナログTVチューナーなのでTVを見ることができません。
この機種は公式には2016年が最終で現在は地図データの更新が無いことになっています。
しかし、最新の地図DVDで動作するという情報がありましたので試してみました。
地図データとして公式には対応外の2019年春版を用意しました。
(メルカリで3,200円でした)
車に取り付てから何かあっては大変なので12Vの電源を用意して家の中で試しに動かしてみました。
2019年春版の地図DVDを入れても「正しいディスクを入れてください」と表示され動作しませんでした。
ナビに付属していた2009年版を入れて起動すると「プログラム読み込み中」の表示になり動作しました。
起動後に2019年春版の地図DVDに入れ替えたところ無事に読み込んで動作し、近隣の新しい道路が表示されましたので一安心しました。
GPSも捕捉できワンセグTVも見れて正常動作したのでこれは使えると思ったのですが、一つだけ厄介なことに気づきました。
それはGPSロールオーバーに対応していなかったことです。
GPSロールオーバーについては検索すると出てくるので詳細はそちらを参照してください。
簡単に言うとGPS衛星から送信されている日付時刻情報が 週の値と秒数の値の二つになっていて、週の値が10ビットで表現されているので、1980年1月6日を起点に 1024週(19.6年)ごとに同じ値になってしまうというものです。
1回目のロールオーバーは1999年8月22日に発生し、2回目は2019年4月7日に発生しています。
日付が狂っているだけならそのまま使えばよいと思ったのですが調べたところ、問題があることがわかりました。
日付が正しくないとVICS情報との整合が取れなくなり、ナビによる道案内を使ったときに目的地までの所要時間の計算ができないのだそうです。
GPSロールオーバーに気づかなかった理由
今使っているNVX-G6500+トヨタ地図DVDでは朝、エンジンをかけてナビが起動したときにその日の日付と曜日を音声で知らせてくれます。
2019年4月7日のロールオーバーを越えても問題なく正しい日付と曜日を言っていたので全く気が付きませんでした。
NDDN-W58にはカレンダー機能があり、日付を表示させたところ、2002年の7月18日(試したのは2022年4月23日)と表示されました。
おかしいと思い調べてGPSロールオーバーであることを知りました。
このナビにはメンテナンスモードに入ると日付や時刻を修正する機能がありました。
手動入力すれば何とかなるのではないかと試してみましたが、GPSの信号を受信すると自動的に2002年7月18日に戻ってしまいました。
全く意味のない機能です。
GPSロールオーバー対応は設計者の考え方次第
SONYのNVX-G6500は2004年製造(発売は2003年 5月)の古いものです。
GPSロールオーバーを経験していた人達が2019年4月7日のロールオーバーを見越して作っていたのでしょう。
16年後に起きることを考慮して設計したデンソーの設計者たちに賞賛の拍手を送りたいと思います。
どのような手法を取っているかわからないので来年あたりに同様の現象が発生する可能性はあります。
可能性は低いと思いますが後述のハードウエアを含めた設計をしていればこのままGPSロールオーバーは発生しないと思います。
一方、NDDN-W58は2008年5月に発売されました。
設計に携わった人たちはGPSロールオーバーを経験していなかったのか、11年後には使っている人がいないと考えたのかわかりませんが対処していなかったようです。
その割にはカレンダー機能はGPSロールオーバー翌年の2020年どころか2026年まで対応していました。
2026年は2019年4月7日のロールオーバーの7年後で後述の1024週を加算する処理を意識していたものの実際のソフトウエアに実装し忘れたのではないかと思えてきます。
GPSロールオーバーへの技術的な対処法は複数ある
GPSロールオーバーのような現象への対処法はいくつかあります。
いずれもソフトウエアに仕掛けが必要です。
最も良いやり方はハードウエアとソフトウエアを組み合わせたやり方です。
EEPROMという電源を切っても情報を記録できる素子を使います。
起算日と装置発売日の週情報をEEPROMに記録して起動時に読み込むようにしておきます。
起動するたびに週情報が装置発売日よりも前かどうかでGPSロールオーバーが発生したかどうかを確認し、発生した場合は起算日を更新してEEPROMに記録しておくようにすれば電源を切っても常に正しい日付が得られます。
(ロールオーバー回数を記録して演算するというやり方もあります)
これならば少なくとも数年に1回電源を入れていれば何十年たっても19.6年周期でおかしくなることはありません。
ソフトウエアだけでの対応方法としては発売した日付より前の週の週情報であった場合は初期値に1024週を足すという方法があります。
この場合は19.6年間は正しい値が得られます。
しかし、それを超えるとロールオーバーが発生します。
(NVX-G6500がこの方式なら2023年にロールオーバーする可能性があります)
マニュアルで補正値を入力するという方法もあります。
実際の日付をマニュアルで入力し、そこから週数を計算して起点の日付を修正するというやり方です。
(起点の日付を直接入力するという方法もあり得ますが、使う側からするとその日の日付を入力して計算してもらう方がわかりやすいですね)
カーナビはエンジンを切っても位置情報などのデータをバッテリーの電気で保存(バックアップ)していますのでそこに起点の日付情報を入れて置けばバッテリーを外さない限りは正しい日付が得られます。
(バックアップデータの保存にはC-MOSメモリという少ない電力で情報を保持できるメモリをつかっています)
バッテリー交換等でリセットされたら再度同じ操作で補正すれば良いわけです。
販売した後製品をハードウエアで対応するのは難しいと思いますがソフトウエアでとりあえずの対応をすることは簡単です。
日付の演算をする際の初期値を1999年8月22日から2019年4月7日に変えれば良いだけです。
NDDN-W58はバックアップ電源を外して電源が完全に切れた状態から起動するとプログラムディスクを読み込みます。
日付の修正を行ったプログラムディスクを配布すれば対応できるはずなのですが販売しているトヨタ自動車は「ロールオーバーには対応していない」とアナウンスするだけで何もする気配がありません。
メーカーの松下電器(現パナソニック)が対応を拒否しているからかもしれません。
メーカーによる考え方の違いが表れているか?
10年以上前に生産された車用の部品でも供給している自動車部品メーカーと10年も持たない製品を製造している家電メーカーの考え方の違いが表れていると見ることもできます。
技術者としてはデンソーの技術者のように先々に起こることも考慮した設計を心掛けたいものです。
この先NDDN-W58を使うかどうかは検討中です。
道案内の所要時間が必要であればスマホのYahoo!カーナビやGoole Mapの経路案内で渋滞を考慮した時間が表示できるので日付情報は無視してもいいのですがなんとなく引っかかています。
今使っているNVX-G6500が壊れた時に使うことにするかもしれません。
スマホのアプリで十分ではないかという意見もあります。
しかし、カーナビは地図データを持っており、ジャイロと車速センサーとマップマッチング機能で電波が届かなくてもナビゲーション可能なことと表示が見やすく操作しやすいという利点があるのでこの先も何かしら使い続けるつもりです。