Was ist der beste Weg, um PID-Regler zu trainieren?

7

Dies ist Borderline-Nicht-Gamedev, aber PIDs werden häufig in Spielen verwendet, daher dachte ich, ich würde es versuchen.

Ich habe ein paar PID-Regler in meinem Spiel, die zum Beispiel für Lenkung und Gasregelung verwendet werden. Ich habe Probleme, sie genau einzustellen. Es fühlt sich nie so an, als würde ich der optimalen Lösung näher kommen, und es ist sehr verlockend, sie mit der seltsamen Schwingung oder Spitze, die ich nicht loswerden kann, einfach "gut genug" zu lassen.

Der eine Controller, der mich frustriert zu diesem Beitrag geführt hat, erzeugt geringfügige Schwingungen für sehr, sehr kleine Fehlereingaben. Bei großen Eingängen ist es in Ordnung, aber nicht sehr stabil.

Hat jemand Tipps oder Ressourcen, wie ich diese Dinge zuverlässiger trainieren kann?

Tenpn
quelle
Ich denke nicht, dass Controller stabil sind. Sind Sie mit der Idee verheiratet, einen PID-Regler zu verwenden? Wenn Sie einen bestimmten Fall nicht genauer erläutern könnten, könnte ich möglicherweise eine stabilere Lösung geben.
Jonathan Fischoff
Ich suche nach generischen Ansätzen zum Einstellen von PID-Reglern. Stimmen Sie die P-, I- und D-Koeffizienten in einer bestimmten Reihenfolge ab? Müssen Sie ein geschlossenes System bilden, um zu optimieren, oder haben Sie es in der Spielumgebung getan?
Tenpn

Antworten:

7

Es gibt tatsächlich einen anständigen Artikel in AI Game Programming Wisdom 2 von Euan Forrester über PID-Regler.

Ich werde nur wiederholen, was er über die Einstellung der verschiedenen Koeffizienten gesagt hat:

  1. Beginnen Sie mit dem Proportionalitätskoeffizienten (P) - Dies hat den größten Einfluss auf das Verhalten des Reglers. Setzen Sie die anderen 2 Koeffizienten auf 0 und stimmen Sie P ab, bis Sie einen ungefähr gewünschten Effekt erzielen.
  2. Variieren Sie jeweils nur einen Koeffizienten - Machen Sie sich ein gutes Gefühl für einen Koeffizienten, um sicherzustellen, dass er ungefähr das tut, was er tut, während die anderen 2 konstant bleiben.
  3. Stimmen Sie die Koeffizienten in Echtzeit ab - Die Vorteile liegen auf der Hand. Sie möchten nicht jedes Mal alles neu kompilieren, wenn Sie einen Wert ändern. Das ist nur gesunder Codierungssinn.
  4. (Optional) Haben Sie eine Sofortwiedergabefunktion - Dies ist nur hilfreich, wenn Sie beobachten, dass mit Ihren PID-Werten etwas wirklich Seltsames passiert, damit Sie die Schritte bis zu diesem Zeitpunkt erneut abspielen können.

Er bietet auch eine Reihe von Online-Ressourcen an (von denen einige tote Links sind, daher werde ich nur diejenigen veröffentlichen, die noch verfügbar sind):

Visual Loop Tuning

Einstellen eines PID-Temperaturreglers

Ich hoffe, das hilft

~ Ray

Ray Dey
quelle
1

Stimmen Sie Pids nicht mit der simplen "Versuch und Irrtum" -Methode! Sie werden nie gute Ergebnisse erzielen, da die Parameter voneinander abhängen. Verwenden Sie das FOPDT-Modell (erste Ordnung plus Totzeit) zusammen mit IMC-Formeln, um Kp, Ki und Kd aus Testdaten zu berechnen.

Führen Sie einen Stufentest Ihres Steuersignals durch (direkt in Richtung "Anlage" ohne Steuerung) und zeichnen Sie Ihre Prozessvariable auf, die Sie in Bezug auf das Steuersignal steuern möchten. Schauen Sie sich dann die Daten an und notieren Sie Prozessgewinn, Totzeit und Prozesszeit. (mehr Infos hier und hier ).

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Lesen Sie im Allgemeinen einfach die gesamte ControlGuru-Site durch. Es ist eine sehr gute Ressource. Ich habe das FOPDT-Modell ziemlich erfolgreich verwendet, um sofort die richtigen PID-Werte ohne Versuch und Irrtum zu erhalten. Es funktioniert hervorragend und erzeugt einen optimalen Controller. Wenn Sie dann Ihre Kp, Ki und Kd aus Kp, Ti und Td berechnen, haben Sie auch die Möglichkeit, den Wert für "Aggressivität" anzugeben. Dies ist eine gute Möglichkeit, Ihrem bereits richtig eingestellten Controller mitzuteilen, wie schnell er konvergieren soll.

Außerdem sollten Sie wahrscheinlich eine Ableitung für PV anstelle einer Ableitung für Fehler verwenden. In den meisten Fällen macht es wirklich keinen Sinn, eine Fehlerableitung vorzunehmen. Dazu verwenden Sie ein negatives Vorzeichen vor Kd und verwenden diese Formel:

Geben Sie hier die Bildbeschreibung ein

Dies vermeidet einen Effekt, der als "Ableitungskick" bezeichnet wird, wenn Sie Ihren Sollwert ändern. Mehr Infos hier .

Ich stimme nie mehr manuell. Ich denke, das FOPDT-Modell ist die einfachste Methode, um PID-Schleifen sehr schnell abzustimmen. Sie müssen jedoch auch zwischen einem selbstregulierenden (selbststabilisierenden) Prozess und einem integrierenden Prozess (der sich nicht stabilisiert - beispielsweise eine Position eines Objekts, nachdem eine Kraft auf es ausgeübt wurde) unterscheiden. Die Tuning - Methoden sind ein bisschen anders , aber auch an der controlguru Website beschrieben sind hier .

Martin
quelle