2008 年 7 月 のアーカイブ

GPSロガーとのシリアル通信

pythonのシリアルモジュール使ってるんだけど、シリアルの入力をreadline()で取ってくると、1秒おきに10行程度の測位データを送ってくるのに間に合わずにバッファに溜まってしまうという現象が起きた。

面倒なんで、5秒おきにシリアルを受信しにいって、データが取れたら切断するというふうに改良したんだけど、今度はBluetoothでの通信やりとりがせいいっぱいみたいで、GPSロガー本体もオンオフ繰り返して、とっても苦しそう。

次に、POSTする処理をスレッドにすることでシリアル入力を楽にさせよう大作戦を行ったのだが、まったく無意味。

http://ymasuda.jp/python/pyserial/pyserial.html

ヒントを探すためにpySerialのREADMEを見ると、

flushInput() # 入力バッファをフラッシュ

おお、これだ!

今度はいい感じで5秒おきを守ってリアルタイムに動いてくれてる。

まず、最初にドキュメント見るってことを肝に銘じます。

Webカメラの「Qcam Pro for Notebooks」が届いたヨ

<a href="http://eyevio.jp/movie/143856"><img src="https://i1.wp.com/eyevio.jp/_images/G/G6/G6ed3cbf4e376f79142ea648c75e345a/143856/leegbsjcqwedzyjjikdd_w1.jpg" data-recalc-dims="1" />20080725 GPS+車載テスト走行</a>

もう、Webカメラってもんじゃないんですね。そのままデジカメ・ビデオカムの代わりとして使ってもいい画質の精細さと、オートフォーカス・光量などの自動調節が素晴らしい。普通、暗いところでカメラ映そうとしても、映らないかISO感度が上がってノイズの乗ったひどい画質になるんだけど、このカメラは余裕で人間の目を同じように捉えてくれる。

こいつをQVGAで200kbpsという申し訳ないエンコードで使ってもったいないように感じるんだけど、動画の動きが激しくないときにコイツの本領が発揮されてるんで、よかったら動画でご確認ください。

今日は暑かったのでエアコン効いてる車で車載動画っていうのをテストとして撮ってみた。バックミラーにWebカメラのクリップを挟むだけで固定できちゃって楽チンすぎる。

一方でGPSのテスト。昨日の夜に作った、

  • GPSロガーからの情報をシリアル経由(Bluetoothをシリアルでエミュレート)でPythonでこしらえた実質5行くらいのプログラムでサーバにPOSTしてやり
  • サーバ側ではPOSTされたデータを単純に追加書き込みするPHPプログラム(どうせならPythonで作れよw)
  • 蓄積されたデータをGoogleMapsのPolyLineとMarkerに変換して表示するPHPプログラム(どうせなr)

を実際に動いて試す。

20080725

んで、思い通りのものが、簡単にできたのでオワリ。

1秒おきのデータはポイント数が大きくなりすぎるとか、自動で更新されないのがダサイとか、アイコンは自転車のアイコンにして進行方向に向いた形にしたい(API見たけど、回転のパラメータないから方向別に用意せなあかん)よねとか あるので、ちょっとずつ面白いものにしていきたいな。

GPSロガーの「Holux M-241」が届いたヨ

20080724

今日はいっぱい通販で買った物が届く日でした、合計4つ。まずはGPSロガーから。

GPSっていうとGARMINとか有名だけど、GPSロガーというガジェットが存在するなんて先日まで知らなかったの。少年時代からGARMINが欲しくて憧れて、代わりにauのGPS携帯をGETして、gpsOneコマンドを解析したりして満足しちゃって、あれだけ欲しかったGARMINは1回も買ってない。

位置情報にはまってたとき、auのGPS携帯のJavaアプリを作って、サーバと連動したリアルタイム位置表示システムを作ったりしたけど、結局電池消費がすごくてどうしようもなかった記憶。それと同じような、GPSログを刻々と記録し続けるのが、このGPSロガー。本体に10万以上のポイントを記録できて単三電池で12時間も動くすごいやつ。

早速つかってみた。 ・・家の中でつかっても面白くもなんともない。

PCとの接続はUSBかBluetoothで疑似シリアルポートとして繋ぐ。ログの転送や変換とか一通り使い勝手を試す。まぁ、これが普通の使い方。やりたかったのは次。

シリアルポート経由でリアルタイムの位置情報が取れる。それによって、カシミールとかでリアルタイムナビができるわけ。この位置情報をネットにアップすれば、以前やってたauのシステムがGPSロガーでもできるだろう。

既に、先人の方がやってて、その方法を試してみた。
GooPsというGPSデータをGoogleEarthに渡すソフトがあるんだけど、そのオプションでGpsGate.com(位置情報を公開するWebサービス)にデータを送る設定があって、それをポチッとすれば簡単に自分の現在位置情報が全世界で見られるようになる。オッケー完璧!

だけど、なんかものたんない。

どうせだから、位置情報をサーバ側で保存したいし、将来的にストリームサーバで動画に位置情報レイヤーを合成するとかもやってみたい。それには、独自でシリアル叩いて、その位置情報を自分のサーバにアップするプログラムが必要なの。

処理的にはたいしたことやらないから、LightWeightなのでサクッと作れて、シリアルのモジュールがあるものってところで検討したところ、

GPSリアルタイムトラッキングしてみた
http://d.hatena.ne.jp/hidep22/20080503/1209815231

おっ、なんかよさそう。Pythonってのがそそる。前に横浜でのGoogleカンファレンスで話をきいたGoogle Map for APIも使えるかも!!

そんなこんなで、現在Pythonの勉強がてら、プログラム作成中。ひさびさにやる気モード。