-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: PID + Kompass

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.05.2012
    Beiträge
    57

    PID + Kompass

    Anzeige

    Hallo,

    ich würde gerne eure Meinung zur Herangehensweise für die Integration eines Kompass in meinen PID Regelkreis hören.
    Es geht um ein Kettenfahrzeug, mit zwei DC Motoren. (Die Plattform nähert sich, nach einem Umbau, der Fertigstellung, ist aber noch nicht soweit. Daher kann ich noch nicht testen.)

    1. Macht es eurer Erfahrung nach überhaupt Sinn, einen Kompass (AHRS mit Kompass, Beschleunigungssensor und Gyro) als Referenz zum geradeaus fahren zu nutzen? Der Kompass wird auf einem Mast montiert, um Abstand zu den DC Motoren zu bekommen.

    2. Bisher hatte ich zwei PID Regler, welche beide Motoren auf einer bestimmten Drehzahl halten (via PWM). Damit fährt das Fahrzeug recht gut geradeaus.
    Die Frage ist jetzt ob es Sinn macht, diese recht gut funktionierende Methode mit dem Kompass zu erweitern, oder ob ich nur den Kompass nutzen sollte.
    Es wäre schade, die guten Ergebnisse der Steuerung über die Encoder zu verwerfen, allerdings befürchte ich, dass ich mit beiden Systeme zusammen keine Stabilität hinbekommen.
    Wie würde ich eine Zusätzliche Komponente in die Reglung integrieren, ohne das System instabil zu machen?

    3. Gibt es eine gängige Methode um den Sprung in den Sprung in den Kompass Werten (360->1) zu verarbeiten?


    Generelle Tipps aus der Praxis zum Thema Kompass im Roboter sind sehr willkommen. Da ich leider wenig Zeit für das Hobby habe, freue ich mich über alle vermiedenen Fehlversuche (auch wenn Sie teilweise zum Spaß gehören ).

    Danke und Gruß
    Robert

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hi,

    also wenn ich das richtig verstehe, hast du einen Roboter mit je einem Encoder pro Motor. Dazu willst du jetzt (oder eben auch nicht) einen Kompass integrieren!?
    Ich würde da einen Komplementärfilter verwenden (Hoch + Tiefpass), der die Signale miteinander verechnet und somit einen auf kurze & lange Zeit stabilen Wert ausgibt.
    Den Sprung könnte man z.b. so lösen:
    Code:
    Heading = Kompass_Value()
    
    If Heading >= 0 and Heading_old <= 360 then
       Umdrehung = Umdrehung + 1
    Elseif Heading <= 360 and Heading_old >= 0 then
       Umdrehung = Umdrehung - 1
    Endif
    Heading_old = Heading
    Heading_laufend = 360*Umdrehung + Heading
    Gruß
    Chris

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.05.2012
    Beiträge
    57
    Hallo Chris,

    danke für die Antwort.

    Ist es denn Erfahrungsgemäß sinnvoll, zwei PID Regler zu kombinieren? Oder beeinflussen diese sich zu sehr gegenseitig und erzeugen ein instabiles System?

    Danke für den Anstoß bezüglich des Sprungs in den Winkel Werten. Ich werde die Winkel in einer Skala -180 bis +180 verwenden. Dann muss ich nicht zwingend die 0 beim Auslesen erwischen.

    Gruß
    Robert

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hi,

    wieso möchtest du den zwei PID-Regler verwenden? Kombinier doch einfach die Sensoren via Komplementärfilter.
    Naja, dann korigier doch den Code einfach auf +-180°. Sollte ja auch kein Problem sein

    Gruß
    Chris

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.05.2012
    Beiträge
    57
    Hmm, richtig. Das macht mehr Sinn.
    Kann ich dann einfach die beiden PIDs für RPM nutzen und den Error des Kompass, je nach Richtung der Abweichung, auf den Error der RPM aufrechnen bzw. abziehen? (ggf. mit einem sinnvollen Faktor)


    Ich hatte jetzt nicht erwartet, dass du den Code noch auf +-180° anpasst. Zur Veranschaulichung hat der erste Code gereicht.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hi,

    also du filterst die Signale und erhältst daraus dann einen Winkel. Diesen schickst du in den PID-Regler.
    Ich würde die reinen Encoder-Daten für den D-Anteil des Reglers verwenden und den korrekten Winkel für den P und I Anteil. Oder du verwendest die Encoder-Daten für P & D und den Winkel für I. Da müsste man wohl experimentieren was am besten ist

    Gruß
    Chris

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    robvoi,

    für diese Art von Regelungen nimmt man normalerweise eine Kaskaden-Regelung. Aber um Dir raten zu können, müsste ich erst wissen:
    1. benutzt Du Deine bisherigen beiden Regler als getrennte Drehzahlregler (je einer pro Kette)?
    2. welche Messwerte liefert der Kompass (den Winkel oder auch den cos und den sin des Winkels)?
    3. kannst Du Vektorrechnung (Skalarprodukt, Vektorprodukt)?

    Ciao,
    mare_crisium

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    09.05.2012
    Beiträge
    57
    Die Idee, die Sensorwerte auf PI und D zu verteilen finde ich gut. Muss man dann mal testen.

    @mare_crisium
    1. benutzt Du Deine bisherigen beiden Regler als getrennte Drehzahlregler (je einer pro Kette)?
    Ja, je einer pro Kette. Ich hatte mal versucht, nur mit dem Error aus der Differenz der Drehzahlen zu arbeiten. Das hat aber nicht gut funktioniert.

    2. welche Messwerte liefert der Kompass (den Winkel oder auch den cos und den sin des Winkels)?
    Der Sensor ist eine 9DOF IMU.
    Ich nutze folgende Firmware zur Auswertung: https://dev.qu.tu-berlin.de/projects.../wiki/Tutorial

    Da bekomme ich dann Yaw, Roll und Pitch raus. Bzw auch die Rohdaten, da ich ja direkt Zugriff auf die Sensoren habe.

    3. kannst Du Vektorrechnung (Skalarprodukt, Vektorprodukt)?
    Habe ich mich noch nicht mit beschäftigt. Wenn es keine sinnvolle simple Alternative gibt, kann man sich natürlich einarbeiten.

    Gruß
    Robert

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    robvoi,

    ok, es geht auch ohne Vektoren, aber die Erklärungen werden schwieriger. Es lohnt sich auf alle Fälle, wenn Du Dich mal damit beshäftigst .

    Gut, dass Du die Regelung mit der Differenz der Drehzahlen schon probiert hast, das ist für's regeln der Geradeausfahrt in einer bestimmten Richtung besser geeignet. Bevor wir an die Sache mit der IMU gehen, wär's gut, wenn Du das nochmal probierst.

    Ich schlage vor, die Regelung folgendermassen aufzubauen:
    Es gibt wieder zwei Regler: Einer regelt den Mittelwert der Drehzahlen, der andere die Differenz. D.h. der erste regelt die Fahrgeschwindigkeit, der andere die Drehgeschwindigkeit (nennen wir das lieber Wendegeschwindigkeit, sonst verwechselt man's zu leicht mit der Drehgeschwindigkeit der Antriebsräder).
    Die Stellgrössen der beiden Regler müssen aber noch umgerechnet werden, bevor sie an den Motorsteller weitergegeben werden. Der eine Motorsteller bekommt die Stellgrösse von Fahrt- plus der Stellgrösse des Wendegeschwindigkeitsregler, der andere bekommt die Stellgrösse des Fahr- minus der Stellgrösse des Wendegeschwindigkeits-Reglers.
    Du wirst sehen, so klappt's .

    Ciao,

    mare_crisium

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    09.05.2012
    Beiträge
    57
    Super. So werde ich es mal probieren.
    Es wird ein paar Tage dauern, da ich noch beim Umbau der Plattform bin. (und gestern den einen 5V Downstepper per Kurzschluss geröstet habe).

    Ich melde mich dann, wenn die Tests durch sind.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. PID-Regler
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 16.10.2009, 19:13
  2. PID Regler
    Von Martin. im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 31.07.2008, 14:24
  3. PID Regler
    Von hacker im Forum Software, Algorithmen und KI
    Antworten: 12
    Letzter Beitrag: 27.05.2007, 18:47
  4. PID - Regler
    Von hacker im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 04.06.2006, 20:38
  5. PID-Regler
    Von Distel im Forum Elektronik
    Antworten: 21
    Letzter Beitrag: 28.07.2004, 16:50

Berechtigungen

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