3
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

GPSモジュールの測定周期を10Hzに変更できたが gpsdを起動すると1Hzに戻される

引き続きGPSの測定周期を10Hz化しようとしています。
とりあえずシリアル通信で10Hz化することはできました。

以下のようなコマンドでGPSの10Hz化とシリアル通信速度の115200bps化ができます。USBでGPSモジュールを接続している場合はttyS0をttyUSB0等に置き換えます。
なお、PMTKコマンドについて詳しくはこちら等に書いてあります。チェックサムは計算してくれるサイトがあるので、そこで算出できます。

$ echo -e "\$PMTK220,100*2F\r\n" > /dev/ttyS0
$ echo -e "\$PMTK300,100,0,0,0,0*2C\r\n" > /dev/ttyS0
$ echo -e "\$PMTK251,115200*1F\r\n" > /dev/ttyS0

本体側の通信速度も115200bps化します。

$ stty -F /dev/ttyS0 115200

上記を/etc/rc.localに記載すると起動時に自動で10Hzで立ち上げることができます。

$ cat /dev/ttyS0

とすると、0.1秒周期で位置情報がだーっと流れるのを見ることができます。プログラムからは標準ストリームとして開けば良いでしょう。

ここまでは良いのですが、ntp同期なども考えてgpsdを起動したところ、周期が1Hzに戻ってしまいました。下記コマンドで5Hzに再設定できましたが、10Hzには設定できません。

$ gpsctl -c 0.2

現在drivers.cにおいて5Hz以上をはじく処理を見つけておりますが、良い感じに修正できるか検討中です。
また、できればgpsdの起動時に10Hzで起動したいところです。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
3
Help us understand the problem. What are the problem?