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.
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:
LSM303DLHC-Datenblatt: http://www.st.com/web/en/resource/technical/document/datasheet/DM00027543.pdf
Undichter Integrator: http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it
ArduPilot PID-Schleife: http://copter.ardupilot.com/wp-content/uploads/sites/2/2012/12/Alt-Hold-PID-version-3.0.1.jpg