以下のコードは正常に動作しているようです。
// GPS Reader // Criteria Criteria criteria = new Criteria(); //criteria.setAccuracy(Criteria.ACCURACY_COARSE); // Used when we can't get a GPS Fix criteria.setAccuracy(Criteria.ACCURACY_FINE); // Used when we can get a GPS Fix criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW); LocationListener locationListener = new MyLocationListener(); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(lm.getBestProvider(criteria, true), 0, 0, locationListener);
ただし、Google マップで収集したデータをグラフ化すると、GPS 座標が非常に散らばっている場合や、見つけたばかりの歩いている道に沿って進んでいると、突然 1 マイル離れた地点に移動する場合があります。そして戻る。これを修正する方法はありますか?ある種の精度チェックだと思いますか?
更新:
基本的に私の問題は例として次のようになります - GPS Jitter
更新 2 :
私はこれを報奨金にしないことを考えましたが、ここで何が起こっているのかを完全に理解し、私のアプローチが過剰ではないかどうかを確認したほうがよいと考えました. 3mの精度があるにもかかわらず、座標にジッターがあるという同じ問題がまだあります。これは、利用可能な衛星などに関係している可能性があります。わかりませんが、基本的には方法を理解しようとしていますこれらの他のすべてのアプリケーション、特に運動アプリは、同じ状況下でこれほどスムーズな読み取りを行うことができますか?
私は Quora を使用していて、これを見つけることができました 残念ながら、必要に応じてカルマンフィルターを使用できることを除いて、私の問題についてあまり洞察を得ることができませんでしたが、世の中のほとんどのアプリがこれを実装しているとは思えないため、複雑ではない手段が必要です。
とにかく、仲間の開発者が彼らが何をしているのかをいくつかの疑似コードで共有したいのであれば、それは大歓迎です. 私がカルマンにこだわっているなら、私はそうですが、アルゴリズムを実装するのがより簡単でなければならないと確信しており、それらとそれらを実装する方法を学びたいと思っています。
コンテキスト: これはモバイル歩行者アプリケーションです。
関連する SO の質問 から情報を収集しようとしまし た 一連の GPS 座標から滑らかな曲線を作成します 滑らか な gps データ: これは良いスタートでしたが、最小二乗法を適切に取得するためにどの擬似コードを実装する必要があるかわかりません適切に動作して、スプライン GPS データを取得し、それを Google マップなどで表示して、正しく実行したことを確認できます。問題は、これが私が扱っていた一般的な X および Y データであり、GEO 座標ではない場合、matlab テストで何かを書き込んで続行できることだと思います。
アップデート 3
受信しているめちゃくちゃな GPS データの画像 https://www.dropbox.com/s/ilsf8snao2no65e/gpsdata2.png