- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: PID Regelung bei ungenauem Signal (Drift)

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127

    PID Regelung bei ungenauem Signal (Drift)

    Anzeige

    Praxistest und DIY Projekte
    Hallo
    bin gerade an diesem Projekt heir : https://www.roboternetz.de/phpBB2/ze...143&highlight=
    Habe 3 Gyroskope und einen 3-Achs acc um die Lage zu bestimmen.
    bis jetz habe ich das Signal Tiefpass-gefiltert
    Code:
       Gyro_nick_m = Gyro_nick_m * 5
       Gyro_nick_m = Gyro_nick_m + Gyro_nick_neu
       Gyro_nick_m = Gyro_nick_m / 6
    und das dann zu den Motor-Sollwerten gemischt.

    zb wenn der Copter sich nach links dreht addiert er zur linken Sollgeschwindigkeit den errechneten Wert und subtrahiert ihn recht, um das Drehen abzufangen.

    Code:
    Motor_soll_v = Motor_soll_v + Gyro_nick_m                  
    Motor_soll_h = Motor_soll_h - Gyro_nick_m
    ist bis jetzt also ein reiner P- regler..
    einen D- Anteil dazuzubauen ist ja auch kein Problem, dann habe ich einen PD regler..
    Damit die Lageregelung gut funktionier muss es bei straker Schieflage mehr gegensteuern als bei leichter.. desswegen haette ich gerne einen PID regler
    mit der bisherigen Regelung ist es noch viel zu wackelig

    und hier kommt mein Poblem:
    das Signal der Gyros ist ungenau und hat auch einen Temperaturdrift.

    wenn ich also die Gyroskope am Anfang kalibrier und dann von der aktuellen Messung immer den Init-wert abziehe geht das manchmal ganz gut.
    es kann aber auch vorkommen, das obwohl der copter still steht das Gyro einen leicht abweichenden Wert ausgibt.. wenn man jetz das Integral bildet, also aufsummiert schiesst der Integralwert sehr schnell ins Unendliche..
    Ausserdem werden die Werte ja auch digital addiert, das heist wenn man 10 mal hin und her dreht kann auch der Rundungsfehler schon rehct gross sein.

    Desswegen wollte ich fragen ob es irgendwelche Algorithmen gibt, die das verhindern können?

    könnte man z.b. das Integrieren der Gyroskope nur dann durchführen, wenn der D- Anteil des Acc-sensors ~= 0 ist ?
    oder den Initwert immer wieder aus der Mittelung der letzten 100 Messungen neuberechen ??

    Gibt da ja auch noch so Kalman-Filter, aber hab nicht wirklich verstanden wie das funktioniert bis jetzt ..

    wäre für alle Vorschläge dankbar..

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.06.2005
    Ort
    DD
    Beiträge
    519
    Anti-Windup haste drinne?

    Kalman nimmt man ja eher zur Fusion von verschiedenen Sensordaten die das gleiche Messen - hast du ja nicht, oder?

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    anti windup ?? sagt mir jeztz gar nichts... aber hört sich interessant an
    könnte schon kalman nehmen, da ich ja nen acc und nen gyro habe, wenn ich das acc signal differnezier habe ich ja auch so ne art drehbewegung ( bei dem acc spielt die tatsächliche beschleunigung nur ne kleine rolle.. was es hauptrsächlich misst ist die richtung der erdanziehung, also die schieflage)
    hmm kay ???

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Drift der gyros ist ein allgemeines Problem. Man könnte besserer und teurere Gyros nehmen um weniger drift zu kriegen, aber ganz ohne geht nicht. Numerische Fehler durch das Aufaddieren sollte man eigentlich vermeiden können, gerade wenn man mit integer Zahlen rechnet.

    Die Beschleunigungssensoren sollte man zum stabilisieren der Gyros nehmen können, zumindest für die Richtung nach unten. Die Rotation um die vertikale kann man so natürlich nicht stabilisieren, da würde man einen Kompass brauchten. Zur Stabilisierung würde sich wohl ein Kalman Filter anbieten. Dabei muss man die Ganze Rechnung zu den Kovarianzmaxtrizen auch gar nicht in Echtzeit durchführen, sondern kann das vorab machen, denn die Unsicherheiten werden sich auf einen Stationären wert einpegeln.

    Anti Windup ist ein Zusatz zu PID Reglern der verhindern soll dass der Integralteil zu groß wird. Die normale Ausführung ist es den Integralteil nicht zu erhöhen wenn die Stellgröße schon am Anschlag ist. Dies verhindert das der Integralteil riesig wird wenn die Regelung den Sollwert nicht richtig erreichen kann.
    Für die gyro Drift wird das hier aber nicht helfen, denn die Steuerung des Copters wird hoffentlich nur ausnahmsweise oder nie bis ganz an den Anschlag gefahren.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    ok, danke shcon mal fuer die tipps..
    @ besserwessi.. weist du ne seite wo das mit dem kalman gut erklärt ist ?? kann da nichts finden, bzw nichts, bei dem ich versth wie ich das dann in meienm fall verwenden muss ??

    man könnte doch auch statt dem kalibrieten 0-punkt auch einen ganz starken tiefpass nehmen, und dann von den aktuellen siganlen das signal abzeihen um die integralwerte zu bilden oder ??
    bzw den 0 wert immer aus den letzen 1000 messungen oder so berechnen.
    was kann man dafuer denn fuer einen algoritmus verwenden, ohne die letzten 1000 oder was auch immer alle speichern zu müssen ??
    würde das so vielciht gehen:
    Code:
    nullpunkt = nullpunkt * 1000 + neue_messung
    nullpunkt = nullpunkt / 1001
    neue_messung = neue_messung - nullpunkt
    integral = integral + neue_messung
    dadurch sollte man den drift doch halbwegs wegbekommen ??
    das integral ist dann zwar immer ien bsichen kleiner als es wirklich sit, aber das macht ja nicht so viel aus... oder habe ich da irgendwas nicht bedacht ??

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das könnte gehen, solange man der Chopter im Mittel wirklich gerade steht. Wenn man lämger im Kreis oder ähnliche Figuren fliegt, ist das nicht mehr ganz der Fall.

    Der Wikipedia Eintrag zum Kalman filter ist recht ausführlich. Je nach Vorbildung könnte der Artikel aber etwas schwer zu verstehen sein.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    ok, dann schau ich mit den mal an... eigentlich sollte ich das shcon können. bin im 9. semseter maschiennebau und hab steuerungstechnik als hauptfach.. ( und nexte woche ne Regelungstechnik klausur )
    was bei dem oben beschriebenen verfahren gerade mein problem ist, dass die neuen werte ja immer zu einem ganz kleinen teil nur eingehn, und wenn ich das als integer oder long definier das alles weggerundet wird.. was ist denn da fuer ein datentyp geeigent ?? wegen dem *1000 muss er ja nen grossen bereich haben. aber dann muss er auch noch n paar kommastellen haben.. hmm
    ausser ich mache das mit 2 variaben, eine fuer die grosse zahl und eine fuer die genaue..

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    gibt es denn noch andere algorithme fuer eien gaaaz tiefe tiefpass, bei denen ich ncith mit so riesige zahlen rechenn muss oder lässt sich das icht vermeide ??
    meine projekte: robotik.dyyyh

Berechtigungen

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

Solar Speicher und Akkus Tests