ここに初めてのポスター。
私は橋の検査ROVのoctorotorのための収集GPSデータのいくつかのデータ分析を行っています。我々はoctorotorを走らせている ROS 3DスキャンLIDAR、ステレオビジョン、INS、および他のきちんとした技術を使用しています。私は現在、 ublox LEA-6T 同様の設定で Doug Weibel "s キャリア位相、ドップラーシフト、衛星天体暦などの生のGPSデータを収集するためのセットアップ。それから私はオープンソースプロジェクトを使用します RTKLIB ローカルでDGPS後処理を行う NOAA CORS ブリッジの3D点群を再構成する際に、より正確な姿勢推定のためにcmの精度を得ることができる。
とにかく、私はほとんどの サイキー テスト結果を統計的に検証する
しかし、この部分について特に、私はちょうど使用しています:
私は、私の位置共分散をジオピーの便利な距離関数を使って私の測定された地面真理からのオフセットを考慮して、引数を少しだけマッサージすると、北、東、上、三方向の各標準偏差要素によって表される各方向に対する距離を見つけることができますの間に。
しかし、これらの距離は絶対的であり、方向を記述するものではありません。
陽性:陰性は、それぞれ、北側または南側と相関する。
私は単純に方向の極性を検出するために緯度と経度を使うことができますが、
しかし、私は、代わりに説明された距離の正確なポイントツーポイントベアリングを見つけることができたいと思っています。
グローバルな見出しの価値は、私の現在の見出し以外のアプリケーションでも役立つと思います。
私は他の誰かが同様の質問をするのを見つけた
しかし、それは大きな円の近似を仮定しているようです
少なくともWGS-84楕円体モデル、またはジオピーで使用できる同じモデルを使用することを好む場所:
距離の計算にジャンプする
どんな提案も高く評価され、
-ruffsl
関心のある情報源:
- python-3.3: http:// www.python.org/download/releases/3.3.0/
- numpy: http:// www.numpy.org/
- geopy: https:// code.google.com/p/geopy/
- scipy: http:// www.scipy.org/
- ublox LEA-6T: http:// www.u-blox.com/en/gps-modules/u-blox-6-timing-module/lea-6t.html
- Doug Weibel "s: http:// diydrones.com/profiles/blogs/proof-of-concept-test-extremely-accurate-3d-velocity-measurement
- RTKLIB: http:// www.rtklib.com/
- NOAA CORS: http:// geodesy.noaa.gov/CORS/
- ROS: http:// www.ros.org/wiki/
回答:
回答№1は6使用 geographiclib Pythonのパッケージ。これは、楕円体上の距離やベアリングなどを計算します。 (パスを補間したり、面積を測定したりすることができます)たとえば、
pip install geographiclib
できるよ
>>> from geographiclib.geodesic import Geodesic
>>> Geodesic.WGS84.Inverse(-41.32, 174.81, 40.96, -5.50)
{"lat1": -41.32, "a12": 179.6197069334283, "s12": 19959679.26735382, "lat2": 40.96, "azi2": 18.825195123248392, "azi1": 161.06766998615882, "lon1": 174.81, "lon2": -5.5}
これは、ウェリントンから測地線を計算します。スペイン(40.96N 5.50W)にサウジアラビア(41.32S 174.81E)を渡す。距離はs12(19959679メートル)で与えられ、初期方位角(方位角)はazi1(北から時計回りに161.067度)で与えられます。
回答№2については4
2つの緯度/経度座標間のベアリング:(lat1、lon1)、(lat2、lon2)
以下のコードでは、lon1、lat2、lon2はラジアンで表されます。
以前は度からラジアンに変換します。
dLon = lon2 - lon1;
y = Math.sin(dLon) * Math.cos(lat2);
x = Math.cos(lat1)*Math.sin(lat2) -
Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
brng = Math.atan2(y, x).toDeg();
ベアリングは-180/180の範囲内にあります。
コンパスのベアリング(0-360)に正規化する
if (brng < 0) {
brng+= 360;
}