OK also gebe ich mal noch ein paar Tipps:

Wie ja oben bereits gesagt wurde - die standard Regler sind recht langsam.
Die Regelung (beeinhaltet Rotation und Bewegung um bestimmte Distanzen) wird 5x pro Sekunde aufgerufen. So oft wird auch der Geschwindigkeitswert aktualisiert und auch die gefahrene Distanz!

Max Wert für die Geschwindigkeit ist 200 Segmente (von den Musterscheiben der Drehgeber) pro 200ms.
Diese 200ms sind also schonmal ein Bereich in dem die Motoren weiterlaufen obwohl die Solldistanz erreicht wurde. Kann sogar etwas mehr werden da die Motoren ja langsam abgebremst werden...
Es ist schon ein kleiner korrekturfaktor drin der die Motoren etwas eher stoppt aber das ist nicht sonderlich genau da nicht von der Geschwindigkeit abhängig.


Das Regelintervall könnte man schonmal halbieren (max. Wert für die Geschwindigkeits routinen wäre dann 100 Segmente pro 100ms) oder vierteln (max. Wert ist dann 50 Segmente pro 50ms).
(der Wert ist in der RP6config.h definiert - aber vorsicht wenn das geändert wird sollte man auch noch ein paar andere Sachen in der Lib anpassen z.B. maximalgeschwindigkeit usw. )

Oder eine zweiten unabhängige Auswertung NUR für die Distanz implementieren die die Distanz z.B. 20x pro Sekunde misst und die Motoren schneller stoppt wenn die Solldistanz erreicht wurde.

Dazu muss man natürlich einiges am Code der RP6Lib ändern...

MfG,
SlyD