2014年7月26日土曜日

ツーリング用ナビアプリ プロジェクト(3)

ツーリング用ナビアプリのデバッグで実際にナビさせたい.
と言ってもいきなり実走試験するわけにはいかないので,GPS アプリに擬似 GPS 情報を与えるために Bluetooth GPS というアプリを使用した.
これは本来は,外部 GPS 機器のデータを Bluetooth で Android で送信して利用するためのアプリだが,普通に「PC + BT ドングル」⇔「Bluetooth GPS」でも繋がるので,PC から道路を移動する座標を送信し続ければ,所望のことは実現できる.

というわけで kml に記録されたルートの座標を連続で送出する perl スクリプトを書いた.と言ってもやることは基本的には単純で,kml の座標を NMEA に変換して仮想シリアルポートに write するだけ.

と思ったのにこんなことでハマるハマるwww 何故か PC から送信している座標が無視されてしまい,WiFi による測位とかそっちの測位結果が使用されてしまう(;´д⊂)
手持ちの GPS 機器⇔Bluetooth GPS なら正常なので,Bluetooth GPS がおかしい可能性は低い.ならば NMEA フォーマットがおかしいのかと試行錯誤してみた結果,どうやら Android は単純に NMEA の座標を使用するのではなく,NMEA データの精度・信頼性を評価した上でおかしいと判断した場合は他の測位手段を使用しているっぽい.

具体的には,日時,方位,速度,$GPGGA の捕捉衛星数・HDOP などなど.
kml には方位,速度等足りない情報があるので,それらを演算で生成して NMEA に付与したら,やっとこさ Google マップを騙すことが出来たヽ(´ー`)ノ 高度等,求めようがないデータは固定で.
NMEA パラメータの何が省略できるかまでは検証してないけど,ひとまず↓の情報だと ok だった.
$GPGGA,012345,3401.234567,N,13501.234567,E,1,12,0.5,10.0,M,,,,*1B
$GPRMC,012345,A,3401.234567,N,13501.234567,E,34.55723,121.52,250714,,,A*47

0 件のコメント:

コメントを投稿