かみやんの技術者ブログ

主にプログラムの話です

GPS アンタレス48USBを購入

前回のエントリに引き続き、今日は電源基板の実装をするつもりだったが部品が届かず、仕方がないのでGPSを進めた。

GPSだが、まずは、どれを買うか調査。

製品名 URL 価格 精度
コメットUSB/3 URL 8,925円 単独10m,MSAS 5m
コメットUSB/3*HL URL 10,500円 単独5m、MSAS 2.5〜5m
イオ111wUSBs URL 12,800円 単独5m、MSAS 2m
アンタレス48USB URL 24,990円 単独3.3m、MSAS 2.6m
ヘミスフィア CrescentA100 URL 234,990円 単独2.5m、MSAS 1m

つくばチャレンジでヘミスフィアA100はよく使われていた。が、23万円は出せない。という訳で、アンタレス48USBを購入。
精度のところは受信条件が良い場合の精度なので実際にはもっと悪い。幅4m〜5mの道を走るのにベストの精度が3.3mとかで意味あるのだろうか。GPSは使うとしても重みは少なめでないと余計自己位置推定誤差が増えそうな気がする。

接続はUSBにつなぐだけ。電源もバスパワー(60mAほど)でOK。ドライバとユーティリティソフトをインストール。
下記、GPS Locator Utilityとかいう動作確認ソフト。こいつで出力データのON/OFFができる。

で、自分のPC側制御ソフトのAibiUIでGPSデータの取り込み実装。しました。
下記、AibiUIの画面。単にNMEAのログが出ているだけに見えるが一応パーサも実装した。

で、シリアル通信でちょっとはまった。今までマイコンとのシリアル通信とTopURGとのシリアル通信と2回書いていたので速攻つながるかと思ったら、全然データが来ない。地図ソフトとかUtilityソフトとか、TeraTermで受信できるのに、AibiUIだけ受信できない。調べたところ、

SerialPort.RtsEnable=true;

が必要だった。RTSピンをONにする必要があった。RTSはRequest To Sendの略らしい。1時間ぐらいロスした。
パースしたのは、NMEAフォーマットのGPGGAコマンドのみ。

$GPGGA,123834.00,3540.58861,N,13946.58683,E,2,06,1.67,5.1,M,39.4,M,999.9,*7B

こんな感じのデータで、CSVフォーマット系、フィールドは、センテンス名、UTC時刻、緯度、N or S、経度、E or W、状態(2だとMSAS ON)、衛星数、HDOP値(精度)、海抜高度、海抜高度単位(M)、ジオノイド高さ、ジオノイド高さ単位(M)、DGPSデータ取得からの経過時刻(なぜかずっと999.9)。そんな感じ。

下記、AibiUIでGPSの軌跡を可視化した。会社の周りを1ブロックぐるっと回ってきたところ。

衛星は常に6個以上捕まえられていた。MSASも捕まえられていた。6個+MSASでこの精度とは。やはり全然精度でないな。ま、周りはビルや街路樹がいっぱいという環境ではあるが。あとGPSをノートPCの上に置いたままだったのもよくないかな。精度が上がるコツをもう少し調べた方がよいか。
ちなみに上の図は、本当は長方形に歩いてきたつもりだが、可視化したらひし形になっている。どうも緯度経度からXY座標に変換する計算が間違っているようだ。
あと、上図は、1秒に1回GPGGAを取得してプロットしているが、移動平均線等で可視化した方がよいかもしれない。

ロギング機能、リアルタイム可視化、ログ可視化は実装したが、Google Mapとの結合まで実装したかったが間に合わず。