Paso 6: El algoritmo
Rompí el algoritmo para esta fuera de la sección de código porque garantiza su propia explicación.
En un mundo perfecto con sensores perfectos y un clima perfecto (Gas Ideal ley de alguien?) que no necesitamos un algoritmo especial para manejar los datos del sensor. Idealmente nos gustaría añadir a todos los cambios positivos en la altitud (distancia vertical ascendente) y que sea. Ya no tenemos que suerte, necesitamos una forma para suavizar los datos procedentes del sensor para obtener una estimación precisa de la distancia subió.
Esto se ilustra en las gráficas adjuntas de los datos de prueba que se produje en v3.1.1 R modelo el algoritmo. Esto es muy simplista, pero ilustra lo que nos encontraremos con datos reales sin ser demasiado simplista.
- El primer gráfico (línea negra) es los datos reales "mundo perfecto" con la distancia vertical total subido.
- El segundo gráfico (línea roja) es los datos del sensor simulado con la suma de los valores positivos como la distancia vertical ascendente.
- El tercer gráfico (línea verde) es los datos del sensor simulado suavizada con la suma de los valores positivos como la distancia vertical total subida.
- La cuarta gráfica es un diagrama de todas las líneas en el mismo gráfico.
La segunda imagen es una versión más grande de la trama de todas las líneas en el mismo gráfico. En éste se aprecia el ruido en los datos del sensor simulado (línea roja) y cómo el algoritmo suaviza lo (línea verde, echa un vistazo a las esquinas).
Como se puede ver, sólo tomando los cambios positivos en altitud a partir de los datos del sensor, como haríamos en un mundo perfecto termina por sesgar la distancia total subida en la dirección positiva. Este error es iterativo con cada lectura del sensor por lo que con el tiempo crecerá la cantidad de por que la distancia total es sesgada. Suavizado de los datos tomando un promedio de 10 lecturas evita este pasado.
Suavizado de los datos de esta manera viene con sus propias limitaciones, pero es mejor que no lo alisa. Aquí podemos ver que redondea las esquinas, restando distancia en ángulo agudo siempre y añadir distancia a cada ángulo obtuso. Por supuesto algoritmos mejor modelarán la distancia real subida, sin embargo no estoy buscando eso complicado.
La tercera imagen es una trama real de las lecturas de altitud desde el sensor después de alisar! De hecho, incluso he añadido una capa extra de suavizado (tres lecturas consecutivas que cada 150ms promedio) para ayudar a suavizar los datos del sensor. Se puede ver que todavía hay un montón de ruido (línea azul) sin embargo la distancia total subió (línea roja) todavía está en cero. Esto es debido a otro aspecto del código que he insertado para controlar lo que llamé a la fluencia permanente de ruido acumulado a base de altitud.