Wykrywanie „braku ruchu” na urządzeniu GPS

21

Używamy urządzenia śledzącego GPS zamontowanego w pojazdach, a następnie wyświetlamy ruchy w naszej aplikacji. Mamy jednak niewielki problem z pojazdami, gdy NIE są one w ruchu.

Pomimo stania w miejscu urządzenie GPS wysyła informacje o różnych pozycjach, czasem nawet zgłosi pojazd w ruchu (co jakiś czas zgłasza, że ​​pojazd porusza się dość szybko). Efektem końcowym jest brzydka reprezentacja ruchu w naszej aplikacji i, co gorsza, niepoprawne obliczenia dotyczące tego, jak długo pojazd poruszał się i stał w bezruchu (trwa również analiza statystyczna).

Wiem, że problem nie jest nowy: Nawigacja Google na moim telefonie z Androidem ma również problemy, gdy co jakiś czas zatrzymuję się na skrzyżowaniu, wykrywając, że jadę teraz w przeciwnym kierunku (gdy w rzeczywistości stoję w miejscu ).

Ale naprawdę potrzebujemy metody informowania pojazdu, że pojazd się nie porusza, szczególnie przez dłuższy czas.

Problem jest spotęgowany w niektórych pojazdach, które są trzymane pod dachem na noc, co powoduje, że GPS szaleje z powodu słabszego sygnału (który wciąż jest wystarczająco silny, aby uzyskać pozycję).

Możemy wykryć, czy silnik pojazdu jest włączony, czy wyłączony, ale nie możemy założyć, że nie porusza się on z wyłączonym silnikiem (zdarzały się wypadki, gdy holowany był uszkodzony pojazd ... i oczywiście istnieje przypadek potencjalnej kradzieży, który również musi zgłaszane).

Jaki jest najlepszy sposób rozwiązania tego problemu?

EDYTOWAĆ:

Aby dodać więcej informacji:

  • Urządzenie GPS ma akcelerometr, ale zwraca tylko informacje binarne (ruch / ruch) i jest albo ZBYT wrażliwy, albo po prostu zwykły nie działa.

  • Mamy dostęp do takich informacji, jak liczba satelitów lub jakość, ale nie jesteśmy pewni, jak wykorzystać te informacje. Tak więc moje pytanie. :)

  • Problemem nie jest wykrycie, czy pojazd się porusza, czy nie w czasie rzeczywistym. Gromadzimy dane, a następnie przeprowadzamy analizy statystyczne i wyświetlamy je. Pokazujemy aktualną pozycję pojazdu, ale ma to niewielkie znaczenie. Zasadniczo więc musimy być w stanie stwierdzić, że pojazd poruszał się lub nie, patrząc na dane historyczne.

Shaamaan
źródło
7
jeśli masz zintegrowany akcelorometr ze swoim trackerem, możesz wykorzystać dane akcelerometru, aby wykryć, czy pojazd naprawdę się porusza, a jeśli nie, możesz wyłączyć śledzenie GPS.
geogeek
2
Czy twoje urządzenie GPS rejestruje jakość sygnału, liczbę satelitów, tego rodzaju dane? Wygląda też na to, że „później wyświetlisz ruchy ...”, więc czy mógłbyś potwierdzić, że nie jest to problem z wykrywaniem w czasie rzeczywistym , a raczej coś, co później przefiltrujesz podczas przetwarzania?
Simbamangu,
Zredagowałem swoje pytanie, aby podać więcej informacji. W skrócie: akcelerometr działa szalenie, mamy dostęp do liczby satelitów lub informacji o jakości, ale nie jesteśmy pewni, jak ich używać, i tak, to NIE jest problem z wykrywaniem w czasie rzeczywistym.
Shaamaan,
2
Na stronie statystyk znajdziesz przydatne rekomendacje dotyczące wykrywania wartości odstających i wygładzania .
whuber
1
Geofence - gdy pojazd znajduje się w strefie (tj. Garaż, nie zapisuj
Mapperz

Odpowiedzi:

5

Komentarze poniżej twojego pytania przynoszą kilka dobrych argumentów, zwłaszcza na temat interpretacji jakości danych satelitarnych (liczba satelitów, siła sygnału), i możesz użyć tych informacji na urządzeniu mobilnym lub na serwerze, aby odfiltrować „złe” wartości GPS. Pytanie sprowadza się do dwóch części: 1) jak zdefiniować fałszywy odczyt GPS oraz 2) jak zdefiniować stan stacjonarny.

Zacznijmy od kilku parametrów:

  • stationary_speed = jeśli jednostka mobilna porusza się wolniej niż to, to jest nieruchoma
  • too_fast = jeśli jednostka mobilna jedzie szybciej niż ta, to podała fałszywy odczyt GPS

Dokładne obliczenie tych prędkości jest trudne. Powiedz, że obliczasz prędkość jako / pomiędzy poprzednim odczytem (w t0) a bieżącym odczytem (w t1). Jeśli delta czasowa jest duża, a jednostka okrąża krzywą, wówczas rzeczywista przebyta odległość będzie większa niż odległość obliczona. Ponadto, jeśli otrzymujesz dwa fałszywe odczyty z rzędu, a są one wystarczająco blisko siebie, możesz uzyskać nieprzewidywalne wyniki.

Gdy uzyskasz prędkość, po prostu porównaj ją z parametrami, aby sprawdzić, czy odczyt GPS jest fałszywy lub czy urządzenie jest nieruchome.

Możesz przeprowadzić bardziej zaawansowane filtrowanie za pomocą filtrów Kalmana , ale może to być znacznie bardziej wymagające.

katahdin
źródło
Urządzenie GPS zwraca liczbę danych z każdym wysłanym pakietem, w tym pozycję i aktualną prędkość. Mamy już system, w którym, jeśli prędkość jest niższa niż pewna wartość, zakładamy, że pojazd się nie porusza, jednak zdarzają się przypadki, w których pojazd będzie wysyłał dane z prędkościami przekraczającymi ten próg, mimo że jest nadal (uwaga: te prędkości nie są tak świetne, że moglibyśmy dodać górny limit). Nie jestem pewien, czy obliczanie prędkości na podstawie pozycji (zamiast odczytu GPS) jest dobrym pomysłem.
Shaamaan,
2

Udało nam się ulepszyć dane czujnika ruchu.

Korzystając z danych czujnika ruchu, danych zapłonu i prędkości zgłaszanych przez urządzenie śledzące GPS, powinniśmy być w stanie stwierdzić, kiedy pojazd się porusza, czy nie, z dość dobrą dokładnością.

Przyjrzeliśmy się również liczbie satelitów i to nie wyglądało dobrze. Podczas gdy liczba satelitów była niższa dla pojazdu pod dachem, wciąż była stosunkowo wysoka. 9-10 to zwykła wartość dla takiego pojazdu, podczas gdy pod dachem spada do 7 (ale czasami może uzyskać sygnał i również się podnieść). Nie trzeba dodawać, że liczba satelitów okazała się mniej niż użyteczna.

Shaamaan
źródło
Informacje te są nadal przydatne do określenia błędnych danych. Na tej podstawie wykonuję wiele „poprawnych” filtrowań. 9 jest wciąż wysoki, czy jesteś pewien, że układ nie powtórzy ostatniej znanej wartości, mają tę funkcję na pokładzie i jest włączony przez większość czasu.
Glenn Plas,
Główny problem dotyczy pojazdów, które są przechowywane w jakiejś szopie na noc. Nie wydaje mi się, żeby powtarza ostatnią znaną pozycję, ponieważ pojazdy znikną całkowicie, jeśli wejdą / będą przechowywane w betonowych garażach (lub czymkolwiek bardziej solidnym). Spadek satelitów jest wskaźnikiem, ale wydaje się subtelny i okazało się, że o wiele łatwiej jest po prostu dostosować i użyć danych z czujnika ruchu.
Shaamaan,
Nie w przypadku ponad 3000 pojazdów, które śledzę, potrzebujesz liczby satsów użytych do naprawy, a nie tych widocznych. Te mogą pozostać wysokie, gdy masz dach, który wciąż przepuszcza sygnał. Ale poprawka jest dobrym wskaźnikiem, wraz z wartościami wzmocnienia Db.
Glenn Plas,
Mogę doskonale powiedzieć, które są w jakimś garażu. Nie cierpię też na problem pająka, ponieważ uwięziony jest w nim stan ruchu / braku ruchu. Zgadzam się, że czujniki dają o wiele więcej do zrobienia.
Glenn Plas,
1
Jest całkiem możliwe, że mój kolega przez pomyłkę ustawił liczbę widocznych satelitów zamiast liczby użytej do poprawki (wszystko, co widziałem, to arkusz Excel z danymi z tytułami kolumn wypełnianymi ręcznie). : P W każdym razie, jak napisałem, dostrojony czujnik ruchu był naszą drogą wyjścia z tego problemu.
Shaamaan,
2

Możesz użyć liczby satów użytych do ostatniej poprawki, a nie tych widocznych. Na przykład. Widok = 11, Poprawka = 5 I użyj wartości Max DB sygnału najsilniejszego sat. Musi to być ponad 30Db, aby uzyskać przyzwoity sygnał.

Urządzenia, których używamy, mają pojęcie ruchu / nieruchome, czujniki to: Przyspieszenie, wibracje, napięcie wejściowe, sygnał wejściowy (z klucza), dane GPS. Aby raportować pozycje takie jak start / stop (na podstawie zdarzeń) oraz zdarzenia dotyczące kierunku / odległości, urządzenie musi znajdować się w trybie ruchu (jest to licznik odliczający, konfigurowalny).

Czujniki mają możliwość łączenia. Żadne zdarzenia dotyczące kierunku / odległości ani liczniki nie są zgłaszane, gdy znacznik ustala, że ​​nie jest w trybie ruchu. Gdy czujniki biorą udział w zatrzymywaniu raportowania, licznik czasu odlicza do zera, a następnie generowane jest zdarzenie zatrzymania + urządzenie przechodzi w tryb nieruchome. Aż do następnego razu. W ten sposób można oddzielić wartości początkowego przyspieszenia silnika, aby „wprowadzić” go w tryb ruchomy, oraz osobny dolny próg dla „utrzymania” go w trybie ruchomym, ponieważ oba są bardzo różnymi wzorami przyspieszenia.

Jednostki, których używamy, będą zgłaszać, jeśli punkt zostanie wykorzystany ze złymi danymi sat, nie jestem pewien, czy twój sprzęt to robi. Mamy SV_Position lub SV_KeepAlive lub SV_TimeAlive. Keepalive powtórzy dokładnie ostatnią wartość, ponieważ GPS nie może zaktualizować swoich tabel ani uzyskać dokładnej poprawki, nawet złej. TimeAlive zobaczysz, gdy przejdziesz przez tunel lub ktoś zaparkował w garażu.

Jednym ze sposobów monitorowania jest to, że jest to częściowo domniemane zgadywanie i zależy od rodzaju śledzonych zasobów, jakim jest napięcie zasilające. na przykład. urządzenie działające na 12:30 jest samochodem, którego silnik nie pracuje. Jeśli widzisz taki, który zgłasza 14.2v, wiesz, że jego alternator się kręci. W przypadku pojazdów 24v istnieje podobny wzór do wykrycia.

Mam nadzieję, że daje to kilka pomysłów. Wszystko zależy trochę od tego, jak dobry jest sprzęt. Źródło danych zaczyna się tam, a cała reszta jest tak dobra, jak to tylko możliwe. Ale zdecydowanie zachęcam do korzystania z możliwości jednostek w celu rozróżnienia jakości zamiast robienia tego na wszystkich serwerach (z perspektywy czasu). Kiedy zrobisz 3000 jednostek, będziesz potrzebować mocnego serwera, aby stale analizować wszystkie dane śledzenia, więc do tego czasu zdasz sobie sprawę, że nie będzie się skalować.

Glenn Plas
źródło
1
Muszę skomentować pomysł zbierania napięć. To jest świetne! Mamy pewne problemy z niektórymi pojazdami i nie jesteśmy pewni, dlaczego. Obecnie podejrzewamy, że przyczyną mogą być słabe umiejętności technika, który zamontował urządzenia śledzące, co powoduje problemy z napięciem, chociaż może to być również sabotaż (tak, sabotaż; monitorujemy poziom paliwa i kierowców nie lubię tego). Jeśli możemy zarejestrować napięcie na urządzeniach śledzących, powinno to ogromnie pomóc. :) Ogromne kciuki do góry! (Dałbym więcej niż jeden, ale niestety nie mogę ...)
Shaamaan,
Działa z każdym pojazdem, który nie ma regulatora napięcia między urządzeniem śledzącym. Sprawdź to łącze w programie konfiguracyjnym KCS, to jest jednostka, o której mówię, po prostu uruchom ją i zobacz, co możesz zrobić w zakresie wykrywania ruchu, będziesz zaskoczony. Pobierz to , to jest najnowsze oprogramowanie jednostek revision9. Pomysł na napięcie jest ich. Zobaczysz tam kilka dobrych ustawień domyślnych (ciężarówka / samochód / silnik)
Glenn Plas,
Liczba satów jest złym wskaźnikiem, naprawdę chcesz, aby liczba satów wykorzystała ostatnią poprawkę (to jest wartość, na którą patrzysz, nie jest to wskaźnik obecnej sytuacji), chociaż liczba satów pozwoli ci określ absolutnie złe punkty, nie pomoże ci to w szarej strefie, np. mierne próbki jakości. Musisz połączyć różne czujniki. Obliczanie prędkości w istocie robi to samo, co już teraz twój układ GPS, a także ta jakość zależy od liczby pobranych próbek (drogi nie są wszędzie proste) i ich dokładności. Problem z jajami kurzymi
Glenn Plas
0

Miałem podobny problem podczas używania rejestratora GPS do śledzenia skutera. To, co zrobiłem, to nałożenie śladu GPS na warstwę drogi i ręczne usunięcie błędnych lokalizacji na skrzyżowaniu lub światłach lub w ich pobliżu. Jestem pewien, że istnieją zautomatyzowane narzędzia, które sobie z tym poradzą, prawdopodobnie buforują wokół skrzyżowań i obliczają minimalny i maksymalny czas wejścia i wyjścia z tego bufora.

HDunn
źródło
1
Ponieważ pojazdy są problematyczne, gdy nie poruszają się na parkingach lub w garażach, nie jest to wcale przydatne. :(
Shaamaan,
0

Terminem w tej dziedzinie jest pająk . Powszechnym podejściem jest po prostu próbkowanie tylko wtedy, gdy poprawka jest 10 m od poprzedniej poprawki. Na przykład urządzenia przenośne Garmin rejestrują poprawki na podstawie odległości, podczas gdy zegarki fitness zapisują poprawki na podstawie czasu . Urządzenia ręczne nie pająków bardzo, ale zegarki.

Sarge
źródło
Terminem na to jest Błąd wielościeżkowy
ruruskyi