- LiTime Speicher und Akkus         
Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 59

Thema: Gyro drift beheben/kompensieren

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.07.2018
    Beiträge
    30

    Gyro drift beheben/kompensieren

    Anzeige

    Praxistest und DIY Projekte
    Hey,

    einige, die das hier lesen kennen mich vermutlich schon haha. Ich bin der, der versucht einem Roboter mit Hilfe eines MPU 6050, eine Orientierung zu geben. Wenn ich den Roboter anweise sich um 90 Grad zu drehen, dann soll er sich entsprechend drehen.
    Bis jetzt konnte ich mein Ziel weitestgehend erreichen, doch natürlich gibt es immer Raum für Verbesserung.

    Es geht also mal wieder um den Mpu.
    Dieser bzw das Gyroskop weist einen Drift auf. Der Yaw Wert ändert sich langsam über die Zeit. Fährt der Roboter ein endloses Viereck, dann wird der Drift sichtbar indem sich das Viereck, auf dem der Roboter fährt, "dreht".
    Ich habe schon versucht dem entgegen zu wirken, indem ich in gewissen Zeitabständen einen bestimmten Wert hinzufüge. Natürlich konnte ich kein befriedigendes Ergebnis erzielen.
    Ein weiterer Ansatz wäre doch, anstatt des Mpu 6050 einen 9250 mit Magnetometer zu verwenden. Wenn ich gyro, accel und mag kombiniere müsste der Drift doch ausgeglichen werden oder?

    Kennt jmd ansonsten eine Lösung für das Problem?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    18.01.2012
    Beiträge
    484
    Hallo
    vielleicht hilft das hier weiter:
    http://wiki.sunfounder.cc/index.php?...MPU6050_Module

  3. #3
    shedepe
    Gast
    Der BNO055 (https://learn.adafruit.com/adafruit-...ensor/overview)
    macht das intern.
    Kann man auch selber rechnen: Ist nur wenn man es gut machen will nicht mehr so ganz einfach.

    Fest Drift-Kompensationswerte anzugeben halte ich gelinde gesagt für recht naiv. Der Drift muss nämlich bei weitem nicht konstant sein.

    Wenn du erst mal bei dem MPU6050 bleiben willst könnte dir das hier helfen:
    https://forum.arduino.cc/index.php?topic=215997.0

  4. #4
    HaWe
    Gast
    wobei man vom Regen in die Traufe kommen kann, weil man mit Kompass den Fehler der Drift u.U. gegen den Fehler der Kompass-Fehlweisung eintauscht, wenn man wechselnde magnetische und elektromagnetische Quellen in der Nähe hat.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    28.07.2018
    Beiträge
    30
    Zitat Zitat von ARetobor Beitrag anzeigen
    Hallo
    vielleicht hilft das hier weiter:
    http://wiki.sunfounder.cc/index.php?...MPU6050_Module
    Von dieser Seite habe ich so einen Calibration Script heruntergeladen:
    https://github.com/kkpoon/CalibrateMPU6050

    Das Problem ist leider nur, dass mein Arduino nicht genug Arbeitsspeicher hat.
    Zumindest hat mir die IDE das mitgeteilt. Ansonsten hört sich dieser Ansatz aber sehr
    gut und einfach an.

    shedepe
    Der BNO055 (https://learn.adafruit.com/adafruit-...ensor/overview)
    macht das intern.
    Kann man auch selber rechnen: Ist nur wenn man es gut machen will nicht mehr so ganz einfach.

    Fest Drift-Kompensationswerte anzugeben halte ich gelinde gesagt für recht naiv. Der Drift muss nämlich bei weitem nicht konstant sein.

    Wenn du erst mal bei dem MPU6050 bleiben willst könnte dir das hier helfen:
    https://forum.arduino.cc/index.php?topic=215997.0
    Naja ich habe jetzt halt nur den MPU6050 zur Verfügung. Haha ja stimmt, aber irgendwas
    musste ich ja versuchen, bevor ich nach Hilfe frage.

    Der Link hat jetzt soweit ich gelesen habe nur mit der Berechnung eines Winkels zu tun.

    HaWe
    wobei man vom Regen in die Traufe kommen kann, weil man mit Kompass den Fehler der Drift u.U. gegen den Fehler der Kompass-Fehlweisung eintauscht, wenn man wechselnde magnetische und elektromagnetische Quellen in der Nähe hat.
    Das kann ich mir sehr gut vorstellen. Ich habe mit Magnetometer ziemlich miese Erfahrungen.
    Da war die Kombination aus Accelerometer und Gyro die bisher beste Lösung.


    Nun ich könnte mir jetzt einen besseren MC oder diesen BNO055 besorgen.
    Oder kennt jemand einen Script der weniger speicherhungrig ist?

  6. #6
    HaWe
    Gast
    ich habe sowohl einen CMPS11 als auch einen CMPS12 mit Bosch-Sensor, beide haben 9D-on-board motion signal processing inkl. Kompass, aber beide geben falsche headings aus bei externen Magnet-Störfeldern - die kannst du halt nicht rausrechnen, wenn sie nicht vorhersehbar sondern zufällig und wechselnd auftreten.
    Ich sehe nur die Möglichkeiten:
    - 6D IMU ohne Kompass
    - ab und zu manuell an definierten Bodenmarkierungen nachkalibrieren
    - externe Bakensysteme als Referenzen verwenden

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    28.07.2018
    Beiträge
    30
    Was sind Bakensysteme? Ich kenne Baken nur von Schranken.
    Was soll ich damit machen?

    Naja manuell nachkalibrieren ist ziemlich unschön. Per Hand wieder auf richtigen Kurs setzen meinst du?
    Wenn es nicht anders geht, würde ich natürlich Geld dafür investieren, wenn ich damit mein Problem lösen kann.
    Also ich könnte mir einen Arduino mit mehr Ram holen, damit ich dieses Kalibrationsscript ausführen kann oder
    wie shedepe gesagt hat diesen BNO055 verwenden.

    Was wäre also eurer Meinung nach die beste Lösung?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.643
    Was die beste Lösung ist, kommt auf Deine Umgebung an, in der das Teil betrieben werden soll.


    Nur mal so eine Idee:
    Hast Du schon mal versucht, das Bauteil, dass von Drift betroffen ist, anders zu installieren? Beispielweise seitenverkehrt oder auf dem Kopf, oder beides - um dann zu schauen, wie das mit dem Drift aussieht (also ob der Drift auch gegenläufig ist, wenn das Sensormodul zur jetzigen Position gedreht installiert ist)? Falls es möglich wäre, den Drift in die Gegenrichtung zu bekommen, könnte man zwei dieser Sensoren installieren und den Drift etwas kompensieren (auch wenn er vermtl. nicht ganz beseitigt werden kann). Wenn der Drift mit dem Bauteil nichts zu tun hat, sondern überwiegend von der Erdrotation oder so was abhängt, wird das vermtl. nicht funktionieren.

    Wenn Du ein Kompassmodul hast, dass genau ist, außerhalb magnetischer Felder, die es beeinflussen, dann kannst Du doch dein Teil kalibrieren. HaWe hatte aber mit andern Worten schon geschrieben, dass Du nur dann kalibrieren kannst, wenn Du mit dem Modul außerhalb magnetischer Felder bist, also weg von elektrischen Geräten. Also such die Punkte in der Umgebung, wo das Teil fährt, wo ein Kompass ordentliche Werte liefert - zum Kalibrieren fährst Du die dann an.

    -----------------------------------------------------------------------------------------------------
    Nachtrag:

    Noch ein paar Informationen anderer User bezüglich 6050:

    Nettes Spielzeug. Ich hab's an einem Raspberry Pi via I2C erprobt, wenn man die Null-Werte gut genug bestimmt, zeigen die Gyro-Achsen eine recht geringe Drift, < 1 Grad/Minute. Auch die Wiederholgenauigkeit ist nicht schlecht. Zu Temperaturstabilität etc. kann ich nichts sagen. Achtung: Den beworbenen "Motion Prozessor" Teil des Sensors kann man vergessen, der Hersteller wirbt zwar damit, es gibt aber keine öffentlich zugängliche Dokumentation dazu. Für den SDK kann man wohl ein paar 1000er abdrücken. Für alles andere kann man Datenblätter im Internet finden.

    Soweit ich weis muss man alle Koeffizienten (Nullwerte, Empfindlichkeit, Tempereturkoeffizienten) selbst bestimmen, das kann dauern. Viel weiter bin ich noch nicht gekommen, v.A. um einen anständigen "Künstlichen Horizont" draus zu basteln muss ich meine Mathematikkenntnisse noch ein wenig entrosten.
    Alles in allem erstaunlich für den Preis, wie viel besser Sensoren für den 10fachen Preis sind kann ich nicht sagen. Für den Einstieg auf jeden Fall empfehlenswert.
    Vom Prinzip her taugt das Modell für den Quadrocopter (egal ob Hexa, Octa), allerdings musst du entsprechende Filter-Algorithmen laufen lassen (Kalman, DCM) um den Drift zumindest von Pitch und Roll einzudämmen. Beim Yaw musst du dir einen weiteren Sensor besorgen (zb. Magnetsensor) um auch da den Drift kompensieren zu können. Wenn es dir nur um das Fliegen mit einer Fernbedienung geht, dann brauchst du den Drift von Yaw nicht unbedingt per Microcontroller zu kompensieren, sondern kannst das ganze auch per Fernbedienung trimmen, dass reicht aus.
    Quelle: https://www.amazon.de/Wadoy-MPU-6050...ews-filter-bar

    -----------------------------------------------------------------------------------------------------
    Nachtrag:
    https://www.roboternetz.de/community...hidget-1044%29

    -----------------------------------------------------------------------------------------------------
    Nachtrag:
    Von dieser Seite habe ich so einen Calibration Script heruntergeladen:
    https://github.com/kkpoon/CalibrateMPU6050

    Das Problem ist leider nur, dass mein Arduino nicht genug Arbeitsspeicher hat.
    Vielleicht auf einem nodeMCU versuchen?


    MfG
    Geändert von Moppi (09.12.2018 um 11:40 Uhr) Grund: Zusatzinformationen

  9. #9
    HaWe
    Gast
    oft ist es schon so, dass die Nähe zu Motoren Magnetstörfelder verursachen, die sich bei verschieden starkem Betrieb beider Motoren unkalkulierbar verändern. Man müsste den Sensor 1 m über dem Robot montieren, damit sie nicht mehr stören, und später dürfen auch keine extrernen Magnetfelder oder Eisenträger (Stahlbeton) etc. in der Umgebung vorkommen (Bereits ein Notebook, in dessen Nähe ein Kompass-Sensor gerät, dreht dessen Anzeige um bis zu +/- 180° (!):
    Praktisch also Mumpitz.

    Bakensysteme:
    das sind elektonische Leuchttürme, die du anpeilen oder anpingen kannst (per Radiowellen, Licht, Laser oder Infrarot)

    Fix- und fertiges Bakensystem: Pozyx https://www.pozyx.io/?gclid=EAIaIQob...SAAEgJWgPD_BwE

  10. #10
    shedepe
    Gast
    Also ich widerspreche an der Stelle HaWe erneut, dass Motoren unbedingt Probleme machen müssen. Wenn man Industriemotoren verwendet hat man z.B. sehr geringe externe Magnetfelder weil die Dinger korrekt geschirmt sind.

    Ihr redet grade davon Drift eines Gyros bzw. Accelerometers zu kalibrieren bzw. eliminieren. Der Drift ist so hochgradig von Temperatur usw. abhängig -> Funktioniert nicht. Dazu gibt es zwei Lösungen 1. Man nimmt einen Lasergyro beginnend bei so 500.000€ oder 2. Man beschäftigt sich mit SLAM und nutzt Gyro und Acellerometer für kurzfristig (Im millisekunden bis einstelligen Sekunden Bereich) genaue Zusatzinformationen. Was aber nicht funktioniert ist der Versuch aus dieser Kombi den zurückgelegten Weg zubestimmen. Die Drehung noch eher. Was man machen kann ist wenn man steht (Und weiß dass man steht) die Sensordaten wieder zu 0 kalibrieren.

Seite 1 von 6 123 ... LetzteLetzte

Ähnliche Themen

  1. Nur Gierwinkel benötigt; Gyro Drift wegbekommen? (Phidget 1044)
    Von SeveQ im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 27.03.2013, 23:11
  2. 3-Achs Compass kompensieren
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 05.02.2013, 23:18
  3. Motor Anlaufstrom Kompensieren
    Von RobbyMartin im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 13.06.2011, 19:28
  4. Habe Probleme mit Drift bei Gyro ADIS16250
    Von reflection im Forum Sensoren / Sensorik
    Antworten: 65
    Letzter Beitrag: 14.10.2008, 08:45
  5. Ultraschall Transmitter kompensieren
    Von ernesti001 im Forum Sensoren / Sensorik
    Antworten: 15
    Letzter Beitrag: 23.02.2005, 10:55

Berechtigungen

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

LiTime Speicher und Akkus