質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
NTP

NTP (Network Time Protocol) とは、時計の時刻をネットワーク上のNTPサーバーの持つ正しい時刻に同期するためのプロトコルです。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

1回答

374閲覧

GPSを使った時刻補正で遅れが出るので助けてほしいです!

GoGopekapeka

総合スコア1

NTP

NTP (Network Time Protocol) とは、時計の時刻をネットワーク上のNTPサーバーの持つ正しい時刻に同期するためのプロトコルです。

GPS

GPSは、Global Positioning Systemの略です。衛星信号を使用して受信機の地上又は空中内の居場所を特定するナビゲーションシステムです。"GPS"は受信機のことも指します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

1クリップ

投稿2023/12/19 10:17

困っていること

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を買い換えるだけですが、やり方を変えれば解決できる問題であればお力をいただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tmp

2023/12/20 23:26

GPS受信機のデーターシート?で、いつGPS受信機の時計が公正されるか確認しましたか?
tmp

2023/12/21 11:22

このモジュールは、使ったことがないのでわかりませんが、いくつかのGPSモジュールでも電源投入時には、GPS受信するまでにも、時刻のデータは出力されていますが、その時刻は、内部時計の精度で出力されていたとおもいます。GPS受信で時刻公正されるのですが、いつされるかが書いてないものや うるう秒も含めて時刻公正されたというフラグがあるGPSモジュールもあります。 なので十分な時間をまってからGPSとPCを同期させてみてはどうでしょうか?
GoGopekapeka

2023/12/21 11:30

回答ありがとうございます!GPSをつないですぐネットに接続してしまっていたので少し待ってみようと思います。これでも変わらなかったらまた返信します。
guest

回答1

0

GPSのNMEA伝文だけでやっているなら、RS232CとかUSBの伝送遅延があるからでは?
固定的ならOffset入れて調整するか、PPSを入れて秒の切り替わりはそっちで判断させるとか。(PPSはなんらかのハード対応がないとPCには接続できませんけどね。)

<追記>
このGPSモジュールは、RS-232Cで伝文を出す本体ユニットと、USB変換チップが内蔵されている構造です。こういうので時刻同期するのには問題は複数あります。
・GPSモジュールは正秒(4Hzなら正1/4秒)のタイミングで伝文を出してくれるのか
・GPSモジュール側が正秒で送信を決心したとして、そこから9600bpsな232cの伝送遅延があって、232c・USB変換器の遅延があって、USBでPCに入ってきて、Linuxが/ntpdが受信したという認識するまで遅延はいくつで、固定的か?(あるいは別の伝文を送っている最中で、時刻の送信が遅れるとかがあるか?)

投稿2023/12/20 10:07

編集2023/12/21 23:05
matukeso

総合スコア1590

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GoGopekapeka

2023/12/21 10:39

返信が遅れてしまいすいません。伝送遅延は考えていなかったです。ただ素人で恐縮ですがケーブルが1mほどしかないので起こるとは考えにくいです。ただ、固定的ではあるのでオフセットを入れて対応したいと思います。あと加えて質問なんですが、ntpの時刻補正はGPSから取ってきた情報をただPCにセットしているだけなのか、セットしてPC内部のクロックで加算しているのか教えていただきたいです。この手の分野は全く素人なので分からないです。
tmp

2023/12/21 11:30

ケーブルの長さは関係ないですよ。9,600 bps (Default)と書いてあるので、もし、そのままなら1文字約1msなので、pdfにあった例で、$GPGGAで80文字なので80msぐらい通信にかかるというものです。 デフォルトとあるので変更してみてはどうでしょうか?
GoGopekapeka

2023/12/21 11:38

回答ありがとうございます!そこも見ていませんでした(-_-;) すいません。あとubuntuのあまり触った事が無いので分からないんですがどのようにしてレートを変えればよろしいでしょうか?検索しても良く分からなかったのですいません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問