- LiTime Speicher und Akkus         
Seite 2 von 15 ErsteErste 123412 ... LetzteLetzte
Ergebnis 11 bis 20 von 144

Thema: Asuro: Linienfolger mit PD-Regler

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    16.05.2005
    Beiträge
    734
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Sind die Sensoren digital? Gibt es also nur ganze Zahlen -1, 0, +1, +2 usw.

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.06.2005
    Ort
    DD
    Beiträge
    519
    Ja, die sind digital, aber wenn Sensor 1+2 anspricht, wird 1,5 ausgegen. (bzw. halt -3,5)

    MK

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    16.05.2005
    Beiträge
    734
    ok, 0,5er Schritte, alles klar

    Eigentlich sollte es funktionieren, die angesprochenen Änderungen sollten nicht wesentlich sein für eine prinzipielle Funktion

    Kann ich selbst die Parameter in RoboSim einstellen?

    Waste

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    An waste und alle die es noch interessiert.
    Hier ein Erklärungsversuch für die Parameter in der EXCEL-Datei (in linie-pid.zip):

    Kp
    Kopplungs- bzw. Verstärkungswert für die Proportional-Komponente

    Ki
    Kopplungs- bzw. Verstärkungswert für die Integral-Komponente

    Kd
    Kopplungs- bzw. Verstärkungswert für die Differential-Komponente

    Ta [sec]
    Zykluszeit zum messen der Sensoren, PID rechnen und regeln.

    Ti [sec]
    Im Verhältis zu Ta, im EXCEL also 50-fach, die Zeitspanne, in der die Reglung nach einer Abweichung den I-Anteil berücksichtigen soll.

    Td [sec]
    Im Verhältis zu Ta, im EXCEL also 10-fach, die Zeitspanne, für den P-Anteil

    DIES SCHEINEN die Werte für eine SCHNELLE REGLUNG zu sein, nach der waste fragte. (Ta kurz halten und die Verhältnisse über Ti und Td abschätzen war meine Methode)
    STABILE REGLERWERTE scheinen sich zu ergeben, wenn die EXECL-Kurve möglichst schnell gegen 0 geht. (Hier habe ich aber Grenzen gefunden, die bestimmt mit der Masse und der Trägheit der Motoren zu tun hat. Jetzt kommt bestimmt Punkt 1.Analyse der Regelstrecke und Modellierung aus wastes Ansatz zur Vorgehensweise zum tragen. Habe ich ja leider komplett vernachläßigt.)

    Fehlersprung
    Die Differenz der Sensoren, die in dem EXECL-Blatt die Tabelle (und die Grafik) erzeugen soll.
    Der Wert 20 ist von mir dort so hinterlassen. Ich habe den Asuro auf meine Linie gesetzt und ein bisschen hin und her geschoben und habe für mich entschieden, daß eine Differenz von ca. 10 bis 40 schon eine Nachreglung vertragen kann.

    Parameter q0, q1, q2
    Die habe ich so als Formel, auf der ja leider verbummelten Internetseite, gefunden um sie als 'Konstanten' in der PID-Regler-Formel einzusetzen.

    Reglergleichung
    Hier muss man wissen, daß die e-Werte die Fehler sind. Die u-Werte sind die Reglerberechnungen, und k stellt den Zeitpunkt (Takt) dar.
    Somit wären z.B.:
    u(k-2) [im Programm u2] der Regleroutput vom VORLETZTEN Takt
    e(k) [im Programm e0] der aktuelle Fehler (SensorLinks - SensorRechts)
    e(k-1) [im Programm e1] der letzte Fehler
    Damit erklären sich die Paremter p1 und p2. Sie stellen Faktoren da, mit denen die 2 letzten Reglerberechnungen in der aktuellen Reglerberechnung einfließen.



    Allgemein zu den Formeln:
    Sind alle 'Raubkopiert', und in dieser Form von mir nicht verstanden. (An pebisoft: v=m/s ist aber weiterhin gültig)

    Allgemein zur Grafik auf Blatt 'Tabelle1':
    Der erste Ausschlag entspricht dem Eingabewert 'Fehlersprung'.
    Die restlichen Werte sind die 'theoretischen' Fehler, die in der Spalte e(k) berechnet werden, da u(k) ja schließlich als Korrekturwert in jedem weiteren Takt den Fehler beheben soll.

    Allgemein zur Grafik auf Blatt 'Tabelle2':
    Der ASURO sammelt im Source gerade.c MAXDATA Daten. Dies sind e0, u0 und die an MotorSpeed gegebenen Geschwindigkeiten.
    Die Werte können aus dem ASURO mit einem druck auf den linken Kontaktsensor über die Schnittstelle gesendet werden.
    Im EXCEL-Blatt kann man diese Werte einfügen (siehe auch Datei PID.txt) und man sieht somit in der oberen Grafik sowohl den Fehler (blaue Linie) als auch den IM ASURO berechneten PID-Wert (rote Linie).
    Die untere Grafik zeigt sowohl für den linken (blaue Linie) als auch für den rechten (rote Linie) Motor die gesetzte MotorSpeed an.


    Bei weiteren Fragen, werde ich wohl doch die 'verlorene' Seite im Netz wiederfinden müssen. Hier ist mein PID-Latein nämlich am Ende.

    Fazit
    Ich fand die Grafik in 'Tabelle1' sehr schön, und habe deshalb die Werte so im Programm eingetragen.



    RIESENENTSCHULDIGUNG FÜR DIE RECHTSKURVEN:
    Rechtskurven sind bestimmt bei vielen ein Problem.
    Dies liegt an MEINEM Asuro, da er einen schlappen rechten Motor hat und ich dort immer mehr Gas gebe.

    LÖSUNG:
    In asurocp.h ist der define MOTORDIFF bei mit mit 50 belegt. (Rechts gibt es immer 50 Einheiten mehr Saft)
    Hier müßt ihr einen Wert eintragen, der die Leistungsdifferenz eurer Asuro-Motoren ausgleicht. Der Wert darf auch negativ sein falls der linke Motor der Schwächling ist.

    Schöne Grüße von Sternthaler

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    16.05.2005
    Beiträge
    734
    Hier kommt die Fortsetzung des eigentlichen Themas:
    Ermittlung der Kennwerte für Liniensensor und Motor

    Von früheren Projekten her weiss ich, dass der Liniensensor stark vom Umgebungslicht abhängig ist. Zum einen wird das Ergebnis verfälscht wenn Umgebungslicht von der Seite kommt, zum anderen wird die Steilheit der Kennlinie des Liniensensor verändert, was einer Verstärkungsänderung entspricht. Die Änderung der Verstärkung war je nach Umgebungslicht bis zu Faktor 5. Aus Erfahrung weiss ich, das ist zu viel um eine Regelschleife optimal auslegen zu können. Glücklicherweise hatte ich für das Problem schon eine Softwarelösung parat. Das Umgebungslicht wird dabei durch eine Messung bei ausgeschalteter FrontLED kompensiert. Wie es geht, ist hier nachzulesen:
    https://www.roboternetz.de/phpBB2/ze...hlight=#104377
    Damit bleibt die Steigung der Kennlinie auch bei Umgebungslicht einigermassen konstant. Die Kennlinie des Liniensensors ist als Bild angehängt, siehe Liniensensor.gif. Die Kennlinie wurde aufgenommen, indem ich einen Papierstreifen mit einer kurzen Linie seitlich unter dem Liniensensor durchzog. In Schritten von 1mm wurden die Werte ausgelesen. Als Steigung kann ich etwa 14 pro 1mm ablesen, damit ist das Übertragungsmass des Liniensensors 14/mm. Als Verzögerungszeit durch die AD-Wandlung habe ich etwa 1.6ms gemessen.

    Nun kommen wir zur Ermittlung der Kennwerte des PT1-Glieds. Am einfachsten ist es eine Beschleunigungsmessung durchzuführen und aus der aufgenommenen Kurve die Zeitkonstante abzulesen. Das habe ich auch gemacht, hier die Kurve:
    Bild hier  
    Die Messwerte wurden mittels Odometrie vom Asuro selbst aufgenommen und gespeichert und nach der Messfahrt auf den PC ausgelesen. Die ermittelte Zeitkonstante ist ca. 130ms, die Höchstgeschwindigkeit ca. 0.51m/s. Damit ist das Übertragungsmass des PT1-Blocks, das Verhältnis von Geschwindigkeit zu PWM-Einstellung = 0.51/255 = 0.002 m/s. Eigentlich hat man jetzt alle Angaben um mit der Simulation loslegen zu können. Ich wollte aber noch wissen, wie gross der Anteil des Trägheitsmoments des Motors ist. Dazu habe ich das Trägheitsmoment des Motors extra ermittelt. Viele werden sich jetzt denken, das kann ich mir sparen, das sind doch nur ein paar Gramm. Schon, aber die paar Gramm müssen auf eine hohe Drehzahl (über 7000 UPM) beschleunigt werden und das macht sich bemerkbar. Das Trägheitsmoment eines Motors ist 1.12gcm². Als äquivalente Masse auf das Fahrzeug umgerechnet sind das 190 Gramm. Beide Motoren haben dann eine äquivalente Masse von 380 Gramm, das ist wesentlich mehr als die Masse (Gewicht) des Asuro selbst. Mein Asuro wiegt mit den grösseren Akkus 240 Gramm. Wie man sieht, darf man das Trägheitsmoment der Motoren auf keinen Fall vernachlässigen, auch nicht bei so kleinen Motoren.

    Da ich aus früheren Simulationen bereits ein Ersatzschaltbild für einen Motor hatte, habe ich den PT1-Block noch weiter zerlegt und mit dem Ersatzschaltbild des Motors versehen. Das Bild PT1_Block.gif zeigt die Schaltung. Der Motor ist aufgeteilt in einen elektrischen und mechanischen Teil. Im el. Teil sind der Ankerwiderstand Ra1, die Ankerinduktivität La1 und die Spannungsquelle B1, die die Gegen-EMK simuliert. Der mechanische Teil besteht aus der Stromquelle B2, I1 und Cm1. B2 simuliert das Drehmoment. In meinem Fall habe ich den Antrieb mit der Übersetzung gleich mit rein gerechnet, damit entspricht in dem mech. Teil:
    - der Strom in Ampere jetzt der Kraft in Newton,
    - ein Kondensator in Farad jetzt einer Masse in kg und
    - die Spannung in Volt jetzt einer Geschwindigkeit in m/s.

    In der Schaltung entspricht B2 der Kraft des Motors, I1 der Reibung und Cm1 der Masse des Asuros. Der Widerstand R1 simuliert geschwindigkeitsabhängige Verluste. Die Schaltung simuliert nur einen Motor mit einer Hälfte des Asuro, deshalb ist die Masse auch nur (380g + 240g)/2 = 310g, damit die Dynamik wieder stimmt.

    Simuliert wird es mit LTSpice, das ist ein FreeWare Schaltungssimulationtool. Es wurde hier im Forum schon mal vorgestellt, bei Interesse einfach danach suchen.

    Nun überprüfen wir ob das Modell der Wirklichkeit entspricht und simulieren eine Beschleunigung aus dem Stand. Dazu geben wir einen Spannungssprung von 0V auf 5V auf den Motor. Das Ergebnis ist in Bild Motor_Sim1.gif zu sehen. Es stimmt ziemlich genau mit der wirklich gemessenen Beschleunigung überein. Kleine Abweichungen sind unwesentlich für die Regelschleifenoptimierung.

    Fortsetzung folgt

    Waste
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken liniensensor.gif   pt1_block.gif   motor_sim1.gif  

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.06.2005
    Ort
    DD
    Beiträge
    519
    Das müsste eigentlich in der RoboSim.ini gehen!
    Werd mir das morgen aber nochmal genauer ansehen, da es sein kann, dass da wieder was mit der Version nicht hinhaut.

    gn8, ähM_Key

    PS: Sehr schöner/professioneller Lösungsansatz; ich hoffe den ganzen Spass lerne ich auch noch im Studium.
    PPS: Hab ich das richtig erkannt, dass der Asuro nur 2 Liniensensoren hat, die mit unmoduliertem Licht und Analogauswertung betrieben werden? Weil ich habe vor die (vorrausichtlich) 8 Sensoren, als Reflexkoppler CNY70 mit moduliertem IR-Licht und Schmitt-Trigger zu betreiben, um vom angesprochenem Fremdlicht so unabhängig wie möglich zu sein!

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    16.05.2005
    Beiträge
    734
    @Sternthaler
    Danke für die Erklärungen zum Excelsheet, ich werd mich mal damit spielen, womöglich kommen noch weitere Fragen.

    @ähM_Key
    was studierst du? (Fachrichtung)
    Hab ich das richtig erkannt, dass der Asuro nur 2 Liniensensoren hat, die mit unmoduliertem Licht und Analogauswertung betrieben werden?
    Ja, genau so ist es.
    Mit meiner Methode aus/ein, wird praktisch die Modulation nachempfunden, funktioniert ganz gut, nur etwas umständlich.

    Ich seh schon, das wird ein richtiger Experten-Thread.

    Gruss Waste

  8. #18
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.048
    Bevor das dynamische Verhalten die Betrachtung bestimmt nur noch mal eine kurze Betrachtung des Systems von der mechanischen Seite:
    Wie wird das Regelverhalten von der Konfiguration des Systems mit der Anordnung der Räder und des Sensorblocks mitbestimmt?

    Wenn man davon ausgeht, dass ein Zweipunktregler instabil ist, dann kann man sich wundern, wie stabil einfache Linienfolger ohne entsprechende Auslegung des Regelverhaltens im elektronischen Teil fahren können: Sie haben neben der I Regelung einen kräftigen P Anteil schon in ihre mechanische Konfiguration eingebaut.

    Eine Kurskorrektur die durch die Differenz der Radgeschwindigkeit vorgenommen wird, äußert sich nicht erst bei der Weiterfahrt und der dabei eintretenden Verschiebung des gesamten Fahrzeugs quer zur Linie. Es tritt schon eine Wirkung auf den Sensor ein, auch ohne das Fahrzeug weiterfährt, wenn nur die beiden Räder eine Differenzgeschwindigkeit haben und das Fahrzeug drehen. Dieser P-Anteil ist umso stärker, je weiter der Sensorblock vom Drehpunkt des Fahrzeuges entfernt ist. Die Wirkung des P-Anteils hemmt die Korrektur der Fahrtrichtung und wirkt dämpfend auf die Regelschwingung.

    Wie sehr dieser P-Anteil das Regelverhalten beeinflusst, könnte man sich leicht klar machen, wenn man den Abstand des Sensorblocks zum Drehpunkt des Fahrzeugs leicht verschieben könnte. Bei der Mechanik ist es nicht ganz so leicht, aber einen weiteren Wert kann man leicht einstellen, nämlich den gleichen Wert negativ, wenn man das Fahrzeug rückwärts fahren lässt.

    Der Einfluss wird dann schon beim Folgen einer geraden Linie sehr spektakulär deutlich, was mit etwas Geschick bei der Auslegung der Regelung und bei einer ausreichend kontinuierlichen Kennlinie des Liniensensors noch gehen wird.
    Manfred

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    16.05.2005
    Beiträge
    734
    Hallo Manfred,

    eine Linie rückwärts zu verfolgen ist wahrlich eine Herausforderung. Wenn der Asurowettbewerb nicht so schnell eingeschlafen wäre, hätte ich das noch als Vorschlag gebracht. Die Ergebnisse würde ich gerne sehen. Aber vielleicht können wir das noch nachholen.

    Nun zu deinem Diskussionspunkt: Ich hatte mir auch überlegt, ob denn nicht die Fahrgeschwindigkeit als Verstärkung in das System eingeht. Denn vom Gefühl her sollte es so sein. Bin dann auch zu dem Schluss gekommen, dass es auch im Stand funktioniert und damit unabhängig von der Fahrgeschwindigkeit ist.

    Allerdings kann ich dir nicht folgen, wie durch die Anordnung des Sensors zusätzlich ein D-Anteil dazukommt. Angenommen der Asuro hätte eine lange Schnauze und der Sensor wäre sehr weit vorne. Das hätte eine zusätzliche Hebelwirkung, aber für mich ist das ein reiner P-Faktor. Wäre dir dankbar, wenn wir da noch auf einen gemeinsamen Nenner kommen.

    Was anderes ist es mit der Beschleunigung um die Drehachse, das ist noch ein offener Punkt, der kommt sowieso in Kürze dran. Bin um jede Hilfe dankbar. Hier die offene Frage: Wie verändert sich die Trägheit bzw. die Zeitkonstante des PT1-Blocks wenn anstatt einer geradlinigen Beschleunigung jetzt um die Drehachse beschleunigt wird und zwar:
    1. Drehachse mittig zwischen den Rädern
    2. Drehachse um ein Rad
    Ich hätte gerne eine Abschätzung um wieviel sich die Zeitkonstante ändert anhand des echten Asuros. Der Schwerpunkt liegt zwar schon relativ zentral, aber das sollte schon noch quantifiziert werden.

    Übrigens freut mich die aktive Teilnahme hier in dem Thread ungemein. Ich hatte eigentlich die Befürchtung, dass ich Alleinunterhalter sein werde, aber ich wurde vom Gegenteil überzeugt. Macht weiter so.

    Gruss Waste

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.06.2005
    Ort
    DD
    Beiträge
    519
    Zitat Zitat von waste
    Was studierst du? (Fachrichtung)
    Naja, ich studiere (leider) noch nicht, bin aber schon immatrikuliert und am 10.10. geht's dann mit Mechatronik los!

    Bin ja ganz begeistert von dem Thread, weil ich zur gleichen Zeit auch geplant habe, Linienverfolgung über nen PID-Regler zu realisieren. Da mir aber die Grundlagen fehlen (fehlten ), und man sich nicht mal einfach so ein Semester Regelungstechnik beibringen kann, hätte ich wahrscheinlich sehr viel mit dem im AVRco integrierten PID-Regler rumprobiert...

    Gruß, ähM_Key

Seite 2 von 15 ErsteErste 123412 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test