困っていること
GPSを使ってPCの時刻を正確にしたいのですが、0.1秒ほど誤差が出てしまいます
前提
なぜ正確にしたいのか?
->現在0.1秒のズレも許されない装置の制御ソフトを作っています。加えてセキュリティ対策としてWifiに接続しない環境で使おうとしています。
PCのOS:Ubuntu
GPS受信機の更新頻度:4hz
時刻を合わせるためにインストールしたもの:gpsdとntp
誤差計測に利用したサイト:JST Clock
使用を想定している環境:ネットに接続せずにPCとGPS受信機単体で動作させたい
やったこと
Ubuntu環境で作っているのでgpsdとntpを使用し、GPSからの信号で内部の時計を補正しようとしました。
一応gpsd(/etc/default/gpsd)には
START_DAEMON="true" GPSD_OPTION="" DEVICES="/dev/ttyUSB0" USBAUTO="true" GPSD_SOCKET="/var/run/gpsd.sock"
を追加し、
ntp(/etc/ntp.conf)には、
server 127.127.28.0 minpoll 4 maxpoll 4 fudge 127.127.28.0 refid GPS time1 0.0 stratum 10 restrict 192.168.11.0 mask 255.255.255.0
を追加しました。
その後はgpsdを起動させ、コマンドntpq -pで同期できていることを確認しました。
※このときはネットを切断しています。
起こった問題
ntpq -pで同期していることを確認し、どれほど誤差があるのかネットに接続し確認してみました。
しかし、0.1秒ほど誤差が出てしまいました。
試してみたこと
GPSとの接続ができていないんじゃないのかと思い、ターミナルでcgpsを打ちましたが、きちんと接続できていました。
加えて、GPSの更新頻度が原因ではないかと思い、ネットに接続して少し時間を置きました。すると正確なサーバーが選ばれ、誤差も0.02秒ほとんどなくなりました。
原因だと思うこと
結論から言うとGPSのクロックが遅い(0.25秒)か、やり方が不十分なのだと思っています。
GPSの信号がきちんと受信できていましたし、ネットを接続した環境だと誤差も0.02秒とほとんどなくなったのでGPSが悪いか、もっと別のやり方があるのではないかと不安です。
GPSが原因ならGPSを買い換えるだけですが、やり方を変えれば解決できる問題であればお力をいただきたいです。