Hallo, bin momentan ein einer Fahrwerkssteuerung dran. Es besteht aus 2 Reglern (Links und Rechtes Rad). Sind nicht über eine Mechanik oder ähnlichem gekoppelt. Außerdem noch eine Kamera die leicht versetzt vor den Rädern montiert ist. Diese Kamera scannt eine auf dem Boden markierte Spur (Farbband oder ähnlichem) und gibt einen X und Y Wert weiter. X ist die Gradzahl der Kamera(Fahrwagen zum Mittelpunkt der Spur) Y die Entfernung zum Mittelpunkt der Spur. Ich habe mir eine Funktion gebaut, die mir die Entfernung der Spur in eine Geschwindigkeit umrechnet und an die jeweilige Achse übergibt. Die Idee ist folgende: Am Anfang bekommen beide Achsen eine Soll Geschwindigkeit. Je nach Kamera Auswertung wird die eine Achse dann abgebremst bzw. beschleunigt. Jedoch nicht schneller als die am Anfang vorgegeben nax Geschwindigkeit. Der Fahrwagen ist recht "gut" unterwegs. Ein "schwingen" ist dennoch leicht sichtbar. Habe nichts brauchbares gefunden das mit weiterhelfen konnte eine saubere Regelung zum implementieren. Im Anhang eine excel Datei meiner erstellen PID Regelung. Der Regler selber sollte so passen. Jedoch fehlt mir die Umsetzung in den Code. Der Regler bezieht sich eben auf einen Soll und Ist Wert. Da mir die Kamera aber 2 Werte liefert (X und Y) verstehe ich nicht ganz, das alles in einen zusammenhang zu bringen. Evtl. kann mir jmd weiterhelfen Grüße Hate
Beitrag #5725335 wurde vom Autor gelöscht.
Name H. schrieb: > Ein Streckenmodell hast du ? Was meinst du mit Streckenmodell. Einen Prüfstand ?. Ich habe eine Teststrecke (Loop) mit jeweils einer ca 5m geraden.
Was hacky wohl meinte: Ein Regelkreis besteht aus einer Strecke und einem Regler (z.B. PID-Regler) Die Strecke ist die ganze unangenehme Physik zwischen dem Ausgang deines Reglers und dem Eingang deiner Sensoren. Und diese Strecke lässt sich in ein Modell packen, z.B. durch Aufnahme der Sprungantwort. Hate M. schrieb: > Da mir die > Kamera aber 2 Werte liefert (X und Y) verstehe ich nicht ganz, das alles > in einen zusammenhang zu bringen. Na dann lass den Winkel doch erstmal links liegen und versuch nur mit der Position zu regeln. Wenn das nicht zu zufriedenstellenden Ergebnissen führt, kann man immernoch weiterschauen.
Du willst nur den Code? Das ganze jeweils extra für jeden Motor. e = soll-ist; e_int += e; e_diff = e-e_old; y = kp*error + ki*e_int + kd*e_diff; e_old=e; Hate M. schrieb: > Der Regler bezieht sich eben auf einen Soll und Ist Wert. Da mir die > Kamera aber 2 Werte liefert (X und Y) verstehe ich nicht ganz, das alles > in einen zusammenhang zu bringen. Mit welchem Wert hast du denn den Regler entworfen? Genau den musst du auch dem Regler im Code geben.
MiMa schrieb: > Du willst nur den Code? > Das ganze jeweils extra für jeden Motor. > > e = soll-ist; > e_int += e; > e_diff = e-e_old; > > y = kp*error + ki*e_int + kd*e_diff; > e_old=e; > > > Hate M. schrieb: >> Der Regler bezieht sich eben auf einen Soll und Ist Wert. Da mir die >> Kamera aber 2 Werte liefert (X und Y) verstehe ich nicht ganz, das alles >> in einen zusammenhang zu bringen. > > Mit welchem Wert hast du denn den Regler entworfen? Genau den musst du > auch dem Regler im Code geben. Die Motoren haben ihre eignen Regler und sind soweit über die eigene Software "eingeregelt". Somit gebe ich den Motoren nur die Drehzahl vor. Auf die X Position achte ich eben nicht momentan. Es wird der Y Wert gelesen und fließt in den Regelkreis der unabhängig von Regelkreis der Achsen ist mit ein (PID-Regler). Im Excel Sheet der im Anhang ist habe ich versucht das zu simulieren. Sollwert (w) ist mein Y Wert der Kamera. Hier sieht man, dass sich die Regelung "sauber" verhält dennoch ist bei schneller Geschwindkeit (ca.30m/min ein leichtes schwingen zu erkennen. Es reicht somit nicht aus rein die Position y zu benutzen. Sondern ich muss auch wissen in welcher Lage (x) sich der Fahrwagen befindet um gegenfalls Gegen zu steuern. Grüße Hate
:
Bearbeitet durch User
Hate M. schrieb: > Im Excel Sheet der im Anhang ist habe ich versucht das zu simulieren. > Sollwert (w) ist mein Y Wert der Kamera. Hier sieht man, dass sich die > Regelung "sauber" verhält dennoch ist bei schneller Geschwindkeit > (ca.30m/min ein leichtes schwingen zu erkennen. Es reicht somit nicht > aus rein die Position y zu benutzen. Doch klar reicht das, dein Modell scheint aber nicht mit der Realität übereinzustimmen. Wie hast du denn deinen PID eingestellt? Würde es mal mit Ziegler Nichols versuchen. Wie schnell können die Motoren? Kann es sein, dass der Regler gerne mehr Geschwindigkeit hätte als die Motoren können?
Hate M. schrieb: > dennoch ist bei schneller Geschwindkeit > (ca.30m/min ein leichtes schwingen zu erkennen. Dann ist es Zeit einen Schritt zurück zu gehen und erstmal I- und D-Anteile ganz rauszunehmen. Wenn dein P-Anteil mit 0,02 schon Wirkung zeigt, kann es durchaus sein, dass die 0,001 I und D Anteil mehr aus dem Ruder bringt, als man meint. Erstmal das Überschwingen loswerden, dann über I Anteil nachdenken, dann über Verwendung des Winkels nachdenken.
MiMa schrieb: > Hate M. schrieb: >> Im Excel Sheet der im Anhang ist habe ich versucht das zu simulieren. >> Sollwert (w) ist mein Y Wert der Kamera. Hier sieht man, dass sich die >> Regelung "sauber" verhält dennoch ist bei schneller Geschwindkeit >> (ca.30m/min ein leichtes schwingen zu erkennen. Es reicht somit nicht >> aus rein die Position y zu benutzen. > > Doch klar reicht das, dein Modell scheint aber nicht mit der Realität > übereinzustimmen. Wie hast du denn deinen PID eingestellt? Würde es mal > mit Ziegler Nichols versuchen. > > Wie schnell können die Motoren? Kann es sein, dass der Regler gerne mehr > Geschwindigkeit hätte als die Motoren können? Drehzahl Motoren max 4000 U/min Die Werte stehen im excel sheet: Kp 0,02 Ki 0,001 Ta 20 Kd 0,001
MiMa schrieb: > Hate M. schrieb: >> Drehzahl Motoren max 4000 U/min > > wie schnell drehen sie bei 30m/min? 3670 U/min sind ca 30m/min
Hate M. schrieb: > Die Motoren haben ihre eignen Regler und sind soweit über die eigene > Software "eingeregelt". Somit gebe ich den Motoren nur die Drehzahl vor. Udn wie schnell reagieren die auf eine Änderung deiner Vorgabe? Hast du diese "Reaktionszeit" berücksichtigt? Hate M. schrieb: > Der Regler selber sollte so passen. Wie ist dieser Regler implementiert? Ist er schnell genug? Hast du das Schwingen auch, wenn dein Fahrzeug langsam fährt?
Lothar M. schrieb: > Hate M. schrieb: >> Die Motoren haben ihre eignen Regler und sind soweit über die eigene >> Software "eingeregelt". Somit gebe ich den Motoren nur die Drehzahl vor. > Udn wie schnell reagieren die auf eine Änderung deiner Vorgabe? Hast du > diese "Reaktionszeit" berücksichtigt? > > Hate M. schrieb: >> Der Regler selber sollte so passen. > Wie ist dieser Regler implementiert? Ist er schnell genug? Hast du das > Schwingen auch, wenn dein Fahrzeug langsam fährt? Nein das habe ich nicht mit berücksichtig. Ein schwingen bei langsamer fahrt ist nicht sichtbar.
Hate M. schrieb: > MiMa schrieb: >> Hate M. schrieb: >>> Drehzahl Motoren max 4000 U/min >> >> wie schnell drehen sie bei 30m/min? > > 3670 U/min sind ca 30m/min Gut möglich, dass du durch deine Motoren schon eine Stellgrößenbegrenzung erreichst. Dann kann dein Regler nicht mehr funktionieren.
Bei schnelle Linienfolger (>1m/s) ist die Reactionszeit sehr wichtig ! Diese ist naturlich die Summe von Messvorrichtung (camera), Regel Algoritmus und wie schnell ihre Antrieb reagieren kan. Wen die Motoren dann auch noch an ihre Obengrenze sind, wird es Schwierig. Eine Vorschlag ist diese Regelung unsymmetrisch zu machen : 80% abbremsen innerrad, 20% beschleunigen Aussenrad !
RP6conrad schrieb: > Bei schnelle Linienfolger (>1m/s) ist die Reactionszeit sehr wichtig ! > Diese ist naturlich die Summe von Messvorrichtung (camera), Regel > Algoritmus und wie schnell ihre Antrieb reagieren kan. Wen die Motoren > dann auch noch an ihre Obengrenze sind, wird es Schwierig. Eine > Vorschlag ist diese Regelung unsymmetrisch zu machen : 80% abbremsen > innerrad, 20% beschleunigen Aussenrad ! Danke für den Vorschlag. Sowas in der Art habe ich mir auch gedacht. Die Mechanik wird nun so angepasst das wir noch oben (Geschwindigkeit 4000 mehr Luft haben). Dann werde ich noch versuchen nicht ein Rad abzubremsen, sondern "beide" und das in einem bestimmten Prozensatz. Wie oben erwähnt 80/20 Grüße Hate
Für sowas sind andere Ansätze, die weiter nach vorne sehen und vorausplanen, einfacher umzusetzen als eine simple PID-Regelung von Querablage und Ausrichtung. Pure Pursuit Path Tracking wäre ein Standard-Ansatz. Also immer periodisch einen Punkt auf der Bahn finden, der ein Stück L vor dem Fahrzeug liegt, und von der aktuellen Fahrzeugposition und -richtung aus eine Krümmung berechnen, mit der das Fahrzeug diesen Punkt trifft. Aus der Krümmung ergibt sich das einzustellende Geschwindigkeitsverhältnis der Räder. L macht man so lang, dass es stabil fährt, und so kurz, dass Kurven nicht übermäßig geschnitten werden, ggf auch abhängig von der Geschwindigkeit.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.