PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : G-Force oder Gyros ???



grid
22.09.2008, 13:20
Hallo.

Ich möchte die absolute Roll- und Pitchlage einer Objekts ermitteln.

Beschleunigungssensor: Pitch und Roll immer im Bezug auf Weltkoordinatensystem.

Gyroskope: Pitch und Roll im Bezug auf lokales Koordinatensystem des Objekts.

Stimmen meine Aussagen ???
Ich verstehe nicht ganz wann man Beschleunigungssensoren benutzt und wann Gyroskope?

Vielen Dank im voraus.

BastelWastel
22.09.2008, 14:13
G-Force kannst du maximal bei einem unbewegtem Objekt verwenden um die Neigung zu messen, bei bewegten verfaelschen die Seitenkraefte dein Ergebnis.

Ein Gyroskopsensor gibt dir die Drehrate aus der du durch aufintegrieren den relativen Winkel berechnen kannst, seitliche Kraefte lassen den kalt.

grid
22.09.2008, 14:17
Ich kann also mit einem Beschleunigungssensor messen wie eine Fläche absolut in Roll und Pitch zum Weltkoordinatensystem steht ?

BastelWastel
22.09.2008, 17:39
Wenn sie sich nicht bewegt kannst du über die Gravitation den absoluten Winkel bestimmen, ja.

mare_crisium
23.09.2008, 09:17
@ BastelWastel,

nimm's mir bitte nicht übel, wenn ich Deine (richtige) Aussage ergänze :oops: :


Wenn sie sich nicht

.. oder mit konstanter Geschwindigkeit auf einer Geraden ...


bewegt kannst du über

.. die gemessenen Komponenten des Erdbeschleunigungsvektors ..


den absoluten Winkel bestimmen, ja.

Die Genauigkeit der Bestimmung hängt natürlich von der Genauigkeit (Auflösung, Driftverhalten) der Beschleunigungssensoren ab.

Aus den Messwerten der Gyros kannst Du durch Integration ebenfalls die absolute Lage der Achsen Deines Gerätes berechnen, wenn Du ihre Stellung bei Beginn der Bewegung kennst. Diese Art der Berechnung führt aber über längere Zeiträume zu immer grösseren Abweichungen, weil sich bei der Integration alle Messfehler unerbittlich aufaddieren.

Deshalb nimmt man die Beschleunigungsmessungen, um jedesmal wenn die obengenannten Voraussetzungen erfüllt sind, die Lage der Geräteachsen neu zu "kalibrieren".

mare_crisium

BastelWastel
23.09.2008, 15:16
Nene, mach ich nicht..ich dachte nur es waere ueberfluessig da die wenigsten Plattformen sich mit konstanter Geschwindigkeit bewegen.. ;)

mare_crisium
23.09.2008, 17:21
BastelWastel,

jo, das gibt's selten :-) !

Man kann die beschleunigungsfreien Zeitpunkte daran erkennen, dass der Betrag der gemessenen Gesamtbeschleunigung gerade gleich der Erdbeschleunigung ist. Daraus kann man einen Algorithmus machen:
1. Man integriert aus den Gyro-Messwerten laufend den Erdbeschleunigungsvektor mit. Den nennen wir a_Gyro. Sein Betrag ist g.
2. Parallel dazu misst man mit den Beschleunigungsmessern laufend Richtung a_Gesamt und Betrag G der Gesamtbeschleunigung.
3. Aus beiden Ergebnissen rechnet man den gewichteten Mittelwert für den Einheitsvektor in Richtung des Erdbeschleunigungsvektors nach folgender Methode aus: Als Gewichtsfaktor für a_Gyro nimmt man
w_Gyro = ((G-g)/g)^2
und der für a_Gesamt
w_Gesamt =(1-w_Gyro).
Der gewichtete Einheitsvektor-Mittelwert ist
a_Mittel = (w_Gyro * a_Gyro/g) + (w_Gesamt *a_Gesamt)/G

Die Division durch g bzw. G muss ein, um a_Gyro und a_Gesamt zu Einheitsvektoren zu machen. Jedesmal, wenn G = g gemessen wird, wird das Gewicht von a_Gyro zu Null und das von a_Gesamt wird 1. Den Vektor g*a_Mittel nimmt man als Startwert für den nächsten Integrationsschritt. Das mare-Filter ;-) ist viel einfacher zu berechnen als ein Kalmanfilter und wirkt fast genauso gut.

mare_crisium

Besserwessi
23.09.2008, 21:28
Es reicht nicht danach zu suchen wann die Gesamtbeschleunigung gleich der normalen Erdbeschleunigung ist. Ein Gegenbeispiel wo man 1 g sogar über einen längeren Zeitraum messen kann und trotzdem alles andere als gradlinig bewegt ist: Man bewegt sich in der horizontalen auf einer Kreisbahn um konstant 1 g als Fliehkraft zu erhalten. In Vertikalen hat man dazu einen freien Fall, also keine Beschleuninung. In der Summe ist das eine Spirale abwärts, mit immer 1 g in die selbe richtung für das bewegte System (bis zum Aufprall).

Für eine Messung im Bewegten System braucht man Gyro und G-Force. Mit dem Gyro werden die Gforce daten auf eine festes Korordinatensystem transformiert. Mit den gemittelten transformierten daten kann man dann die Dirft des Gyros korrigieren, denn im Zeitlichen Mittel stimmt die Erdbeshcleunigung wieder. Das einzige Problem sind da sehr hohe Geschwindigkeiten auf einer großen Kreisbahn, sodaß der gyro den bogen nicht merkt. Da hilft dann nur ein entsprechend guter Gypro oder eine Obergrenz für die Geschwindigkeit. Wenn man noch eine unabhängige Geschwindigkeitsmessung hat, kann man noch deutlich besser andere Beschleunigungseffekte (z.B. Fliehkräfte korrigieren).

mare_crisium
24.09.2008, 00:26
Hi, Besserwessi,

Dein erstes Beispiel

Man bewegt sich in der horizontalen auf einer Kreisbahn um konstant 1 g als Fliehkraft zu erhalten.
verstehe ich nicht.

Bei dieser Bewegung addieren sich doch Fliehkraft- und Erdbeschleunigungsvektor zu einer Gesamtbeschleunigung, die auf alle Fälle grösser als g ist. Oder mache ich da einen Fehler?

mare_crisium

JanB
24.09.2008, 06:38
Hallo,
nimm auch Besserwessis zweiten Satz dazu, dann ist seine Aussage richtig und auch verständlich:

(1) Man bewegt sich in der horizontalen auf einer Kreisbahn um konstant 1 g als Fliehkraft zu erhalten.
(2) In der Vertikalen hat man dazu einen freien Fall, also keine Beschleunigung.

Gruß Jan

mare_crisium
24.09.2008, 07:27
JanB,

danke, ich hatte übersehen, dass Besserwessi die Überlägerung von freiem Fall und horizontaler Kreisbewegung meinte. Der Fall kommt in Wirklichkeit aber wirklich äusserst selten vor. Tatsächlich funktioniert der Algorithmus nämlich ziemlich gut.

Aber es ging ja darum, grid zu erklären, dass man sowohl Gyros als auch Beschleunigungsmesser braucht. Und da sind wir ja einer Meinung.

Ciao,

mare_crisium

Besserwessi
24.09.2008, 19:03
Die bewegung war auch nur eine relativ extremes Beispiel das zeigt, das man 1 g als Beschleunigung auch anders hinkrigen kann als in Ruhe. Es gibt noch viel anderen Fälle, wenn man vertikale und horizontale beschleunigung kombiniert. Da man sich dabei aber immer nach unten beschleunigt sind das natürlich alles keine sehr dauerhaften Zustände.

Mexx000
06.11.2008, 18:17
Hallo leute..

Hab eine wichtige Frage an euch!

Ein Kollege und ich arbeiten an einem Projekt, wo wir die Winkel eines Modellschiffes im Raum messen wollen.

Jetzt stehen wir jedoch vor einem Problem:

Vorher ist noch gesagt, dass wir mit Quaternionen rechnen.
Der Gyro driftet zu sehr. Daher ist unsere Idee, dass wir den Gyro mit Hilfe der Accelerometer abgleichen. Unser Gyro, sowie die Accelerometer iefern uns 819x in der Sekunde einen neuen Wert. Sobald das Gerät in Ruhelage ist, wollen wir die Gyrowerte durch den Accelerometerwerte abgleichen.

Jedoch müsste wir dazu die Accelerometer, welches ja Bezug auf Weltkoordinatensystem hat, auf den Bezug des Gyros, also an das Koordinatesystems des Objektes anpassen...

Habt ihr eine Idee wie man das anstellen könnte?

Wir hoffen dass ihr uns helfen könnt...

mfg Mexx

mare_crisium
06.11.2008, 19:53
Mexx000,

guck' mal in die pdf-Datei hier:

http://www.fho-emden.de/~hoffmann/quater12012002.pdf

Sie bezieht sich zwar auf Flugzeuge, aber das stört nicht weiter. Ganz hinten die Programmbeispiele können Dir vielleicht helfen. Nach meiner Meinung gibt's zwei Wege:
1. Den Erdbeschleunigungsvektor aus dem mitbewegten Koordinatensystem ins raumfeste transformieren (das geht nicht direkt, aber man kann die Eulerwinkel aus der Cayley-Matrix des Quaternions ausrechnen), den Ausgleich machen, und daraus ein neues Quaternion ausrechnen.
2. Den im raumfesten Koordinatensystem gemessenen Erdbeschleunigungsvektor in ein Quaternion transformieren und dann direkt die Quaternionen ausgleichen.

Würde mich interessieren, für welchen Weg Du Dich entscheidest und wie's funktioniert! :-)

Leider hat das mare-Filter, das ich im Posting vom 23.09.2008 vorgeschlagen hatte, in der praktischen Erprobung nicht funktioniert :-( .

Ciao,

mare_crisium

Besserwessi
06.11.2008, 21:01
Schiffe sind in der Regeln nicht so dynamisch. Da sollte der Beschleuniguingssensor ausreichen, um unten zu finden obwohl man diese Information auch eher selten braucht, außer für die Neigung seines Segelbootes. Für die Richtung hilft da ein Gyro der nicht driftet, ein Kompass oder ggf. eine Art Leuchtturm.

Mexx000
08.11.2008, 15:00
Naja die zweite Variante haben wir bereits erledigt gehabt.
Jedoch ist eben das Problem, dass die Accelerometerwinkel auf ein anderers Koordinatensystem bezogen ist als die des Gyros..

Wir haben die Accelerometerdaten in ein Quaternion gepackt. Die Gyrowinkel natürlich auch in Quaternionendarstellung.
und jetzt haben wir die Bedingung gestellt, dass wenn der Betrag der Accelerometer ~1 ist, und die Gyrowinkel nur eine minimale Auslenkung zeigt, die Winkel durch die Accelerometer abgeglichen werden..

So alles gut und schön.. nur es bleibt das Problem bestehen, dass die Winkel nicht zusammenpassen...

MFG Mexx

mare_crisium
11.11.2008, 09:43
Mexx,

mir ist nicht ganz klar, was Du mit „Accelerometerdaten in ein Quaternion gepackt“ meinst. Dein „Verpacken“ stelle ich mir so vor:
1.Als Beschleunigungsvektor z.B. (0,0,-1) nehmen
2.Aus den mit den Accelerometern gemessenen Eulerwinkeln gem. Formel 6.18 (auf Seite 17 des Skripts) ein Quaternion bilden.
3.Den Beschleunigungsvektor mit dem Quaternion transformieren.
Das Ergebnis der Transformation (ein Vektor) stellt die Lage des Beschleunigungsvektors im mitbewegten Koordinatensystem des Schiffs dar. Diesen Vektor musst Du mit dem vergleichen, den Du bekommst, wenn Du den Vektor (0,0,-1) mit dem Gyro-Quaternion transformierst. Das gibt Dir die Aussage über die Fehlweisung, die durch die Gyrodrift entstanden ist.

Im Übrigen, die Quaternionen-Darstellung nimmt man bei Flugzeugen bloss deshalb, weil die Eulerwinkel-Darstellung bei Sturz- bzw. senkrechtem Steigflug versagt. Bei Schiffen (ausser vielleicht bei U-Booten) gibt es solche Zustände nicht, jedenfalls nicht solange sie noch schwimmen ;-) . Deshalb kannst Du Deine Rechnungen ohne Schwierigkeiten - und deutlich anschaulicher - auch mit Eulerwinkeln erledigen.

Ciao,

mare_crisium