以前、埼玉県の彩湖に行った時のルートログをいじってたら総距離が78kmと算出された。実際に自転車に取り付けたメーターでは70kmと出ていたはずなので、11.4%も誤差があることに。。。確かに歩いて移動したところもあるのでGPSのログと自転車のメーターで違いはあるはずだが、それでもこんなに誤差があるのはおかし過ぎる!色々調べてみた。
まず、自分が使った計算式は以下の通り。
lat: 緯度、lng:経度 (いずれも単位はradian)
R = 6378137 (地球の半径[m])
Δlat = lat1 - lat0
Δlng = (lng1 - lng0) × cos( lat0 )
距離 = R × √( Δlat2 + Δlng2 )
参照:
緯度・経度から距離を求める方法(@
轍 〜自転車的なる日記〜)
これで計算したポイント間の距離を加算して総距離を求めた。
1.明らかにおかしな点を除去
先日のログの中でひとつだけぴょこっと変な点が記録されていたのは気になっていたので、それをもっともらしい点に移動させて再度計測してみた。
→結果は76kmとなった。(誤差8.5%)
2.GPS-CS1Kの測位誤差を試算
GPS-CS1Kは測位に±10mの誤差があるらしい。とすると、以下の図の赤点のようなパターンが連続すると誤差が一番蓄積されるのかな?

彩湖に行った時のログは全部で884ポイントになっていたので、あるポイントから次のポイントまでの間隔(上の図の青点どうしの間隔)は平均約79mになっている。したがってこの場合の誤差は次の通り。
√(792 + 202) [m] / 79 [m] = 1.032 (誤差3.2%)
3.GPS-CS1Kの測位誤差を試算(2)
2はあくまでも一定の速度で走っていた場合。平均速度20km/hだとすると3時間30分で着くことになるが、実際には4時間50分かかっている。差分の1時間20分はほぼ停止していたことになる。平均速度20km/hの場合の青点どうしの距離を計算すると約109mになり、停止状態の場合の青点どうしの距離はもちろん0mなので、一番誤差が多い場合は以下のように計算できる。
( √(1092 + 202) [m] × 3時間30分 + 20 [m] × 1時間20分 )
/ ( 70 [km] × 4時間50分 ) = 1.083 (誤差8.3%)
でもGPS-CS1Kの誤差が±10mというのは「GPS衛星自体による誤差」なので、衛星をロストしてたらもっと誤差があるはず。現に極端におかしなポイントが発生しているわけだし。
ただし速度が大きくても±10mの誤差が変わらないとすると平均速度が大きいほど誤差は小さくなるので、自転車じゃなくて車の移動距離計算ならもうちょっと誤差は小さくなるはず。また、停止している時は電源を切っておくようにするともっと誤差が小さく出来る。
と、ここまで計算したところでGoogle Earthでルートログを開いて距離を見てみたらほぼ正確な値が出ている!もしやと思って以前のプログラムを見直したら
バグが見つかりました。。。全ての誤差の原因はこれです。。。
過去の記事を見直したら同様に間違っているところがあったので訂正しました。
●分かったこと
・GPS-CS1Kでログを取る時は速度が速い方がいい?
・停止状態では電源を切っておく方が良さそう。
そして、
・
まずは自分を疑え!!!
はい、反省してます。。。
posted by bali117 at 09:31| 東京

|
Comment(2)
|
TrackBack(0)
|
プログラム