Hallo harry3,
upps, das habe ich tatsächlich übersehen, dass du Berg und Tal suchst.
Bei deinen im Bild angegeben Messwerten sollte dies aber dann auch keine Probleme geben.
Deshalb habe ich mal aus meinem 'Fundus' von ODO-Messreihen mal ein echt hässliches Beispiel ausgesucht und angehängt.
Eventuell bekommst du ja auch solche 'Mini'-Berge / -Täler wie bei mir.
Jetzt habe ich aber nochmal auf dein Programm geblickt. (Hoffentlich nicht schon wieder mit zugeklappten Augen.)
Mir fällt nun auf, dass du zwar in deiner Schleife immer die OdometrieData()-Funktion aufrufst, die Messwert durch deine Berg-/Tal-Suche laufen läßt, aber nur alle ca. 500 ms (ZEITKONST * Msleep(1)) nachsiehst, ob an den Geschwindigkeiten der Motoren nachgeregelt werden muss.
Dann löschst du auch noch die counter_[l|r]-Werte und verlierst damit die bis dahin aufgetretenen Differenzinformationen.
--> Ich tippe darauf, dass hier das Problem liegt.
P.S.: Ich habe noch so im Hinterkopf, das waste hier im Forum im Thread Asuro: Linienfolger mit PD-Regler seine Reglung für 2 ms ausgelegt hat. (Der Grund war, glaube ich, die Zeit zum ADC-Daten ermitteln).
2 ms und 500 ms sind ein kleiner Unterschied. (Ohne Wertung, da es ja eventuell ausreichen kann.)
Lesezeichen