スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GPSはじめました

自分探しをするなら,GPSモジュール を買うのがいちばんだ.
この四角いデバイスをパソコンにつなげば,自分の立ち位置が天の彼方から示される.
(ただし,電源を入れてから衛星を捕捉するまで30秒~1分かかる.)

さて,GPSモジュールから出てくるのは緯度・経度の2つの角度データなので,これをGoogleマップの小窓に打ち込めば現在位置が地図上に表示される.
しかし,ロボットに使うときは緯度経度のままでは直感的に分かりにくい.
そこで今いる場所を基準にしたX,Y座標に変換してから使う.
その計算式やWEBでの数値変換は国土地理院のサイト で可能だ.
角度の単位(デフォルトは度,分,秒になっている)と直交座標の取り方(北が+X 東が+Y)に注意しよう.
さて,ここのページに変換の計算式が載っている.
sinhやtanhなど,ふだんめったに使わない関数がずらっと並ぶのは,おそらく地球が真球ではなく楕円の形をしているからだと思う.
この計算をエクセルでやる分には何の問題もないが,FPU非搭載のマイコンでやるとなると,ちょっと計算量が多い.
そこで,楕円を平面展開するのではなく,球の一点からの相対座標で表す.
さらに,sin,cosを真面目に毎回計算せずに,ロボットの移動距離が小さいとしてcosΔθ≒kΔθのように線形とみなす.

つまり,以下の計算になる.

緯度の変化 量[°]x 係数KX=南北の移動距離[m]
経度の変化 量[°]x 係数KY=東西の移動距離[m]
KX=-(赤道半径[m] x 2 x PI)/360
KY=KX*cos(測定点の緯度)

例えば,
日本の北緯39° 東経139°地点を原点(x,y)=(0,0)に置いた場合,
KX=-111319.4908
KY=-88903.69831
という係数になる.
そのあと,北緯39.1° 東経139.2°まで移動したなら,
x=0.1*KX=11132[m]
y=0.2*KY=17278[m]
という座標に来たことになる.

さすがにこの近似は乱暴すぎる気もする.
試しに国土地理院の計算式との誤差を見積もってみたところ,100km未満の移動距離なら0.1~0.3%の差だった.
10kmの0.1%だと30m.100kmの0.3%だと300m.
GPSの位置精度が単独測位だと良くて10mぐらいらしいから,まぁまぁ実用になるレベルか.
2方向の係数は最初の1回だけ計算すればよいので,楕円を考慮したもうちょっと正確なもののほうが良いかもしれない.

ちなみにこの座標系で実際にロボットを動かすには,真北の方位が事前に分かっていないといけない.
これには 電子コンパス を使うのが手っ取り早い.
スポンサーサイト

この記事へのコメント

トラックバック

URL :

プロフィール

もやね

Author:もやね
長野県在住の会社員(メカニカル・エンジニア).
ロボットは完全な趣味としてやってます.
E-mail:
mo_ya_ne[a]yahoo.co.jp
[a]⇒@

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
FC2カウンター
ブログ内検索
RSSフィード
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。