Ich habe ein einfaches Servosystem, das einen PID-Regler verwendet, der in einer MCU implementiert ist, um die Rückmeldung durchzuführen. Die Eigenschaften des Systems ändern sich jedoch dynamisch, sodass die PID-Parameter niemals für alle Fälle angepasst werden können.
Mein Roboter ist ein leichter Arm mit von hinten antreibbaren Elektromotoren, ähnlich wie dieser:
Der Arm führt verschiedene Aufgaben aus, darunter das Aufnehmen schwerer Gewichte, das Schieben und Ziehen von Gegenständen über den Schreibtisch. Jede dieser Aufgaben erfordert unterschiedliche PID-Einstellparameter, die ich nicht leicht vorhersagen kann.
Was ich wirklich gerne hätte, ist eine Funktion auf höherer Ebene, die die Parameter sorgfältig an das Verhalten des Arms anpassen kann. Wenn es zum Beispiel bemerkt, dass der Arm schwingt, kann es P verringern und D erhöhen. Oder wenn es bemerkt, dass der Arm sein Ziel nicht erreicht hat, kann es I erhöhen.
Gibt es solche Algorithmen? Ich würde mich freuen, auch wenn der Algorithmus die Parameter nicht sofort perfektioniert. ZB konnte der Arm einige Male oszillieren, bevor die Parameter auf ihre neuen Werte eingestellt wurden.