14

GPSロギングアプリケーションの作成~

によって報告されたgetSpeed()メソッドによって返される値が非常に信頼できないことがわかりました。最高の精度を得るために、提供された場所をフィルタリングして使用しています。1 桁の精度レベルであっても、返される速度は一般的に途方もなく高速です。電話が静止している場合、最大 200 mp/h (メートル/秒でログに記録されていることは知っています) まで話しています。LocationsLocationManagerLocationManager.GPS_PROVIDERonLocationChanged

2 つの異なるモデルの Android スマートフォンで同じコード ベースをテストしており、2 つの異なる OS バージョンを実行していて、同じ問題が発生しているため、これはコードの問題であると考えられます。

私は何が欠けていますか?時間枠で場所を平均化しようとしましたが、役に立ちませんでした。移動距離/時間に基づいて独自の速度値を計算する必要がありますか? これはがっかりするでしょう。

ご覧のとおり、私は特別なことは何もしていません。位置の精度が良好な場合でもAverageSpeed、この両方の後でも、精度のために少しフィルタリングしています。_bestLocation.getSpeed()

public void onLocationChanged(Location location) {
    if (location.getAccuracy() < 25f) {
        _recentLocations.add(location);

        if (_bestLocation == null || location.getAccuracy() <= _bestLocation.getAccuracy())
            _bestLocation = location;
    }

    if ((_bestLocation != null && _bestLocation.getAccuracy() < 10f && _recentLocations.size() >= 10)
            || _recentLocations.size() >= 25)
    {
        int Count = 0;
            float TotalSpeed = 0f;
            float AverageSpeed = 0f;
            for (int i = 0; i<_recentLocations.size(); i++) {
                if (_recentLocations.get(i).hasSpeed()) {
                    Count++;
                    TotalSpeed += _recentLocations.get(i).getSpeed();
                }
            }

        if (Count > 0)
                AverageSpeed = TotalSpeed / Count;
        }
}
4

4 に答える 4

31

私はGPSハードウェアに7年以上取り組んできました。精度の読み取りも100%正確ではありません。メーカーは、それを測定するために使用されるシステムとともに精度を述べています。CEP、RMS、2DRMS、およびR95はシステムの一部です。詳細については、この記事をお読みください:http: //en.wikipedia.org/wiki/Circular_error_probable

精度の数値には外れ値は含まれていません。たとえば、精度が5メートルと記載されている場合、良好な信号状態で取得された読み取り値の最大誤差は5メートルで、95%の時間になります。残りの5%の測定値について、または悪い信号状態で取得された測定値については何も言えません。これらの外れ値に対する保護は、優れたロケーションベースのアプリを他のアプリから際立たせる特別なソースです。

できることは次のとおりです。

  1. めちゃくちゃ高速を除外します。飛行機に乗る際のヒントとして高度を利用してください。
  2. モーションセンサーからの情報を相関させ、GPSと一致するかどうかを確認します。モーションセンサーのシグネチャは、定常状態とモーションで大きく異なります。
  3. GSM / 3Gセルの一般的なサイズは、都市部では1キロメートル未満、人口の少ない地域では5〜10キロメートルです。車両がしばらく高速で移動していて、セルタワーの情報が同じである場合は、何かが間違っていることがわかります。
  4. GPS修正は、ある瞬間に北を読み取り、次の瞬間に南を高速で読み取りますか?はいの場合、GPSエラーである可能性があります。
  5. GPS計算に使用されている衛星の数を確認してください。12は優れており、9は正常、5以下は不良、4は緯度、経度+高度の計算では最低限、3は緯度、経度の計算では最低限です。3未満のものは、有効な読み取り値ではありません。衛星の数が多い場合は、データの有効性についてはるかに自信を持つことができます。
于 2012-07-27T11:23:35.363 に答える
1

GPS デバイスは、最後の測定以降に受信機が移動した距離に基づく位置速度計です。その速度計算は、車両の速度計 (ホイール サイズ、トランスミッション/ドライブ比) と同じ誤差要因の影響を受けません。代わりに、GPS の位置精度、つまり計算された速度の精度は、その時点の衛星信号の品質に依存します。位置変化に対する位置誤差の比率が低い場合、速度計算は高速でより正確になります。

ウィキペディアより。

おそらく、信号強度が良好な場所でこれを試してみてください。

于 2012-07-27T10:27:41.773 に答える
1

同じ問題が発生しています。GPS信号は場所に依存すると思います.場所によっては正確な場所の出力が得られる場合があり、そうでない場合は「あまり信頼できない」結果になります. 私の場合、実際の場所から約 200 メートル離れた場所にいました。君はどうでしょう?

追加するには、私の地域では GPS_PROVIDER が機能しません。NETWORK_PROVIDER はそうであり、200 メートル離れた結果​​を提供するのは NETWORK_PROVIDER です。

于 2012-07-27T10:38:12.747 に答える
0

GPS からの速度情報は、時差に関連する位置の比較に基づいていると多くの人が想定しているようです。この方法は、速度を決定するのにはあまり適しておらず、移動速度が遅い場合は悪化します。

GPS 受信機は、衛星測定値からのドップラー シフトに基づいて速度測定値を出力できます。ドップラーに基づく速度測定の精度は、位置/時間計算に基づく速度測定に比べてはるかに優れています。

gps 速度ドップラーで Google を検索すると、読み物がたくさん見つかります。

1 つのリンクはここにあります: http://nujournal.net/HighAccuracySpeed.pdf

/都会のホルムダール

于 2013-12-12T16:34:05.050 に答える