2012-07-27 8 views
10

GPSロギングアプリケーションの作成〜AndroidのGPS場所スピード信頼できない

私はLocationManagerによって報告LocationsgetSpeed()メソッドによって返される値は、大規模な信頼できない見つけることです。私はLocationManager.GPS_PROVIDERを使用しており、最高の精度のためにonLocationChangedによって提供される場所をフィルタリングしています。 1桁の精度レベルであっても、返される速度は概して非常に高いです。私たちは、電話が停止しているときに最大200 mp/h(はい、メートル/秒で記録されていることを知っています)を話しています。

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; 
     } 
} 
+0

を提供あなたにも*異なる*場所でこれを試したことがありますか?いくつかの場所では、あなたは何があってもGPS修正を取得しません。 – Piskvor

+0

私は指定しておくべきです、私は非常に受け入れられるくらい正確な修正を受けています - 典型的には5-10メートルです。場所は可能な限り多様です - 事務所から顧客のサイトや家などへの移動 –

+0

@DanWray hai、この問題を解決しましたか、今でも同じことに苦労しています。 –

答えて

22

私は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未満の値は有効な値ではありません。ステレオライトの数が多い場合は、データの妥当性についてはるかに自信があります。
+3

便利です。私は長い間GPSアプリケーションを扱ってきましたが、私が通常使う精度の最初の指標は衛星数です。 Androidの場合、getExtras()メソッドを使用して衛星カウントが利用可能であることが見落とされていました。私はあなたのコメントを考慮に入れ、コードを改善しようとします、ありがとう。 –

+2

非常に真です。 Androidのドキュメントでは、locaitonプロバイダの仕組みや、非圧縮の場所をフィルタリングする方法についても非常に詳しく説明しています。 http://developer.android.com/guide/topics/location/strategies.html –

+0

よく書かれた点..(Y) – Farhan

1

GPSデバイスは、受信 が最後の測定以来移動したどの程度に基づいて、位置速度計です。その速度計算は、車の速度計 (車輪のサイズ、送信/ドライブ比)と同じ誤差源の対象である ではありません。代わりに、GPSの位置 の精度、したがって計算された速度の精度は、その時点の衛星信号品質に応じて になります。速度 の場合、位置の変化に対する位置誤差の比率が低い場合、より高速で計算するほうが正確になります。

出典:フリー百科事典「ウィキペディア(Wikipedia)」。

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

+0

ご理解いただき、ありがとうございます。私はこの同じアプリケーションをBlackberryの携帯電話やWinMoやWP7で動かすために書いてきました。コードからわかるように、私は25m未満の精度でポジションを受け入れず、通常、携帯電話が外にあり、動いているとき(すなわち、スピードが必要なとき)、精度は10m未満です。この精度のレベルでは、少なくとも正確な大きさのスピード値を期待しています。 –

+0

携帯電話の違いを認識していませんが、別の場所を試したときにiPhoneで同じ問題が発生しました。 GPSの精度が数メートルの場所では、速度は非常に良い精度が得られましたが、正確に50メートルだった場所では、速度の精度は非常に悪かったです。見積もりと同じように、位置推定に完全に基づいており、速度は直前の位置推定と現在の位置推定と時間差によって計算されます。 – codetiger

+0

しかし屋外の屋外では非常に良好でした。 – codetiger

1

同じ問題が発生しています。私はGPS信号が場所に依存していると考えていますが、ある場所では正確ではない場所の出力が得られるかもしれません。私の場合、私は実際の場所から約200メートル離れていました。あなたはどう?

追加するには、私のエリアでGPS_PROVIDERは機能しません。 NETWORK_PROVIDERはそうです、それは200メートル離れた結果​​を与えるものです。

+0

GPS_PROVIDERを使用できるのは幸いですが、NETWORK_PROVIDERを使用しても、200mよりも正確な修正を確認することができました。あなたはある期間、あなたのリスナーを見てみて、より良い精度を探しましたか?上記の私のコードと幾分似ています。もちろん、ネットワーク/ Wi-Fiカバレッジは世界中のさまざまな地域で大きく異なるため、あなたの経験は多少私のものとは多少異なる場合があります。 –

+0

はい、私は最高のプロバイダ、最高の精度と最高の基準を取得しようとしましたが、私はGPS_PROVIDERを使用しても、結果は返されません。 – JetPro

0

GPSからの速度情報は、時間の相違に関連する位置の比較に基づいていると思われます。この方法は、速度を決定するのにはあまり適しておらず、移動速度が遅いほど悪くなります。

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

gpsスピードドップラーでGoogleを読むと、たくさんの読み物が見つかります。

1件のリンクがここにある

http://nujournal.net/HighAccuracySpeed.pdf

/都市Holmdahl

0

GPSが失敗した場合.. は現在、HTML5ジオロケーションAPIに http://diveintohtml5.info/geolocation.html

+0

スレッドはアンドロイドアプリに関連しており、APIはHTMLではありません5 –

関連する問題