Nibobee: Der PID-Regler ist noch nicht implementiert
Der Hersteller der Nibobee, Nicai Systems, hat noch keinen PID-Regler für die Nibobee fertig (Stand 04/2010).
Meine Frage: Kann ich den Quellcode eines bestehenden PID-Reglers von einem anderen Roboter, z.B. eines Asuro, kopieren und evtl. für die Nibobee anpassen?
Erklärung zum PID-Regler in der Wiki: http://www.rn-wissen.de/index.php/Re...nik#PID-Regler
Re: Nibobee: Der PID-Regler ist noch nicht implementiert
Hi hanno,
willkommen im Forum.
Zitat:
Zitat von hanno72
... Nicai Systems hat noch keinen PID-Regler für die Nibobee fertig (Stand 04/2010) ...
Ja - und ich bin auch noch immer nicht dran gegangen.
ABER für meinen MiniD0 - ein kleiner Zweiräder - habe ich dieses Problem einigermassen gut gelöst. Allerdings will und werde ich irgendwann noch die letzten Prozentpunkte der Reglergüte raustüfteln. Danach werd ich sicher firm genug sein, um an die Biene zu gehen.
Dein Link zur Regelungstechnik ist natürlich DAS Gebetbuch für unsere kleinen Maschinchen. Genau danach hatte ich auch gearbeitet. Zur Praxis hätte ich noch ein paar Beispiele für Dich, die zeigen, wie ich die Vorschriften aus dem Wiki-Kochbuch realisiert hatte und wie mein PID-Regler in C aussieht (ich bin ein total schlechter C-Programmierer). Einmal die Aufnahme der Sprungantwort und deren Auswertung. Einige Feinheiten zur Reglerabstimmung hatte ich hier und im nachfolgenden Posting beschrieben. Diese Feinheiten hatten mich erstmal bewogen das Thema beiseite zu stellen (... Nase voll ... brauchte Abwechslung ...). Natürlich sind die Links nur Anhaltspunkte MEINER Erfahrungen - im entsprechenden Thread habe ich teilweise Varianten dazu beschrieben die u.U. auch bessere Ergebnisse liefern. Und andere Threads zum Thema gibts wie Sand am Meer.
Nun ist der Nibobee genauso ein trägheitsbehafteter Zweiräder wie mein MiniD0 mit zwei getrennten Motoren. Beim asuro ist die Regelung etwas anders - da wird eine gemeinsame Stellgrösse für beide Motoren errechnet und die Abweichung der beiden Motoren drauf"gepopelt" - ein recht pfiffige Lösung, die ich aber nicht verfolgt hatte. Vielleicht ist Dir das eine Hilfe und Anleitung ! ?
Zitat:
Zitat von hanno72
... Meine Frage: Kann ich den Quellcode eines bestehenden PID-Reglers von einem anderen Roboter, z.B. eines Asuro, kopieren und evtl. für die Nibobee anpassen ...
Sicher, natürlich. Aber ich würde eher sagen: Im Prinzip ja. Denn die Hauptarbeit liegt ja darin, die Regelungsparameter zu bestimmen, einen geeigneten Satz Regelungsgrössen - Variablen, Konstanten, Abtastraten und Regelungsfrequenzen - auszuarbeiten und das Ganze zu implementieren - ist Dir ja bestimmt schon alles klar. Da ist das bisschen Codeschreiben weniger Arbeit als past and copy und einen Code ändern, den man nicht selbst geschrieben hat - denke ich. Und viele Codes haben für mein Gefühl viel zu wenig Kommentare . . . . .
Viel Erfolg - und schreib, wenns irgendwo klemmt.
Was heißt eigentlich "nicht implementiert"?
Guten Morgen,
Ich habe gerade erkannt, dass die Sourcen für den PID-Regler ja sogar schon in der Nibobeelib drin sind! *tomatenvondenaugenentfern* (/include/nibobee/motpid.h und /lib/nibobee_pid.a)
Wenn ich die niblibobee_pid.a in meine AVRStudio-Libraries aufnehme und einen #include dafür in mein Programm schreibe, ist auch alles gut.
Testweise habe ich dann mal die Methode motpid_stop(0) aufgerufen, aber AVRStudio meldet einen fehlenden Verweis:
[motpid.c: (.text.__vector_8+0x4c): undefined reference to `clock_inc_irq'
Diese Methode steht in clock.c. Bloß leider gibt es im lib-Verzeichnis keine nibobee_clock.a oder Ähnliches. Hat jemand vielleicht den PID-Regler schon mal eingebunden und kann mir helfen?
Danke vorab.
Gruß
Hanno