Forum: Mikrocontroller und Digitale Elektronik Problem Beschleunigungswerte -> Ortsänderung


von gertrud h. (Firma: HTL) (falron94)


Lesenswert?

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

von Maxx (Gast)


Lesenswert?

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.

von Heiko J. (heiko_j)


Lesenswert?

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 :-)

von Georg G. (df2au)


Lesenswert?

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?

von gertrud h. (Firma: HTL) (falron94)


Lesenswert?

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

von Georg G. (df2au)


Lesenswert?

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.

von gertrud h. (Firma: HTL) (falron94)


Lesenswert?

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,..)

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

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

von gertrud h. (Firma: HTL) (falron94)


Lesenswert?

:/

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?

von Georg G. (df2au)


Lesenswert?

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.

von gertrud h. (Firma: HTL) (falron94)


Lesenswert?

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
von Georg G. (df2au)


Lesenswert?


von мальеикий тролл (Gast)


Lesenswert?

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.

von gertrud h. (Firma: HTL) (falron94)


Lesenswert?

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
Noch kein Account? Hier anmelden.