GPSの座標変換について
GPSはアンテナと衛星までの距離を測るセンサーです。
4つ以上の衛星とアンテナ間の距離を測ることによりアンテナの3次元的な位置を割り出します。
NMEA0183のGPGGAセンテンスでは緯度、経度、高さ、ジオイド高等が得られます。(ジオイド高をどうやって得ているのかは今のところ解りません)
移動ロボットの姿勢(位置と向いている方向を含めて姿勢と言っています。)に関しては、緯度経度ではだいぶ使いにくいので、直交座標系で話ができると楽です。
そこで緯度経度から地球中心の直交座標へ変換して更に、地表のある点を原点として、地面が平面だと近似した地平座標に変換してやります。
ECEF座標へ
地球の中心を原点としたデカルト座標をECEF(Earth Center Earth Fixed)座標と言います。変換式はプログラム言語風に書くと以下の様になります。
Lat:緯度
Lon:経度
High:海抜高度(標高)
N:ジオイド高
PI:円周率
Xe,Ye,Ze:ECEF座標
f = 1 / 298.257223563;
a = 6378137;
e = Sqrt(f * (2 - f));
R = a / Sqrt(1 - e*e * Sin(Lat * PI / 180) * Sin(Lat * PI /180));
Xe = (R + High + N) * Cos(Lat * PI / 180) * Cos(Lon * PI / 180);
Ye = (R + High + N) * Cos(Lat * PI / 180) * Sin(Lon * PI / 180);
Ze = (R * (1 - e*e) + High + N) * Sin(Lat * PI / 180);
ENU座標(地平座標)へ
地平座標をENU座標と言います。Eは東西の東のEast、Nは南北の北のNorth、UはアップダウンのUpを表します。緯度経度からENUへはECEFに変換したものもつかいます。またENUでは地球平面上の何処が原点なのかあらかじめ決めておきECEFで保持しておかなければなりません。以下に変換式をプログラム言語風に書くと以下の様になります。
Xe,Ye,Ze:位置を変換したい点のECEF座標
x0,y0,z0:地平座標の原点としたい点のECEF座標
Lat,Lon:位置を変換したい点の緯度経度
E = -Sin(Lon * PI / 180) * (Xe - x0) + Cos(Lon * PI / 180) * (Ye - y0);
N = -Sin(Lat * PI / 180) * Cos(Lon * PI / 180) * (Xe - x0) - Sin(Lat * PI / 180) * Sin(Lon * PI / 180) * (Ye - y0) + Cos(Lat * PI / 180) * (Ze - z0);
U = Cos(Lat * PI / 180) * Cos(Lon * PI / 180) * (Xe - x0) + Cos(Lat) * Sin(Lon * PI / 180) * (Ye - y0) + Sin(Lat * PI / 180) * (Ze - z0);
参考文献:http://www.enri.go.jp/~fks442/K_MUSEN/
Welcome!
管理人こうへいのホームページです。趣味のロボットのはなしや、日常の何でもないこと、仕事の話などを徒然とメモしていきたいと思います。どうぞよろしくお願いします。m(__)m
Labels
Blog Archive
-
▼
2010
(196)
-
▼
6月
(25)
- 新ジャイロ
- 親子丼
- エアー座布団浮いた
- 今季初GPS誘導成功
- 測域センサーで窓ガラスを計測
- 腕ロボット、面白い企画はないものか
- ビリヤードするロボット
- OpenTKチュートリアル
- 牛筋、トマト煮
- 学び合い反省・有効数字
- 台車に付けたWebカメラで撮影
- Webカメラ
- はやぶさ帰還
- 一人、アウトドア系料理で一杯
- おかえり、はやぶさ!
- GPS座標変換の検証
- 60進の緯度経度情報を10進緯度経度へ
- 玉ねぎ料理わが定番、豚丼!
- GPSの座標変換
- キャベツ終了、そして玉ねぎへ・・・
- NMEAフォーマットのGPGGAセンテンス
- キャベツ味噌汁
- 移動ロボットの誘導についての話を書きます
- キャベツ続報
- 一人暮らし腐らせないでキャベツ一個で何を作れるか
-
▼
6月
(25)