Hallo zusammen Ich habe bereits viele Foren und Dokumente durchsucht, habe jedoch noch keine wirkliche Antwort auf mein Problem gefunden: Ich habe ein System, welches mit einem 3-achsigen Gyrosensor und einem 3-achsigen Beschleunigungssensor ausgerüstet ist. Von diesem System soll nun die relative Lage im Raum nachverfolgt werden. Relativ meine ich, weil ich ohne Kompass die genaue Richtung ja nicht ermitteln kann. Gesucht ist also nur die Änderung in Bezug zum Einschaltzeitpunkt. Es ist auch keine Strecke, die eventuell zurückgelegt wird, gesucht, sondern nur die Drehungen. Dabei kann das System um jede Achse volle 360°-Drehungen ausführen. Ich bin nun auf das Komplementärfilter gestossen, welches den Winkel um eine Achse jeweils mit Winkel_x = A*(Winkel_x + Gyro_x*dt) + (1-A)*(atan(Acc_y/Acc_z)) berechnen soll. Diese Berechnung hatte ich dann für jede Achse gedacht. Jedoch gibt es ja zB. den Fall, dass das System um die Horizontale dreht, was der Gyrosensor erfasst, der Beschleunigungssensor jedoch nicht. Auch gibt es den Fall, dass, wenn eine Beschleunigungsrichtung Lotrecht vorhanden ist, die anderen zwei Richtungen sehr klein sind. Wenn diese nun ändern, ergibt der atan() davon bereits sehr grosse Winkel, obwohl gar nicht gedreht wurde. Meine Frage ist nun: Ist das Komplementärfilter überhaupt für eine solche Aufgabe zu gebrauchen oder ist dies "nur" für Systeme, welche in der Horizontalen liegen und auf diese Position geregelt werden soll, anwendbar (also zB. Nick und Roll)? Denn alle Informationen, die ich bis jetzt fand, bezogen sich nur auf ein 1- oder 2-achsiges System. Falls es funktionieren sollte, hat jemand Informationen, wie man dies auf dieses genannte System anwenden kann? Oder ist in diesem Fall ein Kalman-Filter notwendig (was sicher ein, wenn möglich zu vermeidender, grösserer Aufwand darstellen würde)? Über Antworten oder Anregungen wäre ich sehr dankbar! Gruss Humpty
Hi, das ist so ziemlich genau das Problem was Multicopter haben. Schau dich dort mal um. Die Meisten benutzen Kalmann Filter welcher beide Sensoren verheiratet und Störungen unterdrückt. Dabei wird von einem Model ausgegangen welches mit den Messwerten gestützt wird.
Hallo Daniel Vielen Dank für deine Antwort. Bei den Multicoptern bin ich eben meistens darauf gestossen, dass vorallem die Nick und Roll-Achse so stabilisiert wird. Dies habe ich bereits ausprobiert und funktioniert gut in meinem System (solange nicht bis 90° gekippt wird, weil dann eine andere Achse Lotrecht wird). Wie jedoch die Gier-Achse erkannt wird, wenn die beiden Anteile des Beschleunigungssensors so klein sind und mit dem Gyro verheiratet werden sollen, habe ich nirgends Antworten gefunden. Sobald eine Achse mehr oder weniger Lotrecht ist, kann ich die Werte des Beschleunigungssensors für eben diese Drehachse nicht wirklich verwenden. Trotzdem wird für Multicopter häuffig ein Komplementärfilter vorgeschlagen. Gruss Humpty
Ist dein System auch bewegt? Also treten auch andere Beschleunigungen auf ausser der Erdbeschleunigung? Das ist meist der Fall. Deshalb kann man sich nicht auf den Beschleunigungssensor alleine verlassen. Darum der Kalmannfilter. Gyro und ACC haben so ihre Nachteile. Man muss etwas intelligentes haben welche beide Messwerte miteinander verheiratet so dass etwas richtiges dabei rauskommt. Bei den Multikopter gibt es verschiedene Systeme. Mit und ohne Achskopplung. Das Problem ist, dass wenn du dein System aus der Nulllage um 90° nach vorne kippst und danach um die Hochachse des Systems (das ist jetzt die Rolllachse von vor dem Kippen) um 90° drehst (gierst) dann ist der Copter nicht mehr um 90° nick sondern um 90° Roll geneigt. Bei einem Quadrocopter zeigt dann nicht mehr der Vordere Motor nach unten sondern der rechte. Um das auszugleichen brauchst du eine Euler-Transformation der Winkel. Was du machen willst ist eine IMU (Inertial measurement unit) Lies dich doch dazu ein. Ist nicht so wild. Google mal nach Achskopplung.
Das System ist sehr langsam bewegt. Es sollte also hauptsächlich die Erdbeschleunigung auftreten. Mit dem Komplementärfilter werden die beiden Sensoren bereits zusammengeführt. Eine Euler-Transformation bin ich am implementieren. Jedoch wird dies denke ich das Problem nicht beheben, dass wenn ich in der horizontalen Lage bin, die Gier-Bewegung aus der Winkelberechnung des Beschleunigungssensors falsche Werte liefert. Muss man sich da ab einem bestimmten Moment nur auf die Gyro-Daten verlassen, weil die Beschleunigungswerte falsche Winkel liefern würden?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.