忍者ブログ
GPS
GPS関連の話題を掲載していきます。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

カーナビやGPSロガーを見ているとチャンネル数というものがでてくる。正直これは何だろうといろいろ調べると、同時に捕捉できる衛星数だそうだ、なるほどーカーナビはだいたい、12chが定番のようだ、そもそもチャンネル数が多かったらどうなるのか?これはいたって明快で、GPS衛星からの軌道データの受信が早くなるわけである。http://gps.no-mania.com/Entry/4/にも書いたが、通常では軌道データのフル受信に12.5分もかかる。カーナビはこのフル受信?がだいたい1分程度でできてしまう。12chあるからきっと早いんだろうと思って終わらすのもいいがもう少し分析してみる。

航法メッセージを発信しているGPS衛星自体の正確な軌道データはアルマナックではなくエフェメリスでこのエフェメリスデータは30秒おきに配信されている。つまり、極端な話、仮に6個の衛星が捕捉できたのであれば、6個の衛星の軌道データは30秒あれば分かるわけである。また、さらにいえば、すくなくとも、6個の衛星の軌道データはわかってるわけであるから、全衛星の軌道データがなくても、測位可能状態になるわけである。そして、この測位している間に、残りチャンネルで、GPS衛星から航法メッセージのアルマナックデータも受信するといった、タスクが組める。実際にこういった動きをしているかはGPS受信機の機能によるが、パラレルにGPS衛星からの電波が受信できればこそというわけである。(ただし、受信機の出荷前にアルマナックデータは受信機内に保持しているものとする)

そもそも、1衛星に対し、正確な軌道データは発信している衛星自身のものしかなく、1衛星からしか航法メッセージを受信してなかったとすれば、測位誤差が生まれる。なんにしても、パラレルだといいことはよく分かります。

尚、即測位可能なスタートをホットスタート、エフェメリスデータのみ受信しスタートすることをウォームスタート、航法メッセージすべて受信してスタートすることをコールドスタートと呼ぶ。

エフェメリスデータは2時間くらいで情報が更新されてるらしく、定期的に受信機は更新しないといけない、そういう意味でもパラレルは有効なのでしょう。

ここで面白いはなし、GPSロガーで65chだとか66chとかいうのがある。いったいこんなにチャンネルなんで必要なの?と思ってしまう。いろいろしらべてると、16chでも65chでも、たいして測位可能状態になるまでの時間は変わらない。おそらく、他になにかしら精度を上げるアルゴリズムに利用されているか、1秒でも測位可能状態にする仕組みにしているのだろう。

奥が深いです。

拍手[0回]

PR
いよいよクライマックスです。VBで、GPSロガーからデータを取得してHTTPでサーバーにアップロードするところまでできたので、あとはサーバーにアクセスした時、Google Map上に最新の位置データをプロットするだけです。

実は、これは、昔遊びで作ったやつがあったので、少し改造すれば簡単にできました。しかしながら、今でこそ簡単ですが、最初はやはり苦労しました。エンコードの問題でしょっぱなから躓いたりしてました。

完成した、Google Mapに最新の位置をプロットする画面は以下の通りです。

図4

いたってシンプルですが、日付ごとにデータを呼び出し、その日付の内、最新データの位置をプロットします。Google Mapでは初期の頃はありませんでしたが、今では、位置から大まかな住所も割り出せるようになってましたのでその関数も組みこんでいます。

また、商用版では、いろいろ便利なAPIも用意されているようですので、私も、いろいろ地図ソフト見ましたが、ASPサービスを展開する上では結構使えると思います。

さてさて、これで、媒体はすべて完成したので、折を見て実験でもしてみます。

拍手[0回]

今日も、前回の続きです。とりあえず、GPSロガーからデータ取得することはできました。あとはこのデータをどうにかして、緯度、経度、高度、速さに分解してやるのですが、GPSロガーから得たデータはNMEA-0183形式で、とにかく、GPSから得られるデータがカンマ区切りで提供されてます。ですので、CSVを扱うように必要データだけ抽出すればいいのですが、緯度と経度はDMM形式からdegree形式に変えてやります。そうでないと、Google Mapで利用できないためです。

データはどうにか抽出できたので、VBからHTTPでデータをアップロードし、データベースに保管させるため、Apache、PHP、Postgresをインストールすることにした。とりあえず、PostgresはフリーのWindows版もここ何年かでできたようなので、こいつをインストールしようと、Postgresのホームページに行ってみると、EnterpriseDBなるものを発見どうやら、ApacheもPHPも含まれており、簡単にインストールできるようだ、ためしにやってみると、えらく簡単にインストールできた、設定も定番のphp.iniとhttpd.confをチョロット修正するだけで利用できる。cygwinを利用していた時が懐かしく思える。さて、設定もできたので、付属のpgAdminIIIでDBを作成し、データ保管用のテーブルも作成した。

次に、PHPでデータの受け皿をコーディングする。まあ、ここは簡単に、送られてくる変数を単純にテーブルにインサートするだけの処理なのでなんら問題なくできた。

あとはVBにHTTPの処理を実装するだけである。ここは、ロガーから抽出したデータをタイマをつかって、一定間隔で抽出し、アップロードさせるようにするが、HTTP応答がないと、停止状態になって、タイマとの競合を起こすので、HTTPによるデータのアップロード処理も、デリゲートさせることにした。尚、HTTP処理も、APIのソケット関数使ってもよかったが、せっかくなので、HttpWebRequest、HttpWebResponseのペアを利用し、フルにフレームワークに頼ることにした。

まあ、どうにかこうにかたたき台のVBができたので、以下に絵を貼り付けておきます。

図3

正直、デザイン一切こだわってません。

ここでは概要しかいいませんが、以下の機能は実装しました。

1. GPSロガーのシリアル設定(ポートや通信速度)
2. HTTP設定(アップロードサイクルや送信先URL)
3. 地図設定(これはお遊びでつけた、現在位置を簡単に確認するため、ブラウザを立ち上げ、現在座標をGoogle Mapに表示させる。)
4. GPSパラメータの表示(方向だけは、矢印画像にして、向きによって回転させるようにした。実はこのPGがたいへんだった、どうでもいいとこほど、気合がはいります・・・)

設定さえできれば、接続ボタンを押せば、GPSから吐き出される、データを一定間隔で取得しサーバーにデータを渡します。

とりあえず、詳細はまた今度、サーバー側のGoogle Mapの処理だけ作ってしまいます。

拍手[0回]

[17]  [18]  [19]  [20]  [21]  [22]  [23]  [24]  [25]  [HOME]
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新コメント
最新トラックバック
プロフィール
HN:
Slit
性別:
非公開
バーコード
ブログ内検索
アクセス解析
忍者ブログ / [PR]
/ Designed by 日常のつぼ
Copyright GPS. All Rights Reserved.