Detectando “falta de movimiento” en el dispositivo GPS

20

Yo y mis asociados estamos teniendo un pequeño problema de concepto.

Estamos utilizando un dispositivo de rastreo GPS montado en vehículos y luego mostraremos los movimientos en nuestra aplicación. Bastante sencillo, ¿verdad?

Sin embargo, estamos teniendo un pequeño problema con los vehículos cuando NO están en movimiento.

A pesar de estar parado, el dispositivo GPS enviará información con diferentes posiciones, a veces incluso informará que el vehículo se está moviendo (de vez en cuando informará que un vehículo se está moviendo muy rápido). El resultado final es una representación desagradable del movimiento en nuestra aplicación y, lo que es peor, los cálculos incorrectos con respecto a cuánto tiempo estuvo el vehículo en movimiento y se detuvo (también tenemos algunos análisis estadísticos en curso).

Sé que el problema no es nuevo: Google Navigation en mi teléfono con Android también tiene problemas cuando me detengo en un cruce de vez en cuando, al detectar que ahora conduzco en la dirección opuesta (cuando en realidad, Me quedo quieto).

Pero realmente necesitamos tener algún método para decirle que el vehículo no se mueve, especialmente durante períodos prolongados de tiempo.

El problema se agrava en algunos vehículos que se mantienen bajo techos durante la noche, lo que hace que el GPS se vuelva loco debido a una señal más débil (que aún es lo suficientemente fuerte como para obtener una posición).

Podemos detectar si el motor del vehículo está encendido o apagado, pero no podemos asumir que no se está moviendo con el motor apagado (hubo incidentes en los que se remolcó un vehículo dañado ... y, por supuesto, existe un caso de robo potencial que también necesita ser informado).

¿Cuál es la mejor manera de abordar este problema?

EDITAR:

Para agregar más información:

  • El dispositivo GPS tiene un acelerómetro, pero eso solo devuelve una información binaria (en movimiento / no se mueve) y es TOO sensible o simplemente no funciona.

  • Tenemos acceso a cosas como la cantidad de satélites o la calidad, pero no estamos seguros de cómo utilizar esa información. Por eso mi pregunta. :)

  • El problema no se trata de detectar si un vehículo se está moviendo o no en tiempo real. Recopilamos los datos, y luego hacemos un análisis estadístico y los mostramos. Mostramos la posición actual del vehículo, pero eso es de poca importancia. Básicamente, necesitamos poder decir que un vehículo se movió o no se movió al observar datos históricos.

pregunta Shaamaan 08.10.2012 - 13:01

5 respuestas

2

Hemos logrado ajustar los datos del sensor de movimiento.

Usando los datos del sensor de movimiento, los datos de ignición y la velocidad informados por el rastreador de GPS, deberíamos poder saber cuándo un vehículo se está moviendo o no con bastante buena precisión.

También hemos echado un vistazo a la cantidad de satélites, y eso no nos pareció bien. Si bien el número de satélites era menor para un vehículo bajo un techo, aún era relativamente alto. 9-10 es el valor habitual para un vehículo de este tipo, mientras que bajo un techo cae a 7 (pero ocasionalmente puede obtener una señal y subir también). No hace falta decir que el número de satélites demostró ser menos útil.

    
respondido por el Shaamaan 09.10.2012 - 13:23
5

Los comentarios debajo de su pregunta muestran algunos puntos positivos, especialmente sobre la interpretación de la calidad de los datos satelitales (número de satélites, potencia de la señal), y puede usar esta información en el dispositivo móvil o en el servidor para filtrar "malos" Los valores del GPS. La pregunta se reduce a dos partes: 1) cómo define una lectura de GPS falsa y 2) cómo define un estado estacionario.

Empecemos con un par de parámetros:

  • stationary_speed = si la unidad móvil va más lento que esto, entonces es estacionario
  • too_fast = si la unidad móvil va más rápido que esto, entonces ha dado una lectura de GPS falsa

Es difícil calcular estas velocidades con precisión. Supongamos que calcula la velocidad como / entre la lectura anterior (en t0) y la lectura actual (en t1). Si el tiempo delta es grande y la unidad gira en torno a una curva, entonces la distancia real recorrida será mayor que la distancia calculada. Además, si obtiene dos lecturas falsas seguidas, y están lo suficientemente cerca unas de otras, puede obtener resultados impredecibles.

Una vez que tenga la velocidad, simplemente compárela con sus parámetros para ver si la lectura del GPS es falsa o si la unidad es estacionaria.

Puede hacer un filtrado más sofisticado con Filtros de Kalman , pero eso puede ser mucho más complicado.

    
respondido por el katahdin 08.10.2012 - 17:32
2

Puede usar el número de satélites utilizados para tomar la última solución, no los que están a la vista. P.ej. View = 11, Fix = 5 Y usa los valores de DB máximos de la señal del satélite más fuerte. Esto tiene que ser más de 30Db para obtener una señal decente.

Los dispositivos que utilizamos tienen un concepto de movimiento / no movimiento, los sensores son: aceleración, vibración, voltaje de entrada, señal de entrada (de contacto clave), datos de GPS. Para informar sobre posiciones como inicio / parada (se basa en eventos) y eventos de dirección / distancia, el dispositivo debe estar en modo móvil (este es un contador de cuenta regresiva, configurable).

Los sensores tienen la posibilidad de ser combinados. No se informan eventos de dirección / distancia ni temporizadores mientras el marcador determina que no está en modo de movimiento. Cuando los sensores involucrados dejan de informar, el temporizador cuenta atrás hasta cero y luego se genera un evento de parada + la unidad se pone en modo de no movimiento. Hasta la próxima vez. De esta manera, puede separar los valores de aceleración de un motor de arranque para 'ponerlo' en modo de movimiento, y un umbral inferior separado para 'mantenerlo' en modo de movimiento, ya que ambos son patrones de aceleración muy distintos.

Las unidades que usamos informarán si un punto se ha tomado con datos sat no, no estamos seguros de si su hardware hace eso. Tenemos un SV_Position o un SV_KeepAlive o SV_TimeAlive. El Keepalive repetirá el último valor exacto ya que el GPS no puede actualizar sus tablas ni obtener una solución precisa, ni siquiera una mala. El TimeAlive es lo que verá cuando cruce un túnel o alguien haya estacionado en un garaje.

Una forma de monitorear también, aunque es una forma de hacer suposiciones informadas y depende del tipo de activos que esté rastreando es la fuente de alimentación de voltaje. p.ej. un dispositivo que funciona a 12.30v es un automóvil cuyo motor no está funcionando. Si ves uno que informa 14.2v, sabes que su alternador está girando. Para vehículos de 24 voltios hay un patrón similar a detectar.

Espero que esto te dé alguna idea. Todo depende un poco de lo bueno que sea el hardware. La fuente de sus datos comienza allí y todo el resto después de eso es tan bueno como es. Pero le recomiendo encarecidamente que utilice las capacidades de las unidades para hacer distinciones de calidad en lugar de hacerlo en todos los servidores (en retrospectiva). Una vez que haga como 3000 unidades, necesitará un servidor robusto para analizar constantemente todos los datos de seguimiento, por lo que para entonces se dará cuenta de que no se escalará.

    
respondido por el Glenn Plas 09.10.2012 - 13:48
0

He tenido un problema similar al usar un registrador GPS para rastrear un scooter. Lo que hice fue superponer la pista de GPS en una capa de carretera y eliminar manualmente las ubicaciones erróneas en o cerca de una intersección o un semáforo. Estoy seguro de que hay herramientas automatizadas para tratar eso, probablemente buffers alrededor de las intersecciones, y calculando el tiempo mínimo y máximo dentro y fuera de ese buffer.

    
respondido por el HDunn 08.10.2012 - 19:09
0

El término de la técnica para esto es spidering . Un enfoque común es simplemente muestrear cuando la corrección está a 10 m de la corrección anterior. Por ejemplo, las computadoras de mano Garmin registran correcciones basadas en la distancia , mientras que la condición física vigila las correcciones basadas en tiempo . Las computadoras de mano no arañan mucho, pero los relojes sí.

    
respondido por el Sarge 11.10.2012 - 21:00

Lea otras preguntas en las etiquetas