Pregunta

Trabajando en una aplicación de rastreo mediante GPS.Todo está bien, pero a veces debido a las áreas cerradas o mal tiempo puedo obtener inexacta puntos.Al trazar ellos, simplemente no se ve bien, con un montón de saltos/saltos.

Qué algoritmo se deben ejecutar para filtrar las malas señales Se ve como una aplicación de un desdibujamiento algoritmo para mí, pero ¿qué crees?

¿Fue útil?

Solución

Hay algunas opciones:

  1. Desechar los valores atípicos
  2. Filtro
  3. Usa un GPS mejor
  4. Use una fuente de datos externa (ajuste a la carretera)
  5. Combinación de lo anterior

Me gusta usar filtros: un filtro de Kalman es la solución típica (y a menudo la mejor): utiliza una cantidad de promedio predictivo que es mejor que un filtro IIR (Respuesta de impulso infinito) barato:

FilteredValue = FilteredValue * 0.75 + NewValue * 0.25

Puede obtener módulos GPS que le proporcionan 4-5 arreglos por segundo, lo que le permitirá utilizar el filtro 'barato' anterior con tiempos de respuesta razonables.

También puede simplemente obtener un mejor GPS (SiRF III o mejor) que no sea tan ruidoso y tenga una mejor recepción interior (cuando sea posible).

Unidades GPS de consumo & "; ajuste a la carretera &"; siempre que sea posible, para que el consumidor no vea los errores fuera del camino, así como algunas de las otras técnicas.

Un Kalman no es fácil de implementar, pero sin un conjunto de datos o sensor externo (como la velocidad de la carretera), es la mejor opción. Consulte http://www.google.com/search?q= abra% 20source% 20kalman% 20filter para obtener código y tutoriales sobre él.

-Adam

Otros consejos

re:filtrado en la presencia de "pop" ruido--

Una de las maneras más fáciles que he encontrado para hacer esto es:

delta = newValue - filteredValue;
delta = delta > LARGEST_SANE_DELTA ? LARGEST_SANE_DELTA
     : (delta < -LARGEST_SANE_DELTA ? -LARGEST_SANE_DELTA : delta);
filteredValue += alpha*delta;

donde alfa = 1/tau tau y es la constante de tiempo del paso bajo filtro en cuestión, expresada en múltiplos de el tiempo entre iteraciones del código anterior.El valor LARGEST_SANE_DELTA representa un gran cambio en newValue y los clips excesivamente amplia variación en la entrada.Quizás hay mejores maneras de rechazar este tipo de ruido, pero son más complicadas, y la que he dicho es bastante simple.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top