今日の学校クエストは、GPS-CS1KのログをMaxで解析したい、ってことでした。GPS-CS1KはSONY製の小型で安価なGPSレシーバで、これを持って歩き回って(あるいは自転車や自動車で走り回って)、後でその行動を何らかのアート表現に結びつけるってことらしいです。

それで、なんか面倒っぽいなっと思ってたら、実際には意外と簡単でした。まず、GPS-CS1Kを持って適当に歩き回った後、GPS-CS1KをMacにUSBケーブルで繋ぎます。これでデスクトップにディスクとしてマウントされるので、そのディスクの中からログ・ファイル(GPSフォルダにある.logファイル)をMacのハード・ディスクにコピーします。このログ・ファイルは単純なテキスト・ファイルなので、適当なテキスト・エディタで開くことができますね。内容の一部はこんな感じ。
$GPGGA,081906,3523.1434,N,13637.3032,E,1,04,07.2,00079.7,M,035.0,M,,*4D
$GPGSA,A,3,11,16,25,27,,,,,,,,,14.0,07.2,12.0*04
$GPGSV,2,1,05,25,44,245,51,27,42,276,50,16,13,123,47,32,,,43*4A
$GPGSV,2,2,05,11,50,219,52,,,,,,,,,,,,*44
$GPRMC,081906,A,3523.1434,N,13637.3032,E,000.0,000.0,210907,,,A*7C
$GPVTG,000.0,T,,M,000.0,N,000.0,K,A*0D
このデータはNMEA-0183っていうフォーマットだそうです。本家はココらしいですが、他所様の英語解説や日本語解説を拾い読み。ちゃんと仕様を読んでいないので間違ってるかもだけど、GPS-CS1Kのデータは、若干逸脱しているような気もします。
次に、Maxでログ・ファイルを読み込みますが、その前にログ・ファイルの拡張子を.txtに変えておきます。これは、MaxのTextオブジェクトが、明らかにテキストであるファイルしか開いてくれないからです。これはちょっと融通が利かない感じで、イマイチですね。
Textオブジェクトに読み込んだログは、lineメッセージで1行ずつ出力して解析します。ただし、各行はカンマ区切りなので、tosymbolとfromsymbolというオマジナイをかけてリストに変換します。なぜそうなるのか?と聞かれても、よく分からないんですが(笑)、知っている人教えてください。
後は、NMEA-0183フォーマットに従って、routeでデータを種類ごとに振り分けて、unpackで要素ごとに取り出すだけです。ここから先は目的次第ですね。元データがテキスト(ASCII表現)だから、数値処理する場合は、時刻とか単位の取り扱いに少々工夫が必要ね。基本パッチはコレです。

GPS-CS1Kは記録オンリーで、リアルタイム情報を外部に送れない(よね?)ので、私的にはナンジャラホイです。しかも、測位は15秒間隔で精度も10メートル程度らしいので、かなり大まかな情報しか得られません。ま、旅のお供にデジカメと一緒に使ってね的な位置付けの製品なので、文句を言う筋合いじゃないですけどね。
では、何でこんなことやってるかと言うと、もうすぐIAMASではモチーフ・ワークという1年生全員が参加する1週間のワークショップがあって、今回はGPSがモチーフだから、なんですね。全員と言っても50人しかいないんですが、普段はそんな大人数を相手にしないから、準備が結構大変(軟弱)。ただ、久々にMaxネタができたのでウレシイ(笑)。
本当は、噂のA-GPS付き3G iPhoneが登場して欲しいところですね。そうそう、iPhone勝手アプリも登場したNavizonってのもあるので、必ずしも人工衛星に頼らなくていいかもですね。と、まぁ、何にしてもiPhoneに流れちゃうのは、ビョーキっぽいな〜。