Archiv verlassen und diese Seite im Standarddesign anzeigen : 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/Regelungstechnik#PID-Regler
oberallgeier
20.04.2010, 09:19
Hi hanno,
willkommen im Forum.
... 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 (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=450795&sid=e16d68f42c69357ef0967e7743c35937#450795) - 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 Rege lungstech nik 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 W iki-Kochbuch realisiert hatte und wie mein PID-Regler in C aussieht (ich bin ein total schlechter C-Programmierer). Einmal die Aufnahme (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=433979&sid=945064914a53ad8c984860a178c1f201#433979) der Sprungantwort und deren Auswertung. (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=440157&sid=bf5661f50da66c02e80e3c973c9be737#440157) Einige Feinheiten zur Reglerabstimmung hatte ich hier und im nachfolgenden Posting (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=463986&sid=e16d68f42c69357ef0967e7743c35937#463986) 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 ! ?
... 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.
Ich muss feststellen, dass ein Regler doch einiges an Vorkenntnissen erfordert. Das habe ich mir leichter vorgestellt. Aber ich lasse es langsam angehen. Über sanftes Anfahren per PID-Regler habe ich mir vorher nicht viele Gedanken gemacht. Dazu gehört doch ziemlich viel Gehirnschmalz.
oberallgeier
01.05.2010, 19:36
... muss feststellen, dass ein Regler doch einiges an Vorkenntnissen erfordert. Das habe ich mir leichter vorgestellt ...Das ging mir genauso, ich wollte da ewig nicht dran. Aber irgendwann ging ich da drüber und nach ein paar langwierigen Stunden war ich durch. Aber das war noch bei weitem nicht ok. Nach einigen Erfahrungen mit der angewandten Regelungstechnik musste ich deutlich nachbessern. So schien es auch mehreren hier im Forum zu gehen. Also - nur Mut, Du schaffst es schon! Vielleicht ist das hier eine kleine Hilfe für den Anfang (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=389526&sid=bf0e83b5d5f4a3d65fac7ef892edf6ca#389526) - weil halt leider oft vergessen wird, sich sein System richtig vorzustellen.
................http://oberallgeier.ob.funpic.de/regel-notiz.jpg
................Handsizze zur Klärung "was Sache ist".
Der genannte Thread kann mir bei PID-Regler weiterhelfen. Ich beschränke mich aber vorerst auf einen schnöden P-Regler, der offenbar ein doofes Verhalten hat, unter dem ich mir aber noch etwas vorstellen kann. Analog zum oberallgeier gedenke ich, meine Istwerte mit tupsi und Sollwerte mit stupsi zu benennen und hoffe, dass diese Bezeichnungen Geschichte in der Ingenieurswissenschaft schreiben werden.
stupsi12 - Soll Timer Units Per Sensor Interrupt 12
Vielleicht verstehe ich auch irgendwann mal den PID-Regler aus der alternativen Lib von bantyy und tu den in meine Nibobee (Thread: https://www.roboternetz.de/phpBB2/viewtopic.php?t=53980)
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
Sechs Monate später...
Ich habe dieses Problem immer noch. Hat denn noch nie jemand den PID-Regler für die NiboBee verwendet? Ich wundere mich über den Fehler, weil es eine Original-Nibo-Bibliothek ist.
Gelöst :-)
Jedem, der ähnliche Probleme hat, sei gesagt, dass die Reihenfolge der Includes <> ziemlich wichtig ist. Auch lohnt sich ein Blick im AVRStudio auf Project->Configuration Options->Libraries
So ging es dann:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include <nibobee/delay.h>
#include <nibobee/iodefs.h>
#include <nibobee/i2cmaster.h>
#include <nibobee/usart.h>
#include <nibobee/motpwm.h>
#include <nibobee/motpid.h>
#include <nibobee/analog.h>
#include <nibobee/odometry.h>
#include <nibobee/led.h>
#include <nibobee/sens.h>
#include <nibobee/line.h>
#include <nibobee/bgx1.h>
#include <string.h>
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.