Wie kann ich PID-Parameter automatisch im laufenden Betrieb anpassen?

15

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:

Leichter Roboterarm

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.

Raketenmagnet
quelle

Antworten:

10

Ein Kollege und ich haben einmal einen Simplex-Algorithmus implementiert, mit dem die PID-Parameter eines Stromregelkreises für einen Motor im laufenden Betrieb eingestellt werden können. Im Wesentlichen änderte der Algorithmus jeweils einen Parameter und sammelte dann Daten zu einem Rückkopplungsparameter, der unser Maß für die Güte war. Unsere war prozentuale Abweichung von einem aktuellen Zielsollwert. Abhängig davon, ob der Feedback-Parameter besser oder schlechter wurde, wurde der nächste Parameter entsprechend geändert.

Oder in Wikipedia sprechen:

Ein lineares Programm sei durch ein kanonisches Tableau gegeben. Der Simplex-Algorithmus fährt fort, indem er aufeinanderfolgende Pivot-Operationen ausführt, die jeweils eine verbesserte realisierbare Grundlösung ergeben; Die Wahl des Schwenkelements bei jedem Schritt wird weitgehend von der Anforderung bestimmt, dass dieses Schwenkelement die Lösung verbessert.

Technisch haben wir die Nelder-Mead-Methode verwendet, die eine Art Simplex ist. Es kann auch als Algorithmus für das Bergsteigen bezeichnet werden, wenn Sie beobachten, wie die Eingabeparameter geändert werden, während nach einem optimalen Ausgabeparameter gesucht wird.

Nelder-Mead-Animation

Nedler-Mead hat in unserem Fall am besten funktioniert, weil es einen Sollwert verfolgen kann. Dies war wichtig, da sich unser aktueller Zielsollwert mit zunehmender Drehmomentanforderung änderte.

Die Nelder-Mead-Technik ist eine heuristische Suchmethode, die zu instationären Punkten konvergieren kann

embedded.kyle
quelle
Könnten Sie Ihren Ansatz und Ihre Ergebnisse verknüpfen, wenn sie verfügbar sind?
SPRajagopal
@SPRajagopal Sorry, aber nein. Ich arbeite nicht mehr für dieses Unternehmen und habe keinen Zugriff auf die Daten.
embedded.kyle
4

Ein guter Ansatz für ein solches Problem heißt adaptive Steuerung. Kurz gesagt handelt es sich um eine Kontrollmethode, bei der davon ausgegangen wird, dass das Modell bekannt ist, die Parameter des Modells (Masse, Trägheit usw.) jedoch nicht. Es ist Aufgabe, die unbekannten Parameter abzuschätzen. Eine kurze Einführung finden Sie auf Wikipedia . Der Text Robotics: Modeling, Planning and Control von Siciliano et al. Behandeln Sie das Thema genauer.

Bearbeiten als Antwort auf die @Rocketmagnets-Abfrage:

Kurz gesagt, Sie müssen ein mathematisches Modell Ihres Systems haben, dh die Gleichungen, die beschreiben, wie sich Ihr System im Laufe der Zeit entwickelt, wenn es gezwungen wird oder auf andere Weise, aber Sie müssen keine dynamischen Parameter wie die Masse der verschiedenen Komponenten, ihre Trägheit usw. Kennen Es ist die Aufgabe des adaptiven Reglers, diese Parameter abzuschätzen. Sie müssen jedoch für jeden der unbekannten Parameter eine erste Vermutung anstellen. Während der Ausführung des Systems werden dann die Steuersignale, die Ausgangssignale und eine Methode wie lineare Regression oder Gradientenabsenkung verwendet, um die unbekannten Parameterwerte zu aktualisieren. Mit der Zeit konvergieren die Parameter zu Werten, die zu einem stationären Zustand führen, obwohl sie möglicherweise nicht mit den tatsächlichen Parametern übereinstimmen, dh die Masse kann falsch sein, der Wert funktioniert jedoch weiterhin.

Von hier aus würde ich raten, sich auf einen Text zu beziehen, der die Methode beschreibt. Ich habe zum Beispiel gerade bemerkt, dass Dr. Marc Bodson eine Kopie seines Textes Adaptive Control: Stabilität, Robustheit und Konvergenz in PDF-Form auf seiner Website anbietet .

DaemonMaker
quelle
Können Sie die Methode erläutern?
Rocketmagnet
1
Ich bezweifle, dass ich dem gerecht werden kann, da ich die Methode erst vor kurzem kennengelernt habe. Darüber hinaus handelt es sich nicht um eine einzelne Methode, sondern um eine Sammlung von Techniken, die in den letzten 50 Jahren oder so entwickelt wurden. Ich werde meine Antwort jedoch bearbeiten, um ein wenig mehr auszuarbeiten.
DaemonMaker
2

Der von Ihnen beschriebene Prozess wird als adaptive PID bezeichnet.

Es scheint eine Art Overkill. Ich habe festgestellt, dass PID im Umgang mit externen Störungen recht robust ist und die von Ihnen beschriebenen Aufgaben nicht über die Möglichkeiten einer einzelnen Reihe von Verstärkungen hinausgehen.

user65
quelle
Dies sind mehr als nur äußere Störungen. Dies sind Änderungen der Eigenschaften des Gelenks. Das Verdoppeln der Masse des Roboters führt beispielsweise zu einem Überschießen.
Rocketmagnet