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.
źródło
Odpowiedzi:
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:
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.
źródło
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.
źródło
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ć.
źródło
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.
źródło
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.
źródło