どうも、Nanasです。
執筆している日は比較的忙しいのですが、久々に知的好奇心を刺激された出来事があったので筆をすべらせております。
目次
カーナビの日付が狂った!?
7月某日、いつものように車のエンジンをかけると
「ポン♪(T社のいつもの音)、今日は12月〇〇日….△△の日です」
は、何つった今12月????
まあ気のせいだろ
数日後、
「ポン♪(T社n)、今日は12月□□日….xxの日です」
あ、ついに時計が狂いやがった、まあこの車(カーナビ)17年前だししゃーないか
しばらくほかってたが、ある日ちょっと真剣に考えてみると
そういや時刻合ってるじゃん。経年劣化じゃない絶対なんか理由あるだろ と気づく
念の為カーナビの現在の日付、時刻を確認してみると

2006年!?この車2009年ですけど!?!??
おや? …あーーーーーーーーーーー
お前、オーバーフローしてね?
GPS時刻の「週数ロールオーバー」という概念

…やっぱり、2000年問題みたいなのあったんだな。
「GPS週数ロールオーバー」というらしい
技術的な詳しい話は専門家におまかせするとして、GPSの時刻情報は
「時刻そのもの」ではなく「基準日からの週数+秒数」によって成り立っているんです
まあ比較的古から使われているシステムですし情報量にも限りがあったので効率化を考えて致し方ない仕組みというのは納得したんだが、この「基準日からの週数」というのが曲者で
なんと 「たった10bitで管理していて1023までしかない」とかいう仕様なのです
1024週間ってだいたい20年だぞ流石にもう少し使う想定しとけよ。世紀末に西暦下2桁のシステム作ったやつか?????
先程の写真、2006年12月18日となっていますが、本来は2026年8月3日
よくある日数とかを調べれるツールで調べてみると

ファーーーーwwwwwwwwwwwwwピッタシじゃねえかよwwwwww
原因は確定しました
「ナビはメーターの時計と違ってGPSで時刻を拾ってるから狂わないんだよ」
小さい頃 親に教えてもらってから信じて疑わなかったこの常識
腕時計だって電波に加えてGPSがあるくらいだから圧倒的な信頼性があるはず
まさかその常識が崩れるとは…
問題は解決したが、色々面白かった
結局カーナビの方は当初手動で時刻を合わせる項目がなくGPSから拾うしかなく、治すには地図データを新しくするしかないということで一旦泣き寝入りという感じかと思っていました
しかし、整備用の隠しコマンド(こういうの大好きなんですよね)をつかってなんとか事なきを得ました

ちなみにこのコマンド
- 現在地を表示させる
- 情報ボタンを10秒長押しするとピッと音がなる
- そのまま車幅灯の点灯消灯を素早く繰り返す
とかいうなんとも純正ナビらしい隠しコマンドで面白かったです。
GPSロールオーバーの原因とも言える週数が10bitしか割り当てられていない問題も、1980年稼働開始のシステムなので薄々感づいては居たがやはり当時の涙ぐましい努力と効率化によるものでした。
そもそもGPSって「測位」システムだからね、時刻同期はあくまでオマケというかほんへではないので。


詳しいことを理解しているわけではないが、以下の記事類を読んでいるとたった50Bps(MとかKとかSI接頭語つかないよ、バイトだよ)という情報量で測位を成し遂げたというのがいかに素晴らしいかというのがわかる。
6秒間隔で送信される1.5秒刻みの時刻情報は2進数にすると常に末尾2桁が00だから2bit切り捨てれるとかなに考えたら思いつくんだよ。
さっきは後先考えろよとか言って済まなかった、GPSを作ってくれてありがt….ん?
「正直、後のことはあまり考えてなかった笑」←おい!!!wwwwww
ということで以上、GPS週数ロールオーバーのお話でした。
みんなの日常にもこういうトリビア的なものを知るきっかけが訪れますように
ではまた次回!!!

コメント