Detectando "falta de movimento" no dispositivo GPS

21

Estamos usando um dispositivo de rastreamento GPS montado em veículos e, posteriormente, exibimos os movimentos em nosso aplicativo. No entanto, estamos tendo um pequeno problema com os veículos quando eles NÃO estão em movimento.

Apesar de parado, o dispositivo GPS envia informações com várias posições, às vezes até informa que o veículo está em movimento (de vez em quando informa que o veículo está se movendo rapidamente). O resultado final é uma representação feia do movimento em nossa aplicação e, pior, cálculos incorretos com relação ao tempo em que o veículo estava em movimento e parado. (Também temos algumas análises estatísticas).

Sei que o problema não é novo: o Google Navigation no meu telefone Android também tem problemas quando paro em uma encruzilhada de vez em quando, detectando que agora estou dirigindo na direção oposta (quando, na verdade, estou parado )

Mas realmente precisamos ter algum método para dizer que o veículo não está em movimento, especialmente por períodos prolongados.

O problema é agravado em alguns veículos que são mantidos sob os telhados durante a noite, o que faz com que o GPS fique louco devido a um sinal mais fraco (que ainda é forte o suficiente para conseguir uma posição).

Podemos detectar se o motor do veículo está ligado ou desligado, mas não podemos assumir que ele não está se movendo com o motor desligado (houve incidentes em que um veículo danificado foi rebocado ... e, é claro, há um caso de roubo em potencial que também precisa ser relatado).

Qual é a melhor maneira de abordar esse problema?

EDITAR:

Para adicionar mais algumas informações:

  • O dispositivo GPS tem um acelerômetro, mas que retorna apenas uma informação binária (em movimento / em movimento) e é sensível demais ou simplesmente não está funcionando.

  • Temos acesso a coisas como número de satélites ou qualidade, mas não sabemos como utilizar essas informações. Assim minha pergunta. :)

  • O problema não é detectar se um veículo está em movimento ou não em tempo real. Coletamos os dados e, posteriormente, fazemos algumas análises estatísticas e as exibimos. Mostramos a posição atual do veículo, mas isso é de pouca importância. Então, basicamente, precisamos saber se um veículo estava ou não se movendo olhando dados históricos.

Shaamaan
fonte
7
se você tiver um acelerômetro integrado no seu rastreador, poderá explorar os dados do acelerômetro para detectar se o veículo está realmente se movendo e desativar o rastreamento do GPS se não estiver em movimento.
Geogeek
2
O seu dispositivo GPS registra a qualidade do sinal, o número de satélites e esse tipo de dados? Além disso, parece que você 'exibirá os movimentos mais tarde ...' para confirmar que não é um problema de detecção em tempo real , mas algo que você filtrará mais tarde durante o processamento?
Simbamangu
Editei minha pergunta para fornecer mais informações. Resumindo: o acelerômetro está agindo como louco, temos acesso à contagem de satélites ou informações de qualidade, mas não sabemos como usá-los e, sim, isso NÃO é um problema de detecção em tempo real.
Shaamaan 08/08/12
2
Você encontrará algumas recomendações úteis no site de estatísticas relacionadas à detecção de erros e suavização .
whuber
1
Geofence - quando um veículo se encontra numa zona (isto é, em seguida, fazer garagem nenhuma ficha a posição) - androidzoom.com/android_applications/geofencing
Mapperz

Respostas:

5

Os comentários abaixo da sua pergunta trazem alguns pontos positivos, especialmente sobre a interpretação da qualidade dos dados de satélite (número de satélites, intensidade do sinal), e você pode usar essas informações no dispositivo móvel ou no servidor para filtrar valores GPS "ruins". A questão se resume a duas partes: 1) como você define uma leitura espúria do GPS e 2) como você define um estado estacionário.

Vamos começar com alguns parâmetros:

  • stationary_speed = se a unidade móvel estiver mais lenta do que isso, será estacionária
  • too_fast = se a unidade móvel estiver indo mais rápido que isso, a leitura do GPS será falsa

É complicado calcular essas velocidades com precisão. Digamos que você calcule a velocidade como / entre a leitura anterior (em t0) e a leitura atual (em t1). Se o delta do tempo for grande e a unidade contornar uma curva, a distância real percorrida será maior que a distância calculada. Além disso, se você obtiver duas leituras falsas seguidas e estiverem próximas o suficiente uma da outra, poderá obter resultados imprevisíveis.

Depois de ter a velocidade, basta compará-la com os seus parâmetros para ver se a leitura do GPS é falsa ou se a unidade está estacionária.

Você pode fazer uma filtragem mais sofisticada com os filtros Kalman , mas isso pode ser muito mais envolvido.

katahdin
fonte
O dispositivo GPS retorna vários dados com cada pacote enviado, incluindo posição e velocidade atual. Já temos um sistema em que, se a velocidade for menor que um determinado valor, assumimos que o veículo não está em movimento; no entanto, existem casos em que um veículo envia dados com velocidades acima desse limite, apesar de estar parado (nota: aqueles as velocidades não são tão boas que poderíamos adicionar um limite superior). Não sei se o cálculo da velocidade com base apenas nas posições (e não na leitura do GPS) é uma boa ideia.
Shaamaan 9/10/12
2

Conseguimos ajustar os dados do sensor de movimento.

Usando os dados do sensor de movimento, dados de ignição e velocidade informados pelo rastreador GPS, devemos saber quando um veículo está em movimento ou não com uma precisão muito boa.

Também demos uma olhada no número de satélites, e isso não parecia muito bem. Embora o número de satélites fosse menor para um veículo sob o teto, ele ainda era relativamente alto. 9-10 é o valor usual para esse veículo, enquanto sob o teto ele cai para 7 (mas pode ocasionalmente receber um sinal e subir também). Escusado será dizer que o número de satélites provou ser menos do que útil.

Shaamaan
fonte
As informações ainda são úteis para determinar dados defeituosos. Eu faço muita filtragem 'correta' com base nela. 9 ainda está alto, você tem certeza de que o chip não repete o último valor conhecido, eles têm essa funcionalidade integrada e são ativados na maioria das vezes.
Glenn Plas
O principal problema é com veículos que são armazenados em algum galpão durante a noite. Eu não acho que repita a última posição conhecida, porque os veículos desaparecerão completamente se entrarem / forem armazenados em garagens de concreto (ou qualquer coisa mais sólida). A queda de satélites é um indicador, mas parece sutil e tornou-se muito mais fácil ajustar e usar os dados do sensor de movimento.
Shaamaan
Não nos mais de 3000 veículos que eu acompanho, você precisa do número de sats usados ​​para corrigir o problema, não os que estão à vista. Eles podem permanecer altos quando você tem um teto que ainda permite a passagem de um sinal. Mas a correção é um bom indicador, junto com os valores de ganho de Db.
Glenn Plas
Posso perfeitamente dizer quais estão dentro / fora de uma garagem de algum tipo. Eu também não sofro do problema da aranha porque o estado de movimento / não movimento o prende. Concordo que os sensores lhe dêem muito mais para continuar.
Glenn Plas
1
É perfeitamente possível que meu colega tenha configurado o número de satélites visíveis por engano, em vez do número usado para uma correção (tudo o que vi foi uma planilha do Excel com dados com os títulos das colunas sendo preenchidos manualmente). : P De qualquer forma, como escrevi, o sensor de movimento sintonizado estava fora do problema.
Shaamaan 9/11/12
2

Você pode usar o número de sats usados ​​para fazer a última correção, não os que estão em exibição. Por exemplo. View = 11, Fix = 5 E use os valores Max DB do sinal do sat mais forte. Tem que ser superior a 30Db para obter um sinal decente.

Os dispositivos que usamos têm um conceito de movimento / não movimento, sensores são: Aceleração, vibração, tensão de entrada, sinal de entrada (do contato da chave), dados GPS. Para relatar posições como iniciar / parar (é baseado em eventos) e eventos de direção / distância, o dispositivo deve estar no modo de movimento (este é um contador de contagem regressiva, configurável).

Os sensores têm a possibilidade de serem combinados. Nenhum evento de direção / distância nem temporizadores estão sendo relatados enquanto o marcador determina não estar no modo de movimento. Quando os sensores envolvidos param de relatar, o temporizador é zerado e, em seguida, um evento de parada é gerado + a unidade é colocada no modo sem movimento. Até a próxima vez. Dessa maneira, é possível separar os valores de aceleração do mecanismo de partida para 'colocá-lo' no modo de movimento e um limite inferior separado para 'mantê-lo em modo de movimento', pois ambos são padrões de aceleração muito distintos.

As unidades que usamos relatam se um ponto foi tomado com dados sat ruins, não sei se o seu hardware faz isso. Temos um SV_Position ou um SV_KeepAlive ou SV_TimeAlive. O Keepalive repetirá o último valor exato, já que o GPS não pode atualizar suas tabelas nem obter uma correção precisa, nem mesmo uma má. O TimeAlive é o que você verá quando atravessar um túnel ou alguém estacionar em uma garagem.

Uma maneira de monitorar também, embora seja um palpite parcial e depende do tipo de ativo que você está rastreando é a fonte de alimentação de tensão. por exemplo. um dispositivo operando a 12.30v é um carro cujo motor não está funcionando. Se você vir um que informa 14.2v, sabe que o alternador está girando. Para veículos de 24V, há um padrão semelhante ao local.

Espero que isso te dê algumas ideias. Tudo depende um pouco da qualidade do hardware. A fonte dos seus dados começa lá e todo o resto depois é tão bom quanto é. Mas eu o encorajo fortemente a usar os recursos das unidades para fazer distinção de qualidade em vez de fazer tudo no servidor (em retrospectiva). Depois de criar 3000 unidades, você precisará de um servidor robusto para analisar constantemente todos os dados de rastreamento, e então perceberá que eles não serão redimensionados.

Glenn Plas
fonte
1
Eu tenho que comentar sobre a idéia de coletar tensões. É excelente! Estamos com alguns problemas com certos veículos e não sabemos por quê. No momento, suspeitamos que isso possa ser causado por habilidades insuficientes de parte do técnico que montou os dispositivos de rastreamento, o que resulta em problemas de tensão, embora também possa ser sabotagem (sim, sabotagem; estamos monitorando os níveis de combustível e os motoristas) não gosto disso). Se conseguirmos registrar a tensão nos dispositivos de rastreamento, isso deve ajudar imensamente. :) Enorme polegares para cima! (Eu daria mais de um, mas, infelizmente, eu não posso ...)
Shaamaan
Ele funciona para todos os veículos que não possuem um regulador de tensão entre sua unidade de rastreamento. Verifique este link no programa de configuração do KCS, esta é a unidade da qual estou falando, basta executá-lo e ver o que você pode fazer com relação à detecção de movimento, você ficará surpreso. Faça o download deste , que é o software mais recente das unidades de revisão9. A ideia da voltagem é deles. Você verá alguns bons padrões por lá (caminhão / carro / motor)
Glenn Plas
O número de sats é um indicador ruim, você realmente deseja que o número de sats usados ​​faça a última correção (esse é o valor que você olha, não é um indicador da situação atual), embora o número de sats o permita determinar pontos absolutamente ruins, não o ajudará na zona cinzenta, por exemplo, amostras de qualidade medíocres. Você precisa combinar diferentes sensores. O cálculo da velocidade é essencialmente o mesmo que o seu chip GPS já faz agora, e essa qualidade também depende do número de amostras que você tira (as estradas não são retas em todos os lugares) e de sua precisão. Problema com ovos de galinha
Glenn Plas
0

Eu tive um problema semelhante ao usar um registrador GPS para rastrear uma scooter. O que fiz foi sobrepor a pista do GPS em uma camada de estrada e excluir manualmente os locais errados em um cruzamento ou semáforo ou próximo a ele. Tenho certeza de que existem ferramentas automatizadas para lidar com isso, provavelmente buffers em torno de cruzamentos e cálculo do tempo mínimo e máximo dentro e fora desse buffer.

HDunn
fonte
1
Como os veículos são problemáticos quando não estão em movimento em estacionamentos ou garagens, isso não é de todo útil. :(
Shaamaan
0

O termo da arte para isso é spidering . Uma abordagem comum é simplesmente amostrar apenas quando a correção estiver a 10 m da correção anterior. Por exemplo, os computadores de mão Garmin registram correções com base na distância, enquanto os relógios de fitness registram correções com base no tempo . Os computadores de mão não têm muita aranha, mas os relógios sim.

Sarge
fonte
O prazo para isso é Multipath Erro
ruruskyi