Flight Coach BBS

Dual GPSによるGPSエラー低減の試み

6 コメント
views
2 フォロー

Ardupilotには2つのGPSアンテナを用いて位置情報の精度を向上させる機能が2つ備わっています。この機能の一つが"Blending"でもう一つは"Using Best"です。今回は"Blending"機能を使用しました。"Blending"機能とは、2つのGPSからの出力を、その測定精度にしたがって決定した重みを用いてブレンドして出力する機能で、詳細は下記のURLを参照願います。
https://ardupilot.org/copter/docs/common-gps-blending.html
https://discuss.ardupilot.org/t/ardupilot-with-dual-gps-blended/15635
 今回は主GPSアンテナ(Primary)を上向きに、従(Secondary)を下向きに配置しました。下図はPrimary(赤), Secondary(緑), Blended(青) GPSの出力及びカルマンフィルターを通して最終的に出力するPOS(ベージュ)データ(Flight Coachで使用)を示しています。
画像1
図は緯度データで、ID0:Primary, ID1:Secondary, ID2:Blendedを示しています。POSデータは、通常は主であるPrimaryデータにしたがいますが、その精度が落ちるとSecondaryデータに近づき両者をうまく調整してデータの精度を上げようとしている様子が分かります。
 GPSの測定精度を示す各パラメータは下記の通りとなりました。
【GPS 1個搭載】
NSats: 0(min.)~17.18(average)~21(max.)
HDop: 0.58~1.35~99.99
XKF4_SV: 0~0.58~6.44
XKF4_SP: 0~0.29~1.57
XKF4_SM: 0~0.24~0.51
【GPS Blending】
[Primary]
NSats: 0(min.)~16.10(average)~21(max.)
HDop: 0.55~1.04~99.99
[Secondary]
NSats: 0~13.69~21
HDop: 0.55~0.82~99.99
[Blended]
NSats: 9~16.96~21
HDop: 0.55~0.64~0.95
XKF4_SV: 0~0.37~4.63
XKF4_SP: 0~0.22~1.78
XKF4_SM: 0~0.23~0.47
各パラメータの数値を比較すると、パラメータによって多少の違いはありますが全体的に"GPS Blending"の方が精度が良いようです。特に、水平方向の測定精度を示すHDopの値については"GPS Blending"の方がかなり良い数値を示しています。
 一方、"GPS Blending"にはまだ課題があることが分かりました。下図は、先ほどの緯度データに各GPSからのHDopを追加したものです。
画像1
黄色い縦線はPrimary GPS(ID0)のHDopが99.99となりPrimary GPSの水平方向の測定精度が極端に悪くなった場合で、POSの緯度データがPrimaryからSecondaryにステップ状に移動していることが分かります。"GPS Blending"の開発者は、GPS間の重みが変わる際ステップ状の移動が無いように開発したと述べていることから、ステップ状の移動を無くする方法として何か解決策があるのかもしれません。このときのPlotterによるリボン図を下図に示します。
画像1
リボン図上でもこれに対応したジャンプが表示されており、その移動距離は6.77mです。2つのGPSアンテナの配置を変えることによって、このようなステップ状の移動を小さくすることは可能かもしれません。
 このように、まだ課題は残っていますが、2つのGPSアンテナを用いることによりGPSエラーが改善される可能性のあることが分かりました。今後は、2つのGPSアンテナの位置及び向きを変えて最適な搭載方法を探る予定です。また、"Using Best"機能についても今後検討したいと思っています。

TakJP
作成: 2023/01/14 (土) 16:18:46
履歴通報 ...
1

Dual GPSによるGPSエラー低減の試み(つづき)
 下の2つの図はLogファイルのPOSデータをGoogle Earth上に表示させたもので、各マヌーバを色分けして表示してあります。飛行機のアイコンはその位置における機体の姿勢を示しており、赤は機体の上面を、青は下面を表しています。フライトパス上の白い四角マークは補足されたGPS衛星の数が12未満(Ardupilotでは12以上を推奨)となる位置を表しており、最初の数値は衛星捕捉数NSatsを、次の数値はGPSによる水平方向の測定精度を示すHDop(Ardupilotでは2未満を推奨)を表しています。
画像1
画像1
上段の図は、GPSアンテナが1つの場合、下段の図はGPSアンテナが2つでGPS Blending機能を用いた場合を示しています。GPS Blending機能を用いた方が、エラーの起こる可能性を示す白い四角の数は少なく、エラーとなる確率が小さくなることが分かります。なお、NSatsが12未満となる回数は、GPSアンテナが1つの場合69回、2つの場合45回でした。また、GPSアンテナを2つ使用した下段の図で、NSatsの値が小さくなるのは垂直上昇の場合です。垂直上昇時は、Primary(上向き)及びSecondary(下向き) GPS共にカーボン製キャノピー並びにモーター周りのカーボン部材の直下にくるため、GPS衛星からの電波が遮断されるためと思われます。

2

GPSアンテナを2つ用いたフライトについて、前回は2つのGPSアンテナを上向きと下向きに配置しましたが、今回は共に上向きで両者並べて配置しました。まず、前回と同様緯度データは下図のようになりました。
画像1
前回の、2つのGPSアンテナを上向きと下向きに分けた場合に比較して、今回はほとんどのデータがPrimary(赤)とSecondry(緑)及びBlended(青)で一致しており、POS(ベージュ)のデータも当然ながらそれらと一致しています。但し、一カ所Primary,Secondary及びBlendedの緯度データがばらついている箇所があります。この部分を拡大したのが下図です。
画像1
カルマンフィルターを通した最終的な出力であるPOSの値(Flight Coachで使用)もこれら3つの値から大きく異なっています。その後POSの値はステップ状に上昇し、3つの値に近づきます。何故POSの値がこのような変化をするのかは不明です。フライトパスにもこの症状がはっきりと現れています。下図で示すように、背面になった辺りから機体の姿勢が示す方向とフライトパスがずれ始め、最終的に赤矢印のところでステップ状に大きく変化して元のフライトパスに戻っています。
画像1
"GPS Blending"機能を用いた場合のPOSデータの変化の挙動については、今後更に詳細に検討する必要がありそうです。

3

(つづき)
2つのGPSアンテナを共に上向きで並べて配置したときの、GPSの測定精度を示す各パラメータは下記の通りとなりました。
【GPS Blending】
[Primary]
NSats: 0(min.)~19.91(average)~23(max.)
HDop: 0.54~0.64~99.99
[Secondary]
NSats: 12~19.87~23
HDop: 0.54~0.58~0.83
[Blended]
NSats: 13~20.50~23
HDop: 0.54~0.57~0.81
XKF4_SV: 0~0.24~3.63
XKF4_SP: 0~0.19~3.92
XKF4_SM: 0~0.25~0.57
2つのGPSアンテナを上向きと下向きに分けた場合と比較すると、今回の共に上向きで並べて配置した場合の方がGPSの測定精度は、一部のパラメータを除き明らかに良くなっています。

4

今回もGPSアンテナを2つ上向きで並べて配置し、"GPS Blending"機能を使用してGPSエラー発生の有無を調べました。下図はLogファイルのPOSデータをGoogle Earth上に表示させたもので、各マヌーバを色分けして表示してあります。飛行機のアイコンはその位置における機体の姿勢を示しており、赤は機体の上面を、青は下面を表しています。フライトパス上の白い四角マークはPrimary GPSユニットにより補足された衛星の数が12未満となる位置を表しています。前回の同様の配置でフライトしたときと比べて大きなジャンプは無くなりましたが、下図の矢印で示すような小さなジャンプは未だ残っています。今回大きなジャンプが無くなったのは、GPSユニットの学習機能が働いたせいでしょうか。
画像1
 各GPSユニットから出力された緯度データを比較すると、下図のようになります。前回と同様、赤がPrimary、緑がSecondary、青がBlended GPSを表しており、ベージュがPOSデータであり、カルマンフィルターを通して最終的に出力される緯度データで、Plotterで描画するときに用いられるデータです。黄色い縦線はPrimary GPSのNSatsが0となり、HDopが99.99となる位置を示しています。
画像1
Primary GPSの測定精度が大きく悪化し、Blendする際のPrimaryとSecondaryの出力データの重みが変化したときの前後でジャンプが発生する様子が分かります。赤い矢印のジャンプの幅は距離に換算すると9.61mです。
 カーボン製キャノピーやモーター周りにカーボン部材を使用しているにもかかわらず、GPSアンテナが1つの場合に見られた大きなジャンプは、2つのGPSユニットを用いた"GPS Blending"機能を用いることによってほとんど見られなくなりました。ただし、小さなジャンプは未だ残っており、"GPS Blending"機能について更なる調査が必要です。

5

今回も前回と同様に、GPSアンテナを2つ上向きで並べて配置し、"GPS Blending"機能を使用してGPSエラー発生の有無を調べました。フライト回数を重ねるにつれて、システムの学習機能が効いているせいなのか、小さなジャンプも含めGPSによるエラーが少なくなっているように感じます。今回のフライトでは衛星捕捉数の最小値は9個、HDopの最大値は1.92(m)で、小さなジャンプやスライドも含めGPSによるエラーと思われるものは見当たりませんでした。
 下図は、Primary GPSのHDopと、Primary及びSecondary GPSの間の測定位置のズレDifference(m)の関係を示しています。HDopが大きくなる(測定精度が悪くなる)とズレも大きくなることが分かります。今回のフライトではズレの最大値は約25(m)でした。
画像1
 下図は、Primary及びSecondary GPSの衛星捕捉数の平均値と、両者間の測定位置のズレの関係を示しています。衛星捕捉数が減少すると両GPS間のズレは大きくなります。このように、ジャンプやスライドといった明らかに分かるGPSエラーが無い場合でも、衛星捕捉数が減少しHDopの値が大きくなった場合にはGPSの測定位置に誤差が生じている可能性があることを認識しておく必要があります。
画像1
 下図は、両GPSの衛星捕捉数の平均値とそれらの間の測定位置のズレに対するデータ数のHeatmap図です。図中の数値はデータ数を表しており、データ総数は1769個です。今回のフライトではほとんどのデータは右下、つまりNSatsで14個以上、ズレで7(m)以下の領域に集まっています。
画像1
 下図は、両GPS、ブレンドされたGPSそしてカルマンフィルターを通して最終的に出力されるPOS(Plotterで使用されるデータ)からの緯度、経度およびHDopの値を経過時間timeUS(sec)で表しています。POSデータ(オレンジ)は、Primary GPSのHDop(赤)が大きくなるとPrimary GPSからの出力データ(赤)から離れSecondary GPSからの出力データ(緑)に近づき、Secondary GPSのHDop(緑)が大きくなると今度はSecondary GPSからPrimary GPSのデータに近づくことが分かります。このように、両GPSの出力データ間をジャンプすることなく滑らかに移動しています。
画像1

6

(つづき)
 下図は、Primary GPS(青)、Secondary GPS(緑)、ブレンドされたGPS(黄)そして最終的なPOS(赤)から出力された飛行軌跡を比較して示しています。このように、機体内のほとんど同じ位置に設置してあるGPSでも機体の姿勢によって測定位置にズレが生じています。
画像1
 下図は、POSからのフライトデータをGoogle Earth上に表示したもので、各マークや表示文字の意味するところは以前説明したとおりです。フライトパス上の白い四角マークはPrimary GPSの衛星捕捉数が12未満となる位置を表していますが、前述の通り今回のフライトでは衛星捕捉数は9個以上となります。白い四角マークとフライトパスが少しずれているところもありますが、これは四角マークはPrimary GPSの位置であり、フライトパスはPOSの位置であるためです。衛星捕捉数が少なくなるときの機体姿勢は、ほとんどが背面あるいは垂直上昇の姿勢で、これはGPSアンテナを1個搭載した場合と同じ傾向です。
画像1
 以上の解析結果から、GPSアンテナを2つ上向きで並べて配置し"GPS Blending"機能を使用した場合、衛星捕捉数が9個以上、HDopが2.0(m)以下であれば、両GPSのデータが両者の測定精度にしたがって滑らかにブレンドされ、最終的に出力される飛行軌跡もジャンプすることなく滑らかに両GPSの測定位置間を移動することが分かりました。