2017-12-17 6 views
1

Ich baue einen selbst ausgleichenden Roboter und ich habe es geschafft, Gyroskop mpu6050 konfigurieren und ich habe jetzt sechs Messungen Ax, Ay, Az und Gx, Gy, Gz. Meine Frage ist, wie berechne ich den Neigungswinkel von Ax, Ay, Az und Gx, Gy, Gz.Wie berechne ich den Neigungswinkel von mpu6050?

Hier ist, was ich bis jetzt weiß. Bitte korrigieren Sie mich, wenn ich falsch liege.

Ich kann die Schwerkraft in g gemessen in horizontaler Position als Ax = Ay = 0 und Az = 1 berechnen. Ich benutze dies, um den Neigungswinkel als angle_accel = arctg(Ay/sqrt(Ax^2 + Az^2)) zu finden. Aber ich bin mir nicht sicher, ob meine Neigung in Ay-Richtung ist oder nicht?

Ich kann den Gyro-Winkel durch Integration bekommen. Mein Kreisel wird 590 mal in 1 Sekunde gelesen (Gx). float angle; //gyro angle angle = angle + Gx; //sum 590 times i.e angle += Gx*590; //END when 1 second is complete

Wird mir das den richtigen Winkel geben? Kippt der selbstbalancierende Roboter in Gx-Richtung?

Ich weiß, dass dies einfache Fragen sein können, aber ich schätze jede Hilfe, um meine Verwirrung zu beseitigen.

Vielen Dank.

Antwort

1

In einer perfekten Welt könnten Sie die doppelte Winkelbeschleunigung integrieren. Aber es übt, es gibt eine wichtige Drift: Es funktioniert nicht richtig.

Die einzige funktionierende Lösung ist das Zusammenführen von Daten von Beschleunigungsmesser, Gyroskop und Magnetometer. Das nennen wir AHRS. Es gibt zwei Arbeitslösungen:

  • Kalman-Filter: schwer zu verstehen, aber zuverlässig, wenn
  • Madgwick's algorithm richtig
  • umgesetzt: einfacher zu implementieren, aber weniger zuverlässig

On this page, finden Sie eine Implementierung (Quelle Code und Beispiel) mit einem MPU-9250, der der große Bruder Ihres MPU-6050

ist
Verwandte Themen