Rilevamento della "mancanza di movimento" sul dispositivo GPS


21

Stiamo utilizzando un dispositivo di localizzazione GPS montato su veicoli e successivamente visualizziamo i movimenti nella nostra applicazione. Stiamo riscontrando un piccolo problema con i veicoli quando NON si muovono.

Nonostante sia fermo, il dispositivo GPS invierà informazioni con posizioni diverse, a volte segnalerà persino che il veicolo si sta muovendo (ogni tanto segnalerà che un veicolo si sta muovendo abbastanza velocemente). Il risultato finale è una brutta rappresentazione del movimento nella nostra applicazione e, peggio, calcoli errati per quanto riguarda il tempo in cui il veicolo è stato in movimento e è rimasto fermo (abbiamo anche alcune analisi statistiche in corso).

So che il problema non è nuovo: Google Navigation sul mio telefono Android ha anche problemi quando mi fermo a un incrocio di tanto in tanto, rilevando che sto guidando nella direzione opposta (quando in realtà, sto fermo ).

Ma abbiamo davvero bisogno di avere un metodo per dire che il veicolo non si muove, specialmente per periodi di tempo prolungati.

Il problema si aggrava in alcuni veicoli che sono tenuti sotto i tetti per la notte, il che provoca il GPS a scatenarsi a causa di un segnale più debole (che è comunque abbastanza forte da ottenere una posizione).

Siamo in grado di rilevare se il motore del veicolo è acceso o spento, ma non possiamo supporre che non si muova con il motore spento (ci sono stati incidenti in cui è stato rimorchiato un veicolo danneggiato ... e ovviamente c'è un caso di potenziale furto che deve anche essere segnalato).

Qual è il modo migliore per affrontare questo problema?

MODIFICARE:

Per aggiungere qualche informazione in più:

  • Il dispositivo GPS ha un accelerometro, ma che restituisce solo informazioni binarie (in movimento / non in movimento) ed è TROPPO sensibile o semplicemente non funziona.

  • Abbiamo accesso a cose come il numero di satelliti o la qualità, ma non siamo sicuri su come utilizzare tali informazioni. Quindi la mia domanda. :)

  • Il problema non riguarda il rilevamento di un veicolo in movimento o meno in tempo reale. Raccogliamo i dati e successivamente eseguiamo alcune analisi statistiche e li visualizziamo. Mostriamo la posizione attuale del veicolo, ma questo è di scarsa importanza. Quindi, in sostanza, dobbiamo essere in grado di dire che un veicolo era o non si muoveva guardando i dati storici.


7
se hai un accelorometer integrato nel tuo tracker, puoi sfruttare i dati dell'acceleometer per rilevare se il veicolo è veramente in movimento e puoi disattivare il tracciamento GPS se non è in movimento.
geogeek,

2
Il dispositivo GPS registra la qualità del segnale, il numero di satelliti, quel tipo di dati? Inoltre, sembra che "visualizzerai in seguito i movimenti ...", quindi potresti confermare che non si tratta di un problema di rilevamento in tempo reale , piuttosto di qualcosa che filtrerai in seguito durante l'elaborazione?
Simbamangu,

Ho modificato la mia domanda per fornire ulteriori informazioni. In breve: l'accelerometro si comporta in modo folle, abbiamo accesso al conteggio dei satelliti o alle informazioni sulla qualità, ma non siamo sicuri su come usarli, e sì, questo NON è un problema di rilevamento in tempo reale.
Shaamaan,

2
Troverai alcuni consigli utili sul sito delle statistiche relativi al rilevamento di valori anomali e al livellamento .
whuber

1
Geofence - quando un veicolo si trova in una zona (ad esempio garage, quindi non registrare la posizione) - androidzoom.com/android_applications/geofencing
Mapperz

Risposte:


5

I commenti sotto la tua domanda sollevano alcuni punti positivi, in particolare sull'interpretazione della qualità dei dati satellitari (n. Di satelliti, potenza del segnale) e potresti usare queste informazioni sul dispositivo mobile o sul server per filtrare valori GPS "cattivi". La domanda si divide in due parti: 1) come si definisce una lettura GPS spuria, e 2) come si definisce uno stato stazionario.

Cominciamo con un paio di parametri:

  • stationary_speed = se l'unità mobile sta andando più lentamente di così, è ferma
  • too_fast = se l'unità mobile sta andando più veloce di così, allora ha dato una falsa lettura GPS

È difficile calcolare queste velocità con precisione. Supponi di calcolare la velocità come / tra la lettura precedente (a t0) e la lettura corrente (a t1). Se il delta temporale è elevato e l'unità gira attorno a una curva, la distanza effettiva percorsa sarà maggiore della distanza calcolata. Inoltre, se ottieni due letture spurie di fila e sono abbastanza vicine l'una all'altra, puoi ottenere risultati imprevedibili.

Una volta ottenuta la velocità, confrontala con i tuoi parametri per vedere se la lettura del GPS è spuria o se l'unità è ferma.

Puoi applicare filtri più sofisticati con i filtri Kalman , ma ciò può essere molto più complicato .


Il dispositivo GPS restituisce un numero di dati con ogni pacchetto inviato, inclusa la posizione e la velocità corrente. Abbiamo già un sistema in atto in cui, se la velocità è inferiore a un certo valore, supponiamo che il veicolo non si stia muovendo, tuttavia ci sono casi in cui un veicolo invierà dati con velocità oltre quella soglia, nonostante sia fermo (nota: quelli le velocità non sono così grandi che potremmo aggiungere un limite superiore). Non sono sicuro che il calcolo della velocità basato solo sulle posizioni (piuttosto che sulla lettura GPS) sia una buona idea.
Shaamaan,

2

Siamo riusciti a modificare i dati del sensore di movimento.

Usando i dati del sensore di movimento, i dati di accensione e la velocità riportati dal localizzatore GPS dovremmo essere in grado di dire quando un veicolo è in movimento o meno con una precisione abbastanza buona.

Inoltre abbiamo dato un'occhiata al numero di satelliti, e questo non ha funzionato bene. Mentre il numero di satelliti era inferiore per un veicolo sotto un tetto, era ancora relativamente alto. 9-10 è il solito valore per un tale veicolo, mentre sotto un tetto scende a 7 (ma a volte può ricevere un segnale e salire anche). Inutile dire che il numero di satelliti si è rivelato poco utile.


Le informazioni sono ancora utili per determinare i dati errati. Faccio un sacco di filtri "corretti" basati su di esso. 9 è ancora elevato, sei sicuro che il chip non ripeta l'ultimo valore noto, hanno questa funzionalità a bordo ed è abilitato la maggior parte delle volte.
Glenn Plas,

Il problema principale riguarda i veicoli che vengono immagazzinati in una tettoia per una notte. Non credo che ripeta l'ultima posizione nota, perché i veicoli spariranno completamente se entrano / sono immagazzinati in garage di cemento (o qualcosa di più solido). La caduta di satelliti è un indicatore, ma sembra essere sottile e si è rivelato molto più semplice modificare e utilizzare i dati del sensore di movimento.
Shaamaan,

Non sui più di 3000 veicoli che seguo, è necessario il numero di sats utilizzati per eseguire la correzione, non quelli in vista. Quelli possono rimanere alti quando hai un tetto che lascia ancora passare qualcosa del segnale. Ma la correzione è un buon indicatore, insieme ai valori di guadagno Db.
Glenn Plas,

Posso dire perfettamente quali sono dentro / fuori un garage di qualche tipo. Inoltre non soffro del problema del ragno poiché lo stato di movimento / non movimento lo intrappola. Sono d'accordo sul fatto che i sensori ti danno molto di più per andare avanti.
Glenn Plas,

1
È del tutto possibile che il mio collega abbia impostato il numero di satelliti visibili per errore, piuttosto che il numero utilizzato per una correzione (tutto quello che ho visto era un foglio Excel con i dati con i titoli delle colonne compilati manualmente). : P In ogni caso, come ho scritto, il sensore di movimento sintonizzato era la nostra via d'uscita da questo problema.
Shaamaan,

2

È possibile utilizzare il numero di sats utilizzati per eseguire l'ultima correzione, non quelli visualizzati. Per esempio. View = 11, Fix = 5 E usa i valori Max DB del segnale del sat più forte. Questo deve essere superiore a 30 dB per ottenere un segnale decente.

I dispositivi che utilizziamo hanno un concetto di movimento / non movimento, i sensori sono: accelerazione, vibrazione, tensione di ingresso, segnale di ingresso (dal contatto chiave), dati GPS. Per riferire su posizioni come start / stop (è basato su eventi) ed eventi di direzione / distanza, il dispositivo deve essere in modalità mobile (questo è un conto alla rovescia, configurabile).

I sensori hanno la possibilità di essere combinati. Non vengono segnalati eventi di direzione / distanza né timer mentre il tracciante determina di non essere in modalità mobile. Quando i sensori coinvolti interrompono la segnalazione, il timer esegue il conto alla rovescia fino a zero e quindi viene generato un evento di arresto + l'unità viene messa in modalità non mobile. Fino alla prossima volta. In questo modo è possibile separare i valori di accelerazione di un motore iniziale per "metterlo" in modalità mobile e una soglia inferiore separata per "mantenerlo" in modalità mobile poiché entrambi sono modelli di accelerazione molto distinti.

Le unità che utilizziamo segnaleranno se un punto è stato preso con dati sat cattivi, non sono sicuro che l'hardware lo faccia. Abbiamo SV_Position o SV_KeepAlive o SV_TimeAlive. Keepalive ripeterà l'ultimo valore esatto poiché il GPS non è in grado di aggiornare le sue tabelle né di ottenere una correzione accurata, nemmeno una cattiva. TimeAlive è ciò che vedrai quando attraversi un tunnel o qualcuno ha parcheggiato in un garage.

Un modo per monitorare, anche se è un'ipotesi parzialmente istruita e dipende dal tipo di risorse che stai monitorando è l'alimentatore di tensione. per esempio. un dispositivo che funziona a 12.30v è un'auto il cui motore non è in funzione. Se ne vedi uno che riporta 14.2v sai che il suo alternatore sta girando. Per i veicoli a 24v c'è un modello simile da individuare.

Spero che questo ti dia qualche idea. Tutto dipende un po 'da quanto è buono l'hardware. La fonte dei tuoi dati inizia lì e tutto il resto dopo è solo buono come è. Ma ti incoraggio vivamente a utilizzare le capacità delle unità per fare distinzione di qualità invece di fare tutto sul lato server (a ben vedere). Una volta che ti piacciono le 3000 unità, avrai bisogno di un server robusto per analizzare costantemente tutti i dati di tracciamento, quindi ti renderai conto che non si ridimensionerà.


1
Devo commentare l'idea di raccogliere le tensioni. È eccellente! Stiamo avendo un bel po 'di problemi con alcuni veicoli e non siamo sicuri del perché. Al momento sospettiamo che ciò potrebbe essere dovuto a scarse competenze da parte del tecnico che ha montato i dispositivi di localizzazione, causando problemi di tensione, anche se può anche essere un sabotaggio (sì, un sabotaggio; stiamo monitorando i livelli di carburante e i conducenti non mi piace). Se siamo in grado di registrare la tensione sui dispositivi di localizzazione, ciò dovrebbe aiutare immensamente. :) Enormi pollici in su! (Ne darei più di uno, ma purtroppo non posso ...)
Shaamaan,

Funziona con tutti i veicoli che non dispongono di un regolatore di tensione tra l'unità tracciante. Controlla questo link dal programma di configurazione di KCS, questa è l'unità di cui sto parlando, basta eseguirlo e vedere cosa puoi fare per quanto riguarda il rilevamento del movimento, rimarrai sorpreso. Scarica questo , che è l'ultimo software delle unità revisione9. L'idea di tensione è la loro. Lì vedrai delle buone impostazioni predefinite (camion / auto / motore)
Glenn Plas l'

Il numero di sats è un cattivo indicatore, vuoi davvero il numero di sats usati per prendere l'ultima correzione (Questo è il valore che vedi, non è un indicatore della situazione attuale), anche se il numero di sats ti renderà in grado di determinare punti assolutamente negativi, non ti aiuterà nella zona grigia, ad esempio campioni di qualità mediocre. Devi combinare diversi sensori. Il calcolo della velocità sta essenzialmente facendo lo stesso del tuo chip GPS e questa qualità dipende anche dal numero di campioni che prendi (le strade non sono diritte ovunque) e dalla loro precisione. Problema di uovo di gallina
Glenn Plas,

0

Ho avuto un problema simile durante l'utilizzo di un logger GPS per tracciare uno scooter. Quello che ho fatto è stato sovrapporre la traccia GPS su un livello stradale ed eliminare manualmente le posizioni errate all'interno o in prossimità di un incrocio o di un semaforo. Sono sicuro che ci sono strumenti automatizzati per gestirlo, probabilmente buffer attorno agli incroci e calcolo del tempo minimo e massimo in entrata e in uscita da quel buffer.


1
Dal momento che i veicoli sono problematici quando non si muovono in parcheggi o garage, questo non è affatto utile. :(
Shaamaan,

0

Il termine dell'arte per questo è spidering . Un approccio comune è semplicemente quello di campionare solo quando la correzione è a 10m dalla correzione precedente. Ad esempio, i palmari Garmin registrano le correzioni in base alla distanza mentre gli orologi fitness registrano le correzioni in base al tempo . I palmari non funzionano molto ma gli orologi lo fanno.


Il termine per questo è Errore multipath
ruruskyi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.