引き続き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で起動したいところです。