Hi, ich versuche zur Zeit mit Hilfe eines 3-Axen-Beschleunigungssensor (es ist auch ein 3-Axen-Gyrosensor enthalten) die Ortsänderung zu bestimmen. Die Beschleunigungswerte kann ich auch ohne Probleme auswerten und in m/s^2 umrechnen. Mein Problem ist jedoch, dass wenn ich die Werte doppelt-Aufintegrieren möchte, damit ich die Ortsänderung herausbekomme, der Geschwindigkeitswerte abdriftet und schlussendlich auch bei einer sehr kleinen Bewegung des Sensors eine riesige Ortsänderung bekomme. Meine Frage ist, ob mir vielleicht jemand einen Filter hierfür sagen bzw. einen Tipp geben kann, wie ich ein besseres Ergebnis erzielen kann. Freundliche Grüße Gertrud
Ein gutes Buch über Numerik. Insbesondere die Stabilitätsbetrachtung dürfte dir weiterhelfen. Fürs erste gibt dir http://de.wikipedia.org/wiki/Numerische_Integration gibt dir eine Fehlerabschätzung und Verfahren, die einen geringeren Fehler haben. Du darfst dir aber auch nicht zuviel erwarten. Gerade in den unteren Bereichen deiner Skalen sind die relativen Meßwertfehler (Zeit und Beschleunigung) naturgemäß deutlich größer, als in den Oberen. Wenn dein Meßwert dann schon einen Fehler von x% aufweist, wird er nach zweifacher Quadratur schon sehr deutlich sein.
gertrud hiller schrieb: > Hi, > > ich versuche zur Zeit mit Hilfe eines 3-Axen-Beschleunigungssensor (es > ist auch ein 3-Axen-Gyrosensor enthalten) die Ortsänderung zu bestimmen. > Die Beschleunigungswerte kann ich auch ohne Probleme auswerten und in > m/s^2 umrechnen. Sofern dein System nicht immer parallel zu den absoluten Koordinaten steht (Das Koordinatensystem deines Beschleunigungsmessers also deckungsgleich mit dem absoluten Koordinatensystem ist) brauchst Du das Gyroskop um damit sozusagen das Koordinatensystem deines Beschleunigungsmessers gegenüber dem absoluten Koordinatensystem zu drehen, damit Du weist wohin dein Beschleunigungsvektor im absoluten Bezugssystem zeigt. > Mein Problem ist jedoch, dass wenn ich die Werte doppelt-Aufintegrieren > möchte, damit ich die Ortsänderung herausbekomme, der > Geschwindigkeitswerte abdriftet und schlussendlich auch bei einer sehr > kleinen Bewegung des Sensors eine riesige Ortsänderung bekomme. > > Meine Frage ist, ob mir vielleicht jemand einen Filter hierfür sagen > bzw. einen Tipp geben kann, wie ich ein besseres Ergebnis erzielen kann. Du suchst ein Kalman-Filter :-)
Dein Beschleunigungssensor hat einen unvermeidbaren Nullpunkt Fehler. Auch, wenn der winzig klein ist, ergibt er dennoch über der Zeit eine stetig wachsende Geschwindigkeit. Da kannst du filtern, soviel du willst, dieser Fehler bleibt. Wenn du andererseits kleine Werte der Beschleunigung ignorierst, kannst du sehr langsame Bewegungen nicht mehr detektieren. Welchen Tod möchtest du sterben?
Die Beschleunigungswerte springen bei Stillstand um +- 1, was in m/s^2 ca 0.1 ist ja aber ein kalman-filter ist für meinen fall viel zu aufwändig und auch zu komplex ich streiche bereits den unteren Bereich der Werte :D
gertrud hiller schrieb: > ja aber ein kalman-filter ist für meinen fall viel zu aufwändig und auch > zu komplex Sieh dir mal den uralten Quadcopter von Radig an. Da findest du ein Kalman Filter, das wirklich winzig ist.
gibt es nicht eine einfachere lösung? mein ziel ist nicht ein nahezu perfektes ergebnis, sondern ein einigermaßen richtiges ergebnis (z.b. tiefpass, hochpass,..)
Nein, das geht einfach nicht. Entweder läuft dir das Positionssignal durch die Drift weg, oder es ist zu ungenau weil die quasi-statische Werte ausblendest. Normalwerweise benötigt man zusätzlich eine Positionsmessung, und sei es nur zur Abstützung des Signals. Mit freundlichen Grüßen Thorsten Ostermann
:/ ok und dann zum kalman filter: kannst du mir den link zu dem uralten quadcopter schicken? und wie fängt man hierfür am besten an?
Der erste Eintrag bei Google führt zum Ziel. http://www.ulrichradig.de/home/index.php/projekte/mikrokopter Dort findest du auch den Quelltext (in C). Und da ist das Kalman Filter. Zugegeben, es ist unvollständig und extrem dürftig kommentiert, aber brauchbar als Grundlage eigener Arbeit.
ok danke aber wenn ich diesen filter google und einen einfach erklärten kalman-filter durchlese versteh ich schon wieder nur bahnhof :/ http://www.cbcity.de/das-kalman-filter-einfach-erklaert-teil-2
:
Bearbeitet durch User
Ein filter bringt leider nichts. Denn der Sensor hat eine Nullpunkt Drift und auch Rauschen. Das Rauschen ist noch am Ehesten zu machen. Die Nullpunktdrift kriegt man moeglicherweise mit einem Temperatursensor kleiner. Mir scheint die Aufloesung des Beschleunigungssensors etwas mager. Das ein +-1 schon +-0.1 m/s^2 sein soll ist unwahrscheinlich. Andernfalls kann man diese Grenze mit einem besseren ADC tiefer legen. Die Nullpunkt Drift kriegt man am Besten mit einer Positionsmessung weg, auch wenn die etwas grob ist. Also laengerfristig, dh mit minuten-Zeitkonstante mit einem GPS abgleichen. Das GPS kann eben auch um 2..10m herumspringen. Und ein Gyro sollte man auch gleich beistellen und einfliessen lassen. Aber eben, man kann mit 20Euro Teile keine 10kE Traegheitsplatform bauen.
ich habe ja schon einen 3-axen beschleunigungs und 3-axen gyrosensor und der drift lieft bei +-1 bei den rohwerten. wenn man diesen in m/s^2 umrechnet dann ergibt sich folgender drift +-1*4*9.81/1024 = 0.04(10 bit auflösung für 1 g und 4 g-messbereich) der adc ist bereits im sensor integriert
:
Bearbeitet durch User
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.