Positionsschätzung mit Odometrie

Ich habe nun eine Funktion implementiert, welche die Position des Roboters auf Grundlage der Odometriedaten berechent. Dies ist nur approximativ möglich, da es recht viele Fehlerquellen (wie z.B. den Schlupf der Räder) gibt.

Um die Position zu berechen, Werden die Odometriedaten mit einer hohen Frequenz ausgelesen. So kann die Geschwindigkeit des Roboters für jeweils einen Messzyklus als konstant angenommen werden.

Neues Debug Tool

Version 2.0 meines debug tools ist nun fertig. Dazu habe ich das Programm kommplett neu geschrieben. Die Scanerdaten werden jetzt nur noch als Punkte angezeigt und das Bild nur aktualisiert, sobald ein neuer Scan zur Verfügung steht. Die von der Freiraumnavigation berechnete Fahrtrichtung wird als grüner Strich dargestellt.gui

Das Programm kann jetzt aber nicht mehr nur die Daten des Ir Sensors ausgeben, sondern auch alle anderen Daten, die dem Roboter zur Verfügung stehen. Diese reichen von den Daten der Lichtschranken über die Betriebsspannung des Roboters bis zur cycle time (Laufzeit) verschiedener Routinen.

Medianfilter

Ich habe jetzt einen Medianfilter zum filtern der Scanerdaten implementiert. Dieser Filter dient dazu, Ausreißer herauszufiltern. Dazu ersetzt er jeden Scanpunkt mit dem Median der k umliegenden Punkte.

Mein Medianfilter hat die Größe k = 5, was in der Praxis sehr gute Ergebnisse erzielt. Es gibt nun kaum noch grobe Messfehler. Allerdings habe ich immer noch ein Problem mit dem Rauschen der Daten. Ich denke aber, dass ich diese mit einem Linienfinder glätten kann.