自作車載GPSロガーが一応動くようになってきた

以前書いた車載GPSロガーの動作の様子です。

装着後しばらくは位置更新が上手くいかずに色々試行錯誤してたんですが、結局よくわからないうちにいい感じに動くようになってきましたw。まだ天候とかでも左右されるかもですが。

下の動画は車内のスマホで表示をした例です。水色の丸が自分(スマホ)の位置。クルマのイラストが入った吹き出しが車両のRaspberry Pi Zero Wからサーバーに送信され、Webアプリで読み込まれた位置です。多少の誤差はあれどほぼ同期して動いています。これくらいの頻度でリアルタイムに位置がとれる市販品がなかなかたなかったわけです。

想定した使い方は、自分は駅などで迎えを待つ側。家族がクルマに乗って近づいてくる状況をモニタリングして、「そろそろ着くな」というところで道路脇に移動したり、どちら側からアプローチしてくるかを見分けて道路のどっち側で待つべきか判断したりといったことに使います。運転者はそうした状況を逐一報告しなくても運転に集中できる。こちらも雨や寒空の下、無駄に早くから立ちんぼしなくても済むというワケです。

地図の下にはいくらかのステータス情報と更新間隔指定メニューがあります。地図はあえて自動スクロールはせず、下の「自己位置」「車両位置」ボックスをタップするとセンタリングします。どちらかというと自己位置で接近を待つ利用シーンが多いためです。がまぁ待っててヒマな時はやっぱり車両位置を追尾して見たくもなるので、そのうち任意でON/OFFできるようにししてもいいかも知れません。

「更新間隔」はこのWebアプリ上での更新頻度ではなく、RasPiがサーバーに送信する頻度です。こちらで眺めている間だけ1秒とか3秒とか高頻度のアップデートをしてほしいですが、通常はそこまでの頻度は必要ありません。そこで、この画面を開くとこのメニューの設定をサーバーに保存しますが、それには有効期限が設定されており、ページを閉じてしばらくすると指定は無効になり60秒毎の更新に落ちるようにしています。RasPi側もサーバーに現在位置を送信した戻り値としてこの設定値を受け取り、次回の送信までのインターバルとする仕組みです。

■GPS更新精度に関する考察

記録にはMySQL(MariaDB)のgeometry型を使っていますが、なぜか何回かの即位が連続して同じ数値になることが続き、もしかして精度(桁数)が足りてない?と思ったりもしましたが色々調べた感じ充分そうということがわかりました。RasPi側のPythonスクリプトの型も調べたりしましたが問題なさそう。

となるとやはりGPS自体の精度の問題かなということで、ダッシュボード上のアンテナの下に鉄板シートを敷いてみたりもしたんですが、直後にはさほど効果を感じられず。

またGPSにはAlmanacという衛星の位置情報があります。通常これは定期的に更新されるのをGPSクライアントが受信しキャッシュして使います。これがないと電波を受信しても正確な位置を算出できません。購入したGPSモジュールではコイン電池でバックアップすることで最後に受信したAlmanac情報を保持して、次回電源ON時に高速に測位を可能にしている”はず”なんですが、もしかしたらこれが上手く機能してないのかもなぁ、などと考えていました。システム自体はROM化してあって毎回リセットされるわけだし…

などと考えていたものの、なんだか最近は調子よくなってきた、という現状です。またダメになるかもですが、まぁその時また検証します。