Gibt es irgendwelche Probleme damit?
Das Hauptproblem dabei ist, dass die von Ihnen vorgeschlagene Lösung zwar augenblicklich eine Nichtübereinstimmung zwischen der Leistung der Motoren korrigiert, aber keine Fehler, geschweige denn komplexere Positionsfehler wie Abbe-Fehler (siehe später) korrigiert .
Was ist ein besserer Ansatz?
Es gibt verschiedene Möglichkeiten, je nachdem, wie tolerant Sie gegenüber Fehlern sind und mit welchem Aufwand Sie diese beheben möchten.
Der erste Schritt wäre, ein Paar PID-Schleifen für jedes Rad einzurichten, wodurch beide die gleiche Bedarfsposition erhalten. Wie ich in meiner Antwort auf eine ähnliche Frage vorgeschlagen habe , wird es einige Zeit dauern, bis sich genügend Fehler angesammelt haben, um eine merkliche Abweichung zu verursachen, wenn Sie beide Räder innerhalb eines sehr engen Fehlerbereichs halten, an dem Sie sie erfragen.
Es ist auch viel einfacher, zwei nominell unabhängige Motorpegel-PID-Regelkreise abzustimmen, als ein einzelnes komplexes, voneinander abhängiges kombiniertes System abzustimmen. Um einer Änderung der übergeordneten Steuerung standzuhalten, muss sich jeder Motor so lange wie möglich so ähnlich wie möglich wie der andere Motor verhalten. Dazu sind separate Servoschleifen erforderlich.
Es gibt jedoch eine Reihe weiterer Komplikationen, und es hängt davon ab, welche Genauigkeit Sie benötigen und wie viel Aufwand Sie bereit sind, um zu korrigieren, für welche Lösung Sie sich entscheiden. Es kann sein, dass Dead Reckoning ausreicht, oder dass Sie Ihrem Roboter eine relative oder absolute Positionsbestimmung hinzufügen müssen.
Ein Problem ist, dass Sie, selbst wenn Ihr linkes und rechtes Rad jeweils 1000 Encoder-Zählungen ausführen, bei zwei verschiedenen Läufen möglicherweise immer noch an einer anderen Position landen.
Angenommen, Sie haben einen maximalen Schleppfehler von 10 Geberzählern und Ihre Motoren laufen mit einer Drehzahl von beispielsweise 10 Geberzählern pro PID-Schleifeniteration. Ihr linker Motor bewegt sich möglicherweise 5,10,10,10 ... 10,5, während Ihr rechter Motor ein Profil von 4,11,10,10 ... 10,5 und sogar diesen kleinen Unterschied in der Beschleunigung beim Start aufweist von der Bewegung könnte dazu führen, dass der Roboter leicht in die falsche Richtung fährt. Nicht nur das, sondern je weiter Sie sich in diese Richtung bewegen, desto größer wird der Fehler in absoluten Zahlen. Dies ist es, worüber wir sprechen, wenn wir von einem Abbe-Fehler sprechen , und ohne ein komplexes kinematisches Modell oder eine Art externen Bezug werden Sie niemals in der Lage sein, dies zu korrigieren.
Weitere Informationen finden Sie in meiner Antwort auf eine ähnliche, aber nicht ganz identische Frage: Wie kann ich die Arduino PID-Bibliothek verwenden, um einen Roboter in einer geraden Linie zu fahren?
und meine antwort auf die ebenfalls verwandte line follower optimierung