Ich hab heute meinen Gerade - Ausfahren - Regler überarbeitet.

Zum Beispiel sollte man die reine Differenz von dem linken und rechten Weg nicht als Reglereingang hernehmen, da es zu einem stetigen Schwingen führt(Asuro 'wackelt' also hin und her anstatt geradeaus zu fahren).

Besser ist da den Weg(es handelt sich um eine Integral - Strecke), immer zu "dämpfen". Also zuerst für die Regelung verwenden, und dann dämpfen:

e=counter_l-counter_r;
counter_l=counter_l*G_I_FAKTOR; //Der I Faktor sollte so etwa den Wert 0.5 haben
counter_r=counter_r*G_I_FAKTOR;


Weiters solltest du zwar dauernd messen, aber nur alle 100ms dann die Regelabweichung usw... berechnen und dann die Motoren ansteuern. So wie du es hast werden die Motoren blitzschnell runtergeregelt und somit steht Asuro.

Da du mit der Odometrie ja den zurückgelegten Weg misst, hast du bereits einen I Anteil(genauer gesagt einen "vergesslichen" I Anteil weil du ja die Werte dämpfst) und es reicht ein einfacher P Regler(also einfach Regelabweichung*Faktor) aus um gute Resultate zu erzielen.

Grüße,
Harri