androidお試し4
湯川センムーから再び白ロムのXPERIAを奪い返した。
古い機種なのに室内でもGPSの位置情報をすぐにキャッチしてくれる。
どちらも3G契約は切れているのでA-GPSではないと思うのだが...謎。

で、今週はGPSの位置情報を5秒間隔でSDカードに記録できるようにした。
左画面下に記録開始&停止ボタンを追加。
c0065011_2321620.jpg

XPERIA片手にチャリで近所をぐるっとコギコギ。
記録したログをエクセルでGPX形式のxmlに加工(最初からGPX形式で出力すべきか...)。
#正しい海抜を求めるにはジオイド高(ウチの辺りはだいたい40m位)を差し引く必要があるんだそうで。
c0065011_23231411.gif

感覚的に100W前後くらいで流したのだが、仕事率はこのとおりグラフがぶっ飛んでおり
リアルタイム表示ではまったく使い物にならない(高度情報の精度が低いため)。
ネットによるとカルマン・フィルタやローパス・フィルタでノイズを取り除き
最小二乗法で丸めるとよいそうで、都合の良いコードが落ちてないか探しているところ(誰かJavaのメソッドUpしてくれ)。
赤い線は最小二乗法のグラフでこれくらい安定してくれるとリアルタイムなパワーメーターとして使えそうな気がする。
c0065011_23234334.gif

2D座標については、この通りフィルタを掛けなくてもそこそこ安定しているので簡易ロガーとしては十分かと。
c0065011_23255128.jpg

拡大すると初代etrexよりイケてないことが分かる。ロードバイク&記録間隔5秒なんでこんなもんか。
3G契約でA-GPSを有効にするとハンディGPS並みになることであろう。
それにしても、お試しレベルで簡単にGPSロガーが作れて
今のところ出費は¥5kだから、大人のおもちゃとしては最高ではないか。
c0065011_2326660.jpg

訪問電話でau光にするとスマホ1台につき月額¥1.4k値引くと言われたところなんで
au&XPERIAに乗り換えるべきか悩みどころ。

今日のお勉強。経度緯度の10-->60進法表記の変換。
Longitude = 139.759774167;
Deg = (int)Longitude;
Longitude = (Longitude - (double)Deg) * 60;
Min = (int)Longitude;
Longitude = (Longitude - (double)Min) * 60;
Sec = (int)Longitude;
Longitude = (Longitude - (double)Sec) * 1000;
Msec = (int)Longitude;
//Math.floor()を整数型へのキャストで代用。resultは139d45m35.187s
by tomorou_takurou | 2013-02-17 23:33 | ゴミプロ
<< androidお試し5+ androidお試し3 >>