Wie können wir den Beschleunigungsmesser zur Höhenschätzung verwenden?


9

Ich implementiere derzeit einen autonomen Quadcopter, den ich kürzlich fliegen ließ und der stabil war, der sich jedoch bei erheblichen externen Störungen nicht selbst korrigieren kann. Ich gehe davon aus, dass dies auf unzureichend eingestellte PID-Verstärkungen zurückzuführen ist, die im Flug weiter optimiert werden müssen.

Laufender Fortschritt:

  • Ich habe ein Barometer ausgeschlossen, da der Umfang meiner Forschung nur der Innenflug ist und das Barometer laut meinem Kollegen eine Abweichung von + -5 Metern aufweist.
  • Ich verwende derzeit einen Ultraschallsensor (HC-SR04) für die Höhenschätzung mit einer Auflösung von 0,3 cm. Ich fand jedoch, dass die Bildwiederholfrequenz des Ultraschallsensors von 20 Hz zu langsam ist, um eine ausreichend schnelle Reaktion für die Höhenkorrektur zu erhalten.
  • Ich habe versucht, die Beschleunigungen auf der Z-Achse vom Beschleunigungsmesser zu verwenden, um Höhendaten zu erhalten, indem ich die Beschleunigung integriert habe, um die Geschwindigkeit zu erhalten, die für die PID-Rate in einem kaskadierten PID-Reglerschema verwendet werden soll. Die aktuelle Implementierung für den Höhen-PID-Regler ist ein Einzelschleifen-PID-Regler, der einen P-Regler mit der vom Ultraschallsensor eingegebenen Position verwendet.
  • Ich hatte die negativen Beschleunigungsmessungen aufgrund der Schwerkraft berücksichtigt, aber egal wie viel ich den Versatz berechne, es gibt immer noch eine negative Beschleunigung (z. B. -0,0034). Ich habe den Gravitationsversatz berechnet, indem ich den Quadcopter so eingestellt habe, dass er sich noch auf einer ebenen Fläche befindet, und dann 20.000 Proben von der Z-Achse des Beschleunigungsmessers gesammelt habe, um den "Versatz" zu erhalten, der als konstante Variable gespeichert ist. Diese Variable wird dann vom Z-Achsen-Ausgang des Beschleunigungsmessers subtrahiert, um den Versatz zu entfernen und ihn auf "Null" zu bringen, wenn er nicht beschleunigt. Wie in der Frage gesagt, besteht immer noch eine negative Beschleunigung (z. B. -0,0034). Mein Quad steigt dann ständig in die Höhe. Mit nur dem Ultraschallsensor P-Regler schwingt mein Quad um 50 cm.

Wie kann mit dieser konsistenten negativen Beschleunigungsmessung effektiv umgegangen werden?

Mögliche Lösung : Ich plane, einen kaskadierenden PID-Regler für den Höhenhalt mit dem Innerloop (PID-Regler) unter Verwendung des Beschleunigungsmessers und dem äußeren Regelkreis (P-Regler) unter Verwendung des Sonarsensors durchzuführen. Mein Berater sagte, dass bereits ein P-Regler mit einer Schleife ausreicht, um den Quadcopter auch mit einem langsamen Sensor auf seiner Höhe zu halten. Ist das genug? Ich bemerkte, dass der Quadcopter nur mit der P-Verstärkung seine Höhe überschreiten würde.

Geben Sie hier die Bildbeschreibung ein

  • Leaky Integrator: Ich fand diesen Artikel, in dem erklärt wurde, wie er mit den negativen Beschleunigungen mit einem Leaky Integrator umgegangen ist. Ich habe jedoch einige Probleme zu verstehen, warum dies funktionieren würde, da ich denke, dass der negative Fehler nur zu einem positiven Fehler führen würde, der das Problem nicht löst. Ich bin mir nicht ganz sicher. http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it

  • Single-Loop-PD-Controller nur mit Ultraschallsensor: Ist dies mit der Rückmeldung eines langsamen Sensors möglich?

Quellen:


Wie berechnet man den Gravitationsversatz? Welcher Beschleunigungsmesser ist das? Können Sie ein Datenblatt verknüpfen?
Chuck

1
Schwingung bedeutet, dass Sie Dämpfung benötigen !!!
holmeski

1
Denken Sie daran, dass es beim Stapelaustausch besser ist, Ihre Frage zu bearbeiten, um in Kommentaren angeforderte Informationen hinzuzufügen, als weitere Kommentare hinzuzufügen. Kommentare dienen dazu, Fragen und Antworten zu verbessern, und lenken ab. Deshalb versuchen wir, sie auf ein Minimum zu beschränken. Wenn alle zur Beantwortung der Frage erforderlichen Informationen darin enthalten sind, können die Kommentare aufgeräumt (gelöscht) werden.
Mark Booth

@Chuck Ich habe den Beitrag mit den relevanten Informationen bearbeitet :)
user123456098

Ich arbeite an demselben Projekt. Derzeit implementiere ich einen Cascade PID-Regler zur Stabilisierung der Fluglage des Quadcopters mit Arduino. Ich möchte jetzt an der Höhe arbeiten. Implementieren Sie es ohne Geschwindigkeitsschätzung? Und ich habe eine Frage, muss ich die Transformation von Erde zu Körperrahmen schätzen oder kann ich es ohne die Transformation implementieren
SALAM ALBARADIE

Antworten:


10

Das auf dem Pixhawk getragene Barometer hat eine Höhenauflösung von 10 cm. Wenn dies nicht ausreicht, können Sie einen Kalman-Filter schreiben, der die Beschleunigungsmesserdaten im Vorhersageschritt und den Ultraschallsensor und / oder das Barometer im Korrekturschritt verwendet.

Aber ich sehe nicht, dass dies Ihr Problem löst. Eine genaue Messung der Höhe bei 20 Hz sollte ausreichend sein, wenn Sie nur versuchen, die Höhe zu halten.

Was ist die Zeitkonstante / Eigenfrequenz und Dämpfung Ihres Controllers?

Ich glaube, ich hatte Ihre Frage heute Morgen noch nicht fertig gelesen (es war vor meinem Kaffee). Die Beschleunigung vom imu ist die Messung von Beschleunigung plus Schwerkraft. Subtrahieren Sie den Schwerkraftvektor von der Messung, um die Trägheitsbeschleunigung des Imu zu erhalten. Sie können integrierte Beschleunigungsmessungen niemals steuern. Die Messungen sind durch Rauschen verfälscht und Sie können dies nicht korrigieren.

--- Antwort auf den Kontrollteil der Frage

Nehmen wir an, Sie versuchen nur, eine Höhe zu halten, und sind vorerst nicht besorgt, eine Position zu halten (obwohl dieser Ansatz auch dafür funktioniert). Und wenn Sie davon ausgehen, dass Sie den gewünschten Schub (im Rahmen der Vernunft) befehlen können, wird dies zu einem einfachen Problem.

Ein erster Durchgang zur Systemdynamik sieht so aus

z¨=um- -G

z

u=ufb+uhÖver

Unsere neue Dynamik sieht aus wie

z¨=ufb+uhÖverm- -G=ufbm

Cool! Jetzt entwerfen wir ein Kontrollgesetz, damit wir eine gewünschte Höhe erreichen können.

Unser Steuerungssystem wird eine virtuelle Feder und ein Dämpfer zwischen unserem Quad und der gewünschten Höhe sein (dies ist ein PD-Controller).

z¨=kp(zdes- -z)+kd(z˙des- -z˙)

kpkd

An dieser Stelle möchte ich noch einmal betonen, dass die Integration von Beschleunigungsmesserdaten kein guter Weg ist, um Zustandsschätzungen zu generieren. Wenn Sie wirklich schnell etwas zusammen hacken möchten, führen Sie die Sonarmessungen durch einen Tiefpassfilter mit einer geeigneten Abfallfrequenz. Ihr Fahrzeug wird nicht mit 20 Hz schwingen, daher ist es in Ordnung, nur die Sonardaten auszuschalten.


1
Vielen Dank, ich habe gerade die Implementierung vor 4 Tagen abgeschlossen und es hat mit sehr kleinen Schwingungen + -2
cm

froh das zu hören! Sie sollten in der Lage sein, die Schwingungen zu töten, indem Sie kd erhöhen, vorausgesetzt, Sie haben eine gute Schätzung der Geschwindigkeit :)
holmeski
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.