So hier kommt einmal ein kleines Update:
Die Variante mit der Drehzahldifferenz auf 0 zu halten hat keine Besserung gebracht, weil die Differenz am Anfang trotzdem sehr groß ist. Dann habe ich es mit einem D-Anteil versucht der natürlich sehr schnell reagiert. Ich habe nach einer gewissen Zeit aufgegeben diesen Regler dann zu parametrieren. Der war viel zu aggressiv dann und ich habe nicht so große Erfahrung im parametrieren. Ich glaube da würde ich in eine Sackgasse laufen.

Die Variante von Geistesblitz mit dem kombinierenden Regler, weil es dann kein reiner Geschwindigkeitsregler mehr ist. Einen Distanzregler möchte ich dann sowieso auch programmieren, der als Stellgröße den Sollwert des Geschwindigkeitsreglers hat. Deshalb möchte ich einen perfekt funktionierenden Geschwindigkeitsregler haben.

Jetzt habe ich mal geschaut bei welchen Pulsweiten die Motoren vorwärts bzw. rückwärts anlaufen. Es war nicht sehr überraschend, dass diese Werte sehr Unterschiedlich sind (Rechts bei 10% Links bei 22%).
Aber wie korrigiere ich das jetzt. Da habe ich länger daran geknabbert. Ich habe jetzt versucht den Regler zu täuschen und zwar folgendermaßen:
Meine Pulsweite kann ich einstellen zwischen 0 und 210. Der linke Motor läuft ab einer PW von 46. Der Regler gibt mir jetzt eine Stellgröße zwischen 0 und 210 (210 Stufen), physikalisch kann die Strecke aber nur von 46 bis 210 (164 Stufen)) einstellen. Die 210 Stufen vom Regler rechne ich dann auf die 164 Stufen der Strecke um (y = 46 + y*(164/210)). Beim zweiten Motor bin ich gleich verfahren. Funktioniert hat es noch immer nicht.

Ein Problem war da nämlich noch: Der eine Motor hat 164 Stufen (210-46) und der andere hat 190 Stufen (210-20). Die Regelparameter waren aber gleich. Jetzt habe ich einen kleinen Korrekturfaktor verwendet und jetzt fährt er gleichzeitig los

Leider hat auch dieses System jetzt eine Schwäche gezeigt. Bei niedriegen Drehzahlen (benötigte Pulsweite von ca. 50) reichen kleine Schwingungen beim Regler aus, damit er vom Vorwärts- in den Retourgang schaltet und in diesem Schwingen bleibt er dann stecken und stottert nur mehr hin und her. Ich werde jetzt versuchen eine gewisse Grauzone zu lassen in der der Motor nicht dreht. Und diesen Bereich werde ich jetzt noch mit einer Hyterese versehen, je nachdem ob er vorwärts fahren möchte oder rückwärts.

Ich hoffe ich konnte alles mal einigermaßen verständlich erklären. Wenn alles so läuft, wie ich es mir vorstelle, werde ich den C-Code vom Regler hier reinstellen.

Mit freundlichen Grüßen

Schwammi