Estamos utilizando un dispositivo de rastreo GPS montado en vehículos y luego mostramos los movimientos en nuestra aplicación. Sin embargo, tenemos un pequeño problema con los vehículos cuando NO están en movimiento.
A pesar de estar quieto, 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 bastante rápido). El resultado final es una representación fea del movimiento en nuestra aplicación y, lo que es peor, cálculos incorrectos con respecto a cuánto tiempo estuvo en movimiento el vehículo y estuvo parado (también tenemos algunos análisis estadísticos).
Sé que el problema no es nuevo: Google Navigation en mi teléfono Android también tiene problemas cuando me detengo en una encrucijada de vez en cuando, detectando que ahora estoy conduciendo en la dirección opuesta (cuando, de hecho, estoy parado )
Pero realmente necesitamos tener algún método para decir que el vehículo no se está moviendo, especialmente durante períodos prolongados de tiempo.
El problema se agrava en algunos vehículos que se mantienen bajo los techos durante la noche, lo que hace que el GPS se vuelva loco debido a una señal más débil (que todavía 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 suponer que no se mueve con el motor apagado (hubo incidentes en los que se remolcó un vehículo dañado ... y, por supuesto, hay un caso de robo potencial que también debe ser reportado).
¿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 información binaria (movimiento / no movimiento) y es DEMASIADO 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. De ahí mi pregunta. :)
El problema no es detectar si un vehículo se mueve 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. Así que, básicamente, debemos ser capaces de saber si un vehículo se movía o no al mirar los datos históricos.
fuente
Respuestas:
Los comentarios debajo de su pregunta traen algunos puntos buenos, especialmente sobre la interpretación de la calidad de los datos satelitales (número de satélites, intensidad de la señal), y podría usar esta información en el dispositivo móvil o en el servidor para filtrar los valores de GPS "malos". La pregunta se reduce a dos partes: 1) cómo define una lectura falsa de GPS, y 2) cómo define un estado estacionario.
Comencemos con un par de parámetros:
Es complicado 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 alrededor de una curva, entonces la distancia real recorrida será mayor que la distancia calculada. Además, si obtiene dos lecturas espurias seguidas y están lo suficientemente cerca una de la otra, 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 espuria o si la unidad es estacionaria.
Puede hacer un filtrado más sofisticado con los filtros de Kalman , pero eso puede ser mucho más complicado.
fuente
Hemos logrado modificar los datos del sensor de movimiento.
Usando los datos del sensor de movimiento, los datos de encendido y la velocidad informada por el rastreador 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 se veía bien. Si bien el número de satélites era menor para un vehículo bajo techo, todavía 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 recibir una señal y subir también). Huelga decir que el número de satélites resultó ser menos que útil.
fuente
Puede usar la cantidad de sats utilizados para tomar la última solución, no las que están a la vista. P.ej. Ver = 11, Reparar = 5 Y usar los valores de DB máxima 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 (desde el contacto clave), datos GPS. Para informar sobre posiciones como inicio / parada (está basado en eventos) y eventos de dirección / distancia, el dispositivo debe estar en modo de movimiento (este es un contador de cuenta regresiva, configurable).
Los sensores tienen la posibilidad de combinarse. No se informan eventos de dirección / distancia ni temporizadores mientras el trazador determina que no está en modo de movimiento. Cuando los sensores involucrados dejan de informar, el temporizador cuenta regresivamente hasta cero y luego se genera un evento de detención + la unidad se pone en modo sin movimiento. Hasta la próxima vez. De esta manera, puede separar los valores de aceleración del 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 utilizamos informarán si se ha tomado un punto con datos sat incorrectos, no estoy seguro de si su hardware lo hace. Tenemos una SV_Position o una 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. TimeAlive es lo que verá cuando cruce un túnel o alguien se estacione en un garaje.
Una forma de monitorear también, aunque en parte es hacer conjeturas educadas 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 ve uno que informa 14.2v, sabe que su alternador está girando. Para vehículos de 24v hay un patrón similar al spot.
Espero que esto te dé algunas ideas. 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 una distinción de calidad en lugar de hacerlo todo en el servidor (en retrospectiva). Una vez que le gusten las 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 escalará.
fuente
He tenido un problema similar al usar un registrador GPS para rastrear un scooter. Lo que hice fue superponer la pista GPS en una capa de carretera y eliminar manualmente las ubicaciones erróneas en o cerca de una intersección o semáforo. Estoy seguro de que hay herramientas automatizadas para lidiar con eso, probablemente amortiguadores alrededor de las intersecciones y calculando el tiempo mínimo y máximo de entrada y salida de ese búfer.
fuente
El término del arte para esto es demoledor . Un enfoque común es simplemente muestrear solo cuando el arreglo está a 10 m del arreglo anterior. Por ejemplo, las computadoras de mano Garmin registran correcciones basadas en la distancia, mientras que los relojes de fitness registran correcciones basadas en el tiempo . Las computadoras de mano no arañan mucho, pero los relojes sí.
fuente