Stap 6: Het algoritme
Ik brak de algoritme voor deze out van de codesectie omdat het gerechtvaardigd zijn eigen verklaring.
In een perfecte wereld met perfecte sensoren en perfecte weersomstandigheden (ideaal Gas wet iemand?) zou niet moeten een speciaal algoritme om de gegevens van de sensor. Idealiter wij zou alleen kloppen alle positieve veranderingen in hoogte (afstand klom verticaal) en dat zou worden. Aangezien we niet zo gelukkig, moeten we een een manier om het gladstrijken van de gegevens die uit de sensor om een nauwkeurige schatting van de afstand komen beklommen.
Dit wordt geïllustreerd in de gekoppelde grafieken van de testgegevens die ik geproduceerd in R v3.1.1 model het algoritme. Dit is erg eenvoudig, maar het illustreert wat we zullen tegenkomen met echte wereld gegevens zonder dat te simplistisch.
- De eerste grafiek (zwarte lijn) is de werkelijke "perfect world"-gegevens met de werkelijke totale verticale afstand beklommen.
- De tweede grafiek (rode lijn) is de gesimuleerde sensor data met de som van de positieve waarden als de verticale afstand beklommen.
- De derde grafiek (groene lijn) is de afgevlakte gesimuleerde sensor data met de som van de positieve waarden als de totale verticale afstand beklommen.
- De vierde grafiek is een complot van alle regels op dezelfde grafiek.
Het tweede beeld is een grotere versie van de plot van alle lijnen in dezelfde grafiek. Op dit gebied kunt u het geluid in de gesimuleerde sensor data (rode lijn) en hoe het algoritme glad het uit (groene lijn, neem een kijkje op de hoeken).
Zoals u zien kunt, eindigt net het nemen van de positieve veranderingen in de hoogte van de sensorgegevens, zoals we in een perfecte wereld zou doen de totale afstand klom in de positieve richting scheeftrekken. Deze fout is iteratieve met elke sensorgegevens, dus na verloop van tijd het bedrag dat de totale afstand is scheef door zal groeien. Vloeiend maken de gegevens door middel van een gemiddelde van de 10 lezingen vermijdt dit verleden.
Vloeiend maken van de gegevens op deze manier komt met eigen beperkingen, maar het is beter dan niet vloeiend maken het. Hier kunt zien we dat het completeert de hoeken, af te trekken van afstand op ooit scherpe hoek en afstand toevoegen op elke stompe hoek. Natuurlijk zal betere algoritmen model van de werkelijke afstand klom beter, maar ik ben niet op zoek om dat ingewikkeld.
De derde afbeelding is een werkelijke plot van de hoogtewaarden vanuit de sensor na vloeiend maken! In feite Ik heb zelfs toegevoegd een extra beveiligingslaag voor smoothing (drie opeenvolgende leest die elke 150ms gemiddeld) om te helpen met het temmen van de sensorgegevens. U ziet dat er is nog steeds een heleboel lawaai (blauwe lijn), maar de totale afstand beklommen (rode lijn) nog steeds op nul is. Dit is te wijten aan een ander aspect van de code die ik heb ingevoegd om te bepalen wat ik noemde de staande kruipen van geaccumuleerde ruis op een basis hoogte.