PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeitsmessung via Beschleunigungssensor



Ozzy
21.09.2007, 12:15
Moin,

ich habe hier einen 3-Axen Beschleunigungssensor rumliegen und möchte hier mit nun die Geschwindigkeit messen. Das Problem ist nun eben nur, wie.
Wenn ich die x-Achse messen möchte, und den Sensor nach vorne schiebe, bekomme ich ja die Beschleunigung. Stelle ich ihn aber noch etwas schräg, dann hat er ja auch noch eine Beschleunigung nach unten...

Könnt Ihr mir sagen, wo ich etwas zu dem Thema finde, um dann letzendlich die Werte zu bekommen, die ich gerne hätte?

MfG, und vielen Dank schon einmal, Ozzy

PicNick
21.09.2007, 13:18
Das is eine Sinus-Cosinus-Orgie. Du hast (Beschleunigungs-)Vektoren, die ergeben eine Resultierende in irgendeine Richtung, das ist dann das, was du in Geschwindigeit umrechnen mußt.
Was dir aber noch fehlt, ist es, die Verdrehung selbst mitzukriegen. Das ist der nächste Sensor, der da mitspielt.
Und die Erdkugel dreht sich aber auch noch, d.h. das alles ändert sich dauernd.
Läuft auf eine Trägheits-Navigation hinaus, leider mit Aufsummierung der Fehler. uiuiui

Ozzy
21.09.2007, 13:42
Genau das meine ich; nur eben etwas exakter... Für die Verdrehung habe ich noch Gyros, soweit kein Problem.
Ich bräuchte nur eben mal etwas, wie ich die ganzen Werte zusammenrechne und integriere...

MfG, Ozzy

recycle
21.09.2007, 13:48
ich habe hier einen 3-Axen Beschleunigungssensor rumliegen und möchte hier mit nun die Geschwindigkeit messen.

Das unschöne daran ist, dass die Beschleuningung bei konstanter Geschwindigkeit gleich Null ist.
D.h. mit deinem Beschleunigungssensor kannst du die aktuelle Geschwindigkeit gar nicht messen, sondern nur Berechenen indem du in Zeitintervallen die Beschleunigung/Zeit misst und das Ergebnis ständig aufaddierst.
Da die Beschleunigungen während der Zeitintervalle in denen du sie misst höchstwahrscheinlich nicht konstant sein wird, enthält jede einzelne Messung einen Fehler und zur Berechnung deiner Geschwindigkeit addierst du zwangsläufig auch alle diese Fehler.
D.h. je länger du die Geschwindigkeit errechnest, desto falscher wird das Ergebnis.

PicNick
21.09.2007, 13:51
je länger ..... desto falscher ....
Ich glaub', das weiss er schon. Ihm geht's um die theoretische Formel, die ja theoretisch auch ein präzises Ergebniss liefern würde.

recycle
21.09.2007, 18:10
Ich glaub', das weiss er schon. Ihm geht's um die theoretische Formel, die ja theoretisch auch ein präzises Ergebniss liefern würde.


OK, wie könnte die lauten?
Bei einer der 3 Achsen könnte er je nach Anwendung Glück haben, dass sie rausfällt, weil man die Geschwindigkeit ja eigentölich nur in Bewegungsrichtung angibt.

Die Messwerte der beiden verbleibenden Achsen setzen sich aus der Beschleunigung in Bewegungsrichtung und der Erdbeschleunigung zusammen.
Da er davon ausgeht, dass er den Winkel mit einem Gyro messen kann, können wir den Winkel zur Erdbeschleunigung als bekannt voraussetzen.

Wenn man die Beschleunigung in Fahrtrichtung messen will, bietet es sich an auch den Messwert der Achse in Fahrtrichtung zu verwenden.

Auf gerader Strecke sollte die Beschleunigung in Fahrtrichtung dann "Messwert mal Cos(Kippwinkel)" sein. Da dann noch den Schnörkel für ein Integral davor und ein "dt" dahinter und dann könnte das der Sache doch schon recht nahe kommen.
(klingt irgendwie zu einfach, da ist sicher irgendein peinlicher Fehler drin)


Wenns bergauf oder bergab geht passt das leider nicht mehr, es sei denn der Fehler durch das rausrechnen der Erdbeschleunigung hebt sich zufällig mit dem Fehler durch den dann ebenfalls falschen Kippwinkel auf ;-)

Aber das schöne an theoretischen Formeln ist ja, dass man die einfach auf die Bewegung in horizentaler Richtung einschränken kann.
In der Praxis gehört es sich eh nicht mit der Geschwindigkeit anzugeben die man bergab erreichen kann ;-)

Blöde ist nur, dass sich ein Gyro zum Messen eines Winkels genauso gut oder schlecht eignet, wie ein Beschleunigungssensor zum messen der Geschwindigkeit.
Der Gyro misst die Winkelgeschwindigkeit, d.h. u,m an den Winkel zu kommen muss man fast nochmal dasselbe Spiel durchziehen.
In der Praxis hat man dann noch einen Fehler den mal erst mal mit dem fehlerbehafteten Messwert multipliziert bevor man das Ergebnis aufaddiert.

Ozzy
21.09.2007, 18:51
Jo, eine Achse fällt wohl raus, aber mein Problem ist eben die Erdbeschleunigung, wenn die Achse gekippt ist... Also wer hier eine Formel für mich hätte...
Den Kippwinkel habe ich, das ist kein Problem. Aber eben der Rest...

MfG, Ozzy

beppo
22.09.2007, 00:05
Hallo Ozzy,
dein Beschleunigungssensor gibt Dir die Gesamtbeschleunigung an (ein 3D-Vektor im Raum). Wenn du den Kippwinkel hast, kannst du die Gravitationsbeschleunigung berechnen (auch in 3D-Vektor im Raum). Eine Vektor-Subtraktion ergibt den tatsächlichen Beschleunigungsvektor. Um die Geschwindigkeit zu erhalten, musst du diesen Vektor über die Zeit integrieren und die Ausgangsgeschwindigkeit dazuaddieren. (Du könntest die Integration nochmal machen und würdest die Position des Sensors erhalten.)

mfg beppo

mare_crisium
22.09.2007, 04:06
Ozzy,

wie fit bist Du denn in Vektor- und Differentialrechnung? Die Theorie, die Du suchst, besonders die in drei Dimensionen, ist nur damit zu verstehen.

mare_crisium

Ozzy
22.09.2007, 09:16
Naja,

schon ziemlich fit... Was mir nur eben fehlt, sind die Formeln...

Manf
22.09.2007, 09:45
Hier gibt es eine Beschreibung.
http://www-sst.theoinf.tu-ilmenau.de/studentsWorks/works/documents/1996/Diplom1996_ToralfSchumann.pdf
Du kannst aber auch hier noch einmal nachsehen; es waren auf den ersten zwei Seiten noch zwei andere recht ausführliche Darstellungen dabei.
http://www.google.de/search?hl=de&q=tr%C3%A4gheitsnavigation+pdf&meta=
Manfred

Ozzy
22.09.2007, 09:51
Danke, dann werde ich da mal nachsehen, und melde mich ggf. noch mal. Falls jemand Code dazu hätte, egal in welcher Sprache, wäre ich auch dankbar dafür!!!

MfG, Ozzy

mare_crisium
22.09.2007, 15:49
Ozzy,

hilft Dir das hier vielleicht (siehe Attachment)? Das ist eine Erweitung der Diskussion aus dem Thread

Software, Algorithmen und KI » Algorithmn zur Bahnplanung

Ansatzweise wurde da auch über Code gesprochen.

Ciao,

mare_crisium

oberallgeier
22.09.2007, 22:22
Hei Ozzy,

wie wärs, wenn Du die effektive Beschleunigung im Raum, also die Summe über alle drei Achsen, ausrechnest? Dann wird der Winkelfehler von geringerer Bedeutung.

Unabhängig werden Fehler beim Messen des Sensors und Auswerten (Rechen) der Sensordaten auftreten. Klar.

Übrigens muss diese dreichachsige Rechnerei keine Sinus- Cosinus- Orgie werden. Das kann man recht leicht mit dem Pythagoras hinkriegen - und dann braucht man diese aufregend langwierigen Winkelfunktionen nicht.

Wär das eine Hilfe für Dich?

Ciao sagt der Joe
DerAltevomBerg

Ozzy
23.09.2007, 08:08
Hi,

ja, das wäre eine Hilfe für mich; und wie funktioniert das jetzt richtig?

MfG, Ozzy

Manf
23.09.2007, 09:49
Hier gibt es ein paar anschauliche praktische Werte für Messergebnisse bei der Auswertung einer Richtung.
http://www.studienseminare-ge-gym.nrw.de/K/fachseminar-mathematik/projekte/radeln/mnu-traegheitsnavigation/traegheitsnavigation.pdf

Bei den klassischen kardanisch aufgehängten Systemen, die durch Kreisel stabilisiert wurden konnte man die translatorischen Bewegungen in x, y und z Richtung getrennt auswerten.

Neuere Systeme (ca.> 1970) sind mechanisch einfacher aufgebaut und man rechnet die erfassten Drehbewegungen ein.
Manfred

Ozzy
24.09.2007, 08:02
Hi,

also so richtig habe ich jetzt noch nichts gefunden, was mir bei meinem Problem weiterhilft... Was ich suche, ist eine kleine Anleitung, Formeln, so etwas in der Art...

MfG, Ozzy

oberallgeier
24.09.2007, 08:43
Hallo Ozzy,


... Was ich suche, ist eine kleine Anleitung, Formeln, so etwas in der Art...

Eine kleine Anleitung hast Du sicher in der Schule bekommen. Und die Formeln dazu.

v = b * t

...
Geschwindigkeit v
= Beschleunigung b
* Zeit t

Das gilt natürlich auch für die entsprechenden Anteile in jeder Koordinatenrichtung >>> ausgenommen rotatorische Koordinaten (weil die andere Formeln brauchen) <<<. UND es gilt auch für Differenzen.

Die entsprechenden Anteile in den verschiedenen Koordinatenrichtungen können superponiert (überlagert, vektoriell addiert) werden.

Ich sehe Dein Problem, dass Du die dahinterliegende Physik nicht (nicht mehr??) kennst. Aber um Dein Problem lösen zu können müsstest Du:
a) die Physik bzw. die Mechanik der Bewegung kennen
b) die entsprechenden Begriffe kennen
c) mit den wirklich einfachen Rechenverfahren umgehen können.

Oder lass Dir einfach von einem Gymnasiasten ein paar Nachhilfestunden geben. Das meine ich jetzt nicht überheblich. KEIN Mensch muss diese Dinge kennen, aber sie sind einfach. Blos würde es dieses Forum (meiner Meinung nach) sprengen hier einen Grundkurs in Bewegungslehre zu bringen. Aber das war ja auch garnicht Dein ursprünglicher Wunsch. Du wolltest Hinweise. Die stehen alle da.


... ich habe hier einen 3-Axen Beschleunigungssensor rumliegen und möchte hier mit nun die Geschwindigkeit messen. ... ... Könnt Ihr mir sagen, wo ich etwas zu dem Thema finde, um dann letzendlich die Werte zu bekommen, die ich gerne hätte?

Du musst Dich in die entsprechende Theorie einarbeiten. Oder Dir das alles von jemand anderem ausarbeiten lassen.

Viel Glück

Ozzy
24.09.2007, 08:53
Klar, Geschwindigkeit rausrechnen ist ja kein Problem; mir machen nur die Einwirkungen der anderen Achsen Gedanken.
Die Winkelberechnungen mittels des Beschleunigungssensors habe ich ja schon fertig (ein bischen sinus hier, ein bischen cosinus da...), doch da habe ich ja nichts mit beschleunigung zu tun.

Wie gesagt, was ich suche, sind richtige Formeln, wie ich welche Werte unter berücksichtigung der Lage und der Erdbeschleunigung berechne. Und ich hatte soetwas nicht auf dem Gymnasium...

MfG, Ozzy

uffi
05.10.2007, 11:45
Dann schau mal hier:

http://home.arcor.de/uffmann/ARTIST3.htm

"Calculating Tilt Angle from 2-Axis Accelerometer Data

http://home.arcor.de/uffmann/ARTIST-Dateien/fig5.gif

Then the forward (or backward) acceleration a of the robot can be calculated to:

a= +- SquareRoot( Square(x) + Square(y) - 1)

+ for the case a>0

- for the case a<0

and

tilt=arcsin((x-y*a)/(Square(x)+Square(y)))

# for the case a>0

tilt=arcsin((x+y*a)/(Square(x)+Square(y)))

# for the case a<0

tilt=arcsin(x)

# for the case a=0

All values are normalized to the earth's acceleration g (g=1).

The remaining unknown figure is the sign or direction of the acceleration a to get the correct result for the tilt. This could be derived from the motor control comparing the motor power during the last two control steps before this measurement.

When adapting these formulas for the tilt angle from accelerometer data, please care for the fact, that the accelerometers have different sign for dynamic and static acceleration. This fact is not yet considered in the above mentioned formulas. So the sign of the acceleration "a" must be inverted for the real measurements. "