Gpsdを使った位置情報取得について


#1

Candy light plus D を Raspberry pi 3 へUSB接続し、
/dev/以下にできた QWS.EC25.NMEA ポート を使ってGPSDにnmea信号を送り、
GPSD経由で位置情報を取得しようとしています。

gpsdをインストール後
gpsdの設定/etc/default/gpsdにて

#Start the gpsd daemon automatically at boot time
START_DAEMON=“true”

#Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO=“true”

#Devices gpsd should collect to at boot time.
#They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/QWS.EC25.NMEA"

#Other options you want to pass to gpsd
#GPSD_OPTIONS="-n"

と設定して、gpsmonを使って測位結果を確かめてみたところ、
最初の数秒はデータが更新されるものの、すぐに止まってしまったり、(更新も、1秒おきではなく、飛び飛びになる)
最初からデータが出なかったり、という現象が発生しております。

gpsmonで確認した時に出力される設定関係の出力は以下のとおりでした。
tcp://localhost:2947 JSON slave driver>
(84) {“class”:“VERSION”,“release”:“3.16”,“rev”:“3.16-4”,“proto_major”:3,“proto_minor”:11}
(208) {“class”:“DEVICES”,“devices”:[{“class”:“DEVICE”,“path”:"/dev/QWS.EC25.NMEA",“driver”:“NMEA0183”,“activated”:“2018-06-08T14:31:28.508Z”,“flags”:1,"
native":0,“bps”:9600,“parity”:“N”,“stopbits”:1,“cycle”:1.00}]}
(122) {“class”:“WATCH”,“enable”:true,“json”:false,“nmea”:false,“raw”:2,“scaled”:false,“timing”:false,“split24”:false,“pps”:true}

何か設定などで不備がございましたら、ご指摘いただければと思います。
よろしくお願いいたします。


#2

ご質問ありがとうございます。利用ガイドでは記述が漏れていましたが、GNSS/GPS機能は、初期設定では動作しておりません。

このため、次のいずれかの方法でGNSS/GPS機能をONにする必要があります。

  1. OS起動時に常にONにする場合は、利用ガイド「GNSS/GPSの使用」の「インストールした後にGNSS自動起動設定を変更する方法」をご覧いただき、設定を変更してください
  2. CANDY REDのGNSSノードを利用した場合は、上記設定に関係なくOS起動時にONになります
  3. OS起動後に、任意のタイミングでONにするときは、コマンドラインで指定を行うことができます。

今回のケースでは、1か3の方法でONにする必要があります。
なお、利用ガイドにおいて初期設定ではGNSS/GPSが動作していない点については追記致しました。


#3

ありがとうございます。
利用ガイドを参考にGNSSを自動起動するようにしましたが、
gpsdが1秒毎にコンスタントにNMEAを受信できておらず、最初の1回もしくは数回だけ受信するような動作をしております。
sudo candy gnss stautsでstartedになっていることは確認していますので、うまくGPSDでNMEAを取り込めていないのかもしれません。


#4

補足ですが、 sudo candy gnss locateで位置情報を見ることはできています。


#5

NMEAのシリアルポートの情報は、以下のコマンドで直接見ることも可能です。1秒ごとに新しいNMEAセンテンスが出てきていることは確認できますでしょうか?

sudo screen /dev/QWS.EC25.NMEA 9600

また、上記では分かりにくいかと思いますので、cgpsコマンドを使う場合の設定・確認手順を記載します。
cgpsコマンドでも1秒単位で状態が更新されているように見えるのですが、以下の手順で設定してcgpsの動作をご確認いただけますでしょうか?

$ sudo apt-get update
$ sudo apt-get install gpsd gpsd-clients python-gps
$ sudo nano /etc/default/gpsd # DEVICE="/dev/QWS.EC25.NMEA" に変更して保存ください
$ sudo systemctl restart gpsd
$ cgps -s

ターミナルでcgpsを動作させると、このような画面が出て1秒ごとに情報が更新されます。

なお/etc/default/gpsdの内容は、上記DEVICE以外変更していません。

インストールしたgpsdは以下のバージョンのものです。

pi@raspberrypi:~ $ dpkg -l gpsd
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                     Version           Architecture      Description
+++-========================-=================-=================-=====================================================
ii  gpsd                     3.16-4            armhf             Global Positioning System - daemon