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?
quelle
Antworten:
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:
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
quelle
Der kürzlich erschienene Artikel #AltDevBlogADay beschreibt PID-Regler recht gut, und das WebGL-Beispiel auf der Website des Autors kann zur Feinabstimmung der Variablen hilfreich sein.
quelle
Für den Anfang hat Wikipedia tatsächlich einen guten Artikel darüber, wie man mit dem Tuning beginnt . Ohne weitere Details ist es schwierig, in einer Antwort näher darauf einzugehen.
quelle
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 ).
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:
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 .
quelle