Prędkość lokalizacji GPS Android niewiarygodne

Pisanie aplikacji rejestrującej GPS ~

Stwierdzam, że wartości zwracane metodą getSpeed() na Locations zgłoszone przez LocationManager są masowo niewiarygodne. Używam LocationManager.GPS_PROVIDER, filtruję lokalizacje dostarczone przez onLocationChanged dla najlepszej dokładności. Nawet przy jednocyfrowych poziomach dokładności zwracana prędkość jest na ogół śmiesznie wysoka. Mówimy do 200 mp / h (tak Wiem, że jest zalogowany w metrach/s), gdy telefon stoi.

Testuję ten sam kod na dwóch różne modele telefonów z Androidem, z dwoma różnymi wersjami systemu operacyjnego i widząc te same problemy, więc spodziewam się, że jest to problem z kodem.

Co mi umyka? Próbowałem uśredniać lokalizacje przez okno czasu, bez skutku. Czy będę musiał wypracować własne wartości prędkości na podstawie przebytej odległości / czasu? To byłoby rozczarowujące.

Jak zobaczysz, nie robię nic specjalnego - trochę filtrowania dla dokładności, nawet po tym zarówno AverageSpeed, jak i _bestLocation.getSpeed() są regularnie niewykonalne wysoka, nawet gdy dokładność lokalizacji jest dobra.

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;
        }
}
Author: galath, 2012-07-27

4 answers

Pracuję nad sprzętem GPS od ponad 7 lat. Odczyt dokładności również nie jest w 100% dokładny. Producenci podają dokładność wraz z systemem używanym do jej pomiaru. CEP, RMS, 2DRMS i R95 to niektóre z systemów. Przeczytaj ten artykuł, aby uzyskać więcej informacji: http://en.wikipedia.org/wiki/Circular_error_probable

Liczba dokładności nie zawiera wartości odstających. Na przykład, jeśli podana dokładność metrów 5 to odczyty wykonane w dobrych warunkach sygnału będą miały maksymalny błąd 5 metrów, 95% czasu. Nic nie można powiedzieć o pozostałych odczytach 5% lub o odczytach wykonanych w złych warunkach sygnału. Ochrona przed tymi odstającymi jest specjalny sos, który sprawia, że dobra aplikacja oparta na lokalizacji wyróżnia się od reszty.

Niektóre rzeczy, które możesz zrobić to:

  1. odfiltrować szalenie wysokie prędkości. Wykorzystaj wysokość jako wskazówkę do bycia w samolocie.
  2. skoreluj informacje z czujników ruchu i sprawdź, czy zgadzają się z GPS. Ruch sygnatury czujników będą bardzo różne w stanie stacjonarnym i w ruchu.
  3. typowy rozmiar komórki GSM / 3G jest poniżej kilometra w mieście obszarów i 5-10 km na słabo zaludnionych obszarach. Jeśli pojazd porusza się z dużą prędkością przez jakiś czas, a Wieża komórkowa informacje są nadal takie same, wiesz, że coś jest nie tak.
  4. czy poprawka GPS odczytuje Północ w jednej chwili, a południe w następnej, że też z dużą prędkością? Jeśli tak, najprawdopodobniej jest to błąd GPS.
  5. sprawdź liczbę Satelity wykorzystywane w obliczeniach GPS. 12 jest wybitny, 9 jest zdrowy, 5 lub mniej jest biedny, 4 jest minimum dla lat , lon + wysokość obliczenia, 3 to minimum dla obliczeń lat,lon. Cokolwiek mniej niż 3 nie jest poprawnym odczytem. Możesz być znacznie bardziej pewny o ważności danych, jeśli liczba satelitów jest wysoka.
 28
Author: Dojo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-07 11:48:20
Urządzenia GPS to prędkościomierze pozycyjne, oparte na odległości odbiornika poruszył się od ostatniego pomiaru. Jego obliczenia prędkości nie są z zastrzeżeniem tych samych źródeł błędów co prędkościomierz pojazdu (rozmiar koła, przełożenia skrzyni biegów/napędu). Zamiast tego pozycjonowanie GPS dokładność, a zatem dokładność jej obliczonej prędkości, jest w zależności od jakości sygnału satelitarnego w tym czasie. Prędkość obliczenia będą dokładniejsze przy wyższych prędkościach, gdy stosunek z błąd pozycyjny do zmiany pozycyjnej jest niższy.

Z Wikipedii.

Prawdopodobnie powinieneś spróbować tego w miejscu, gdzie masz dobrą siłę sygnału.

 1
Author: codetiger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-27 10:27:41

Mam ten sam problem. Myślę, że sygnał GPS zależy od lokalizacji, niektóre lokalizacja może dać dokładne wyjście lokalizacji inaczej "nie tak wiarygodne" wynik. W moim przypadku znajdowałem się około 200 metrów od mojej rzeczywistej lokalizacji. A Ty?

Aby dodać, GPS_PROVIDER nie działa tutaj w mojej okolicy. NETWORK_PROVIDER robi, i to ten, który daje wynik 200 metrów.

 1
Author: JetPro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-27 10:38:12

Wydaje się, że większość ludzi zakłada, że informacja o prędkości z GPS opiera się na porównaniu pozycji związanych z różnicą czasu. Metoda ta nie jest zbyt dobra do określania prędkości i jest gorsza przy niższych prędkościach jazdy.

Odbiorniki GPS mogą wyprowadzać pomiar prędkości na podstawie przesunięcia Dopplera z pomiarów sattelite. Dokładność pomiaru prędkości w oparciu o Dopplera jest znacznie lepsza w porównaniu z pomiarami prędkości w oparciu o obliczenia pozycji/czasu.

Google na gps speed doppler i znajdziesz wiele do czytania.

Jeden link jest tutaj: http://nujournal.net/HighAccuracySpeed.pdf

/Urban Holmdahl

 0
Author: Urban Holmdahl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-12 16:44:59