2010/04/13

株式会社群青企画 (4)

 カーナビ的な何かでWebサービスのメンテナンスも必要になってきた為、第3回で予告した内容でコンテンツをまとめることにしました。さすがに60分では終わらなさそうなのですが、サービス再開時にはまた投稿します。

VAIO X (13)


 引き続きカーナビ的な何かのお話です。現在地のプロットについては前回までで完了し、GUIの追加と走行試験をしています。トップ画像にも出しましたが、走行試験で出ている各値(画像右上)はかなり正確な値が出ています。

 後は、他のサービスとの連携も含めてもっと見やすい配置する事になりそうです。カーナビ的な何かでも書面による承認が必要らしく、Googleにコンタクトをとっている途中なのですが、大丈夫なんでしょうか。

 もう少しまとまったら動作中の動画も投稿します。

2010/04/08

VAIO X (12)


 第11回の投稿にわざわざ追記する位、データが納得出来なかったため見直しをしました。GPSの測定誤差は10m位らしいですし、あんなにずれたら軍事用としても使い物になりませんよね(´・ω・`)。

 見直した結果が今回の画像になります。上の図が広域、その拡大が下の図になります。路地を走ったりしてみましたが、しっかり走行位置がプロット出来ました。動作が遅くなる為、今回はマーカー表示は少なくしてあります。


 これならカーナビ的な何かにかなり近いモノを作ることが出来そうです。もう少し時間をかけて作成したいので、無料公開までは少々お待ち下さい。

GPSから取得したデータの加工ポイント

  1. フォーマットはNMEA-0183 (16進数表記)。
  2. その中の緯度・経度情報の小数点以下は60をかけて秒表記にする。 <= 足りなかったもの。
  3. Google Mapでの位置表記は10進数。
  4. 16進数->10進数に変換する際は、度 + 分 / 60 + 秒 / 3600 の式を使用する。

サンプルプログラム (16進数緯度情報を10進数に変更)

QString Main::latitudeToDec( const QString &latitude )
{
QString degree = latitude.left( 2 );
QString minute = latitude.mid( 2, 2 );
QString second = latitude;
second.remove( 0, 4 );
double d = degree.toDouble() + minute.toDouble() / 60
+ second.toDouble() * 60 / 3600;
QString s;
return s.setNum( d, 'g', 24 );
}

2010/04/06

VAIO X (11)


 第10回の投稿後、1日かけてGPSと連携出来るように仕込みました。連携自体はそれ程難しくはなかったのですが、Windows XPで使用していたシリアルポート関連のモジュールがWindows 7で動かない不具合があり、それで手間取ってしまいました。

 トップ画像は少しサイズ大きくなりましたが、純粋にGPSが出力したログをマーカーで配置した結果になります。赤矢印の経路を車で移動したのですが、そこそこ位置は出ているのでは?と思います。カーナビ的な何かには程遠そうですが、現在地を元に何かを表示させるものを作成した方が使い勝手が良さそうです。

 その辺も考慮しつつ、もうちょっと位置補正が出来そう(この図で言えば急に座標がずれてしまっているので補正をかける)なので実験してみようと思います。

2010/04/07 追記 : ズレ方がやはりおかしいので、見直し中です。結果は次回の投稿で。

2010/04/03

VAIO X (10)


 第9回では、カーナビ的な何かを作れますよね?という投稿をしました。GPSモジュールが出力するフォーマットは、仕様があるので問題なさそうです。あとは、それをアプリケーションからどう渡すかがポイントです。

 画面は開発途中のMacでのサンプルで、画面の下から上に向かって移動をしていると想定しています。使用フレームワークはこのブログでもおなじみのQtです。QtではWebKit経由でJavaScriptが実行出来る(つまりC++からJavaScriptに引数を渡せる)ので、google map APIを使用して現在地を表示させてあげれば良い訳です。


動作させた感じはこのようになりました(GPSとは連携していません)。もう少し動かして良さそうなら、Windows版でビルドし直してGPSと連携させてみようと思います。

Powered By Blogger