Stoppen der Drift im schwebenden Quadrocopter

Ich werde irgendwann eine 4-Propeller-Quadrocopter-Drohne bauen. Ich möchte das Fliegen relativ einfach machen, indem ich es dazu bringe, still zu schweben, wenn die Bedienelemente nicht berührt werden.

Kann jemand einige Informationen darüber geben, wie ich den Quadrotor dazu bringen würde, in der Luft zu bleiben? Ich dachte an Beschleunigungsmesser zum Messen von Drift und Rollen / Nicken / Gieren, aber sie sind nicht empfindlich genug, um eine sehr langsame Drift zu erkennen, beispielsweise aufgrund einer leichten Brise. Ist GPS genau genug, um die Drift auf der 10-cm-Skala auszumerzen (d. h. eine 10-cm-Drift (oder vielleicht weniger?) von der ursprünglichen Position der Drohne zu erkennen)?

Wenn Sie gerne Roboter bauen, vergessen Sie nicht, sich dem Robotics Proposal anzuschließen

Antworten (3)

Ich denke, dass Sie eine Kombination von Sensoren verwenden möchten. Die Beschleunigungsmesser und Gyroskope können starke Brisen korrigieren. Sie können dann GPS verwenden, um der längerfristigen Abweichung (oder Verzerrung, wie sie manchmal genannt wird) entgegenzuwirken. Ich denke, dass die Kombination dieser beiden Sensoren in einer Art Filter (wahrscheinlich ein Kalman) Ihre Positionsdrift minimiert hält.

GPS allein wird jedoch nicht genau genug sein. Ein alternativer Ansatz zum Kalman-Filter (der etwas mathematisch schwer werden kann) ist die Verwendung des DCM-Algorithmus von DIYdrones . Es scheint bisher viel Erfolg damit zu haben.

Schließlich verwendet der Quadrotor der Parrot-Drohne eine nach unten gerichtete 60-fps-Kamera, um die Drift auszugleichen. Es schaut nach unten und extrahiert Merkmale aus dem Boden darunter und verwendet dann eine Art visuelle Odometrie (ich nehme eine Art optischen Flussalgorithmus an), um festzustellen, wie weit der Quadrotor gedriftet ist. Ich glaube, dass dies beim Parrot nur in geringen Höhen funktioniert, aber ich sehe keinen Grund, warum es nicht auf eine größere Höhe ausgedehnt werden könnte.

Danke dir! Ich denke, ich werde mich für die nach unten gerichtete Kameraoption entscheiden, da ich die Drohne über einen LPC1768 mit Strom versorgen werde. Das ist genug Rechenleistung, um eine grundlegende Zeilenerkennung bei 640 x 480 durchzuführen, richtig? Vielen Dank für Ihre alternative Lösung zur Verwendung von Gyroskopen und GPS für die Langzeitdrift. Kennen Sie auch Sensoren, die Drift erkennen können?
Zusätzlich zur IMU mit 6 Freiheitsgraden habe ich von Leuten gehört, die Magnetometer verwenden, um die Langzeitdrift zu bestimmen, indem sie Änderungen im Erdmagnetfeld erfassen. Ich weiß nicht, ob dies unbedingt eine gute Option ist, da das Feld um Hochstromgeräte (wie 4 Motoren) schnell schwanken kann und nicht linear variiert.
Das Problem bei Kameras in größeren Höhen besteht darin, dass sehr geringe Rollbewegungen mit zunehmender Höhe zu immer größeren Bildverschiebungen führen, es sei denn, die Kamera befindet sich auf einer selbstnivellierenden Halterung.
@mikeselectricstuff - Könnten Sie den Bildverarbeitungsalgorithmus nicht basierend auf der Höhe anpassen?
@mjh Ich denke, dass das Problem am besten in einem Beispiel zu sehen ist. In einer Höhe von 50 Fuß führt eine 5-Grad-Rollung oder -Neigung (ziemlich typisch für die Bewegung in X- oder Y-Richtung auf einem Quadrotor) dazu, dass sich Bodenmerkmale bewegen (tan (5 Grad) * 50 Fuß) = 4,25 Fuß (grobe Mathematik ). Auch wenn sich der Quadrotor nicht bewegt, verschieben sich alle Bodenmerkmale um 4 Fuß. Dies könnte kompensiert werden, aber es wird schwierig mit Auflösungs- und Berechnungseinschränkungen.
Ich habe darüber nachgedacht und bin zu dem gleichen Schluss gekommen. Ich möchte, dass es drinnen ideal schwebt, also ist die Höhe glücklicherweise kein wirkliches Problem.
@JamWaffles Betrachten Sie diesen und Ihren anderen Beitrag, vielleicht möchten Sie erwägen, sich eine der Parrot-Drohnen zum Spielen zu besorgen. Wir haben zwei für Demonstrationen und Spielzeit, und sie sind ziemlich fähige kleine Maschinen. Mit der Konfigurationssoftware können Sie die PID-Verstärkungen und Kameradaten sehen/ändern. Es ist ein guter Ausgangspunkt für Ihre Experimente.
Wie ich in electronic.stackexchange.com/questions/7670/… sagte , sollten Sie die Höhe nicht kennen müssen. Sie versuchen, die Bewegung des Bodens zu minimieren und nicht die Geschwindigkeit daraus zu messen. Ein guter Feedback-Controller sollte unabhängig von der Höhe funktionieren, oder?

GPS ist nicht genau genug. Beschleunigungsmesser können nur die Beschleunigung messen, keine konstante Drift.

Vielleicht ein lokalisiertes Ortungssystem mit Beacons und Trilateration oder so?

Vielleicht billige Kameras, um die Drift relativ zum Boden oder anderen stationären Objekten zu erkennen? Sie können Drehungen mit den Gyroskopen aufheben und dann eine Kreuzkorrelation zwischen aufeinanderfolgenden Frames durchführen, um die Drift relativ zum Boden zu erkennen, wie eine optische Maus funktioniert.

Wenn ich dies mit einer nach unten gerichteten Kamera tun würde, wäre das erste, was ich mir wünschen würde, eine hohe Leistung und eine relativ niedrige Auflösung (dies ist ein Sensor, ich interessiere mich nicht wirklich für die Eingabe der Kamera) und daher die Kamera, die ich hätte Verwendung dafür wäre eine optische Maus: Sie haben sehr schnelle Kameras mit niedriger Auflösung. Ich bin mir sicher, dass Sie mit ein bisschen Hacking eine Linsenanordnung finden könnten, mit der sie zwischen Merkmalen auf dem Boden unterscheiden können, und dann könnten Sie einen differenzextrahierenden optischen Flussalgorithmus verwenden, um diese Eingabe zu verarbeiten.

Ich bezweifle, dass Sie enorme Aktualisierungsraten benötigen; Die relativ langsame Geschwindigkeit eines Quadrotors und seine Reaktionszeit machen es nicht wirklich zu einer guten Passform.
Danke für die Alternativlösung Choscura. Ich werde mich auf jeden Fall mit einer optischen Maus befassen - ich brauche den Kamerateil einer Kamera auch nicht ;-) Das einzige Problem, das ich sehe, ist, dass der Differenzalgorithmus möglicherweise nicht so gut funktioniert, wenn das Bild unscharf ist . Habe ich recht?