Étape 6: L’algorithme
Je me suis cassé l’algorithme pour cette sortie de la section de code car il justifie sa propre explication.
Dans un monde parfait avec capteurs parfaits et un climat parfait (gaz parfaits Loi quelqu'un?), nous n’aurions pas besoin un algorithme spécial pour gérer les données du capteur. Idéalement, nous ajouterions juste vers le haut de tous les changements positifs en altitude (distance est montée verticalement) et qu’il serait. Puisque nous ne sommes pas cette chance, nous avons besoin d’une manière à aplanir les données provenant de la sonde pour obtenir une estimation précise de la distance a grimpé.
Ceci est illustré dans les graphiques ci-joint les données de test que j’ai réalisé en R v3.1.1 au modèle de l’algorithme. C’est très simpliste, mais elle illustre ce que nous rencontrerons avec les données du monde réel sans être trop simpliste.
- Le premier graphique (ligne noire) est les données réelles « monde parfait » avec la distance verticale totale réelle est montée.
- Le deuxième graphique (ligne rouge) est les données du capteur simulé avec la somme des valeurs positives comme la distance verticale est montée.
- Le troisième graphique (ligne verte) est les données lissées capteur simulé avec la somme des valeurs positives comme la distance verticale totale est montée.
- Le quatrième graphe est une parcelle de toutes les lignes sur le même graphe.
La seconde image est une version agrandie de l’intrigue de toutes les lignes sur le même graphe. Dans celui-ci, vous pouvez voir le bruit dans les données du capteur simulé (ligne rouge) et comment l’algorithme lisse il (ligne verte, jetez un oeil aux coins).
Comme vous pouvez le voir, juste prendre les changements positifs à partir des données de capteur d’altitude comme on le ferait dans un monde parfait finit par l’inclinaison de la distance totale est montée dans le sens positif. Cette erreur est itérative à chaque lecture de capteur donc au fil du temps augmentera le montant de par que la distance totale est biaisée. Lissage des données en calculant une moyenne du passé 10 lectures évite cela.
Les données dans ce mode de lissage est livré avec ses propres limites, mais c’est mieux que ne pas de lissage il. Ici nous pouvons voir qu'il arrondit les coins, soustrayant distance à angle aigu jamais et en ajoutant la distance à chaque angle obtus. Bien sûr mieux algorithmes permettant de modéliser la distance réelle est montée mieux, mais je ne cherche pas à obtenir si compliqué.
La troisième image est une intrigue réelle des lectures d’altitude venant de la sonde après lissage ! En fait, j’ai même ajouté une couche supplémentaire de lissage (trois lectures consécutives en moyenne chaque 150ms) pour aider à dompter les données du capteur. Vous pouvez voir qu'il y a encore un tas de bruit (ligne bleue) mais la distance totale est montée (ligne rouge) est toujours à zéro. Cela est dû à un autre aspect du code que j’ai inséré pour contrôler ce que j’ai appelé le fluage permanente du bruit cumulé à l’altitude de base.