Forum: Mikrocontroller und Digitale Elektronik Positions / Wegbestimmung


von Jan L. (jan_l)


Lesenswert?

Hallo Community,

Ich werde demnächst den DIYDrones ArduIMU+ V3 bekommen. Dieser hat einen 
MPU 6000 3 Achsen Gyro und 3 Achsen Beschleunigungssensor drin und noch 
ein 3 Achsen Magnetometer...

Da ich ihn noch nicht habe, wollte ich mich jetzt erstmal mit ein paar 
mathematischen Problemen auseinandersetzten die ich wohl später haben 
werden.

Mein Ziel ist den Weg den dieser IMU zurücklegt aufzuzeichnen bzw. 
einfach erstmal die werte ausgeben zu lassen. (Im grunde wie hier 
http://www.youtube.com/watch?v=6ijArKE8vKU)

Ich habe ein wenig recherchiert und erfahren das man den Weg eines 
Punktes wohl mit hilfe der doppelten Integration der Beschleunigung 
rausfinden kann (ebenfall dass sich erhebliche fehler beim integrieren 
durch das rauschen ergeben können).

Meine erste Frage wäre demnach erstmal, hat jemand eine Seite oder 
Formel an der Hand mit dessen Hilfe ich rausfinden kann wie ich den 
Beschleunigungsvektor Integrieren kann/muss?

Bei meiner zweiten Frage geht es um Genauigkeit, ich habe was von dem 
Kalkman-filter gelesen und weiß nicht ob dieser dringend notwendig ist 
und wie ungenau so ein Ergebnis bei einer kurzen Bewegung werden 
kann...(Bewegung innerhalb ca. 1m^3)?


Un meine Letzte und wohl entscheindste frage ist, machen meine ersten 
Fragen sinn? Und habe ich mit meinen recht "normalen" Mathekenntnissen 
eine Chance hier weiter zu kommen.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Moin,

da hast die aber ganz schön was vorgenommen.

Hast du mal in den Publikationen von dem Autor des Videos geguckt? 
x-io.co.uk oder so ist seine Seite. Die würde ich mir mal ansehen.
Da du aber anscheinend keine genaue Vorstellung davon hast was dort 
mathematische abgeht empfehle ich dir mal diese Seite
http://www.starlino.com/dcm_tutorial.html

Wie du siehst kommst du ums einlesen nicht herrum und das meißte davon 
was frei im Netz rum geistert ist englisch. Auf deutsch musst du dir 
bücher über inertial Navigation ansehen.

MfG

Tec

von Karl H. (kbuchegg)


Lesenswert?

Jan L. schrieb:

> Meine erste Frage wäre demnach erstmal, hat jemand eine Seite oder
> Formel an der Hand mit dessen Hilfe ich rausfinden kann wie ich den
> Beschleunigungsvektor Integrieren kann/muss?

a ist der ermittelte beschleunigungsvektor
v ist die Geschwindigkeit
s ist der zurückgelegte Weg

alle 3 sind Vektoren

   v = v + a
   s = s + v

fertig.
Aber glücklich wirst du damit nicht werden.

von manu (Gast)


Lesenswert?

Hey,

ich glaube da wirst du ziemlich Schwierigkeiten haben weil du immer 
wieder deine Fehler (durch Messrauschen verursacht) aufintegrieren 
wirst. Wenn du danach ein Kalmann hängst bringt das auch nicht 
sonderlich viel. Ein kommolitone von mir hat das mal versucht und kam 
auf keinen grünen Zweig (genauigkeit ließ zu wünschen übrig)

speicher dir lieber die Positionsdaten die du über das GPS modul 
bekommst alle sec ab, dann hast du deine pos.

von Harald W. (wilhelms)


Lesenswert?

Jan L. schrieb:

> Ich habe ein wenig recherchiert und erfahren das man den Weg eines
> Punktes wohl mit hilfe der doppelten Integration der Beschleunigung
> rausfinden kann (ebenfall dass sich erhebliche fehler beim integrieren
> durch das rauschen ergeben können).

Theoretisch ist das eher simpel. Du kannst ja mal nach Koppel-
navigation googlen. Praktisch musst Du aber mit so grossen
Fehlern rechnen, das dieses Verfahren wohl kaum noch genutzt wird.
Zumal es heute ja wesentlich bessere Verfahren zur Ortsbe-
simmung (GPS) gibt.
Gruss
Harald

von Jan L. (jan_l)


Lesenswert?

aber klappt das denn auf so kleinem raum? zb wenn ich die bewegung von 
nem stift oder ähnlichem auzeichnen möchte

von Karl H. (kbuchegg)


Lesenswert?

Jan L. schrieb:
> aber klappt das denn auf so kleinem raum? zb wenn ich die bewegung von
> nem stift oder ähnlichem auzeichnen möchte

Das Problem ist eher, dass dir dein Programm nach 10 Minuten 
laufenlassen sagen wird, dass dein Bleistift, der eigentlich ruhig vor 
dir auf dem Tisch liegt, mitlerweile schon über dem Brenner in Italien 
ist und mit einem Affenzahn sich in Richtung Sizilien bewegt :-)

Gyros und Beschleunigungssensoren, die dieses Problem nicht in der Form 
haben gibt es zwar, aber die kannst du nicht bezahlen.

Für kurze Integrations-Zeiträume ist das alles kein Problem. Aber bei 
längeren Zeiträumen geht das (wegen der doppelten Integration) ratz fatz 
ins Unbrauchbare.

von Max T. (charmquark)


Lesenswert?

>    v = v + a
>    s = s + v

Da fehlen die Intervalle dt:

v = v + a * dt
s = s + v * dt

Man sollte noch anmerken, dass dies die Variablenzuweisungen und keine 
physikalischen Formeln sind.

von Jan L. (jan_l)


Lesenswert?

ok das heisst sollte ich es irgendwann hinbekommen muss ins manual 
"nicht länger als 5min am stück nutzen xD"

nein mal spass bei Seite. Die ungenauigkeit ist für mich dann erstmal 
nebensächlich. Nur die Funktion will ich erstmal hinbekommen.


Und allgemein zum verständnis. Ich bin mir nicht sicher ob GPS eine gute 
lösung währe weil es hier nicht um große strecken geht.

es geht darum sagen wir zb. den schlag eines tennisschlägers oder so 
aufzu zeichnen... zumindest um die größen ordnung.



@max: diese Definitionen hab ich auch schon gefunden, sind die aber 
nicht nur für den 2D Raum?

von Karl H. (kbuchegg)


Lesenswert?

Jan L. schrieb:

> es geht darum sagen wir zb. den schlag eines tennisschlägers oder so
> aufzu zeichnen... zumindest um die größen ordnung.

Ist kein Thema.
Kann man machen.


> @max: diese Definitionen hab ich auch schon gefunden, sind die aber
> nicht nur für den 2D Raum?


Vektoren sind Vektoren. Wenn du im (geometrisch) 5-dimensionalen Raum 
rechnest, funktioniert das genau gleich. Alle benutzten Operationen sind 
von der Dimensionszahl unabhängig. Und die Natur unterscheidet bei 
Beschleunigungen nicht nach der Richtung.

  eine Beschleunigung führt zu einer Geschwindigkeitsänderung
  eine Geschwindigkeit führt zu einer Ortsveränderung

unabhängig von der Richtung. Nur wenn zusätzliche Kräfte ins Spiel 
kommen (wie zb die Kraft, die der Fussboden auf deine Füsse ausübt) 
ändern sich die Dinge. Aber diese Kräfte gehen dann in die 
Beschleunigung ein :-)

von Christoph (Gast)


Lesenswert?

Prima Idee! Im Flug ist Mathe leichter als ein GPS - und GPS kann jeder. 
Integrieren wird weder möglich (Du hast keine kontinuierlichen Werte) 
noch nötig sein.

Bezeichnungen: Strecke s, Geschwindigkeit v, Beschleunigung a.

Bei konstanter Geschwindigkeit gilt:
s = v * t
(fährst'e doppelt so schnell oder doppelt so lange, kommst'e doppelt so 
weit.) Hier hast Du Dein erstes Integral, der Funktionswert ist konstant 
v.

Bei 0 angefangen, ergibt sich für die Geschwindigkeit

v = a * t

(beschleunigst'e stark, biste genauso schnell, als wenn Du lange ein 
wenig beschleunigst.) Hier hast Du Dein zweites Integral, der 
Funktionswert ist konstant a.

Leider kann man diese Geschwindigkeit nicht in die Formel oben einfach 
einsetzen, weil sie sich ja dauernd ändert. Bei einer gleichmäßigen 
Beschleunigung gilt aber

s = v * t^2 / 2

Das mit dem doppelt integrieren ist zwar richtig (aus der Beschleunigung 
die Geschwindigkeit, aus der Geschwindigkeit die Zeit, aber das hilft 
Dir nicht weiter, weil Du kein schönes Polynom bekommst, das Du 
integrieren kannst. Du kannst Dir eines verschaffen, indem Du auf Basis 
der Stützstellen (=Messpunkte) eines ermittelst: n Messpunkte -> Polynom 
vom Grad n-1. Das willst Du nicht wirklich.
Statt den Umweg über das Polynom zu gehen, solltest Du direkt aus den 
Messwerten eine stückweise gleichmäßige Beschleunigung annehmen.

Die mittlere Beschleunigung ergibt sich bei bekannter Anfangszeit t1, 
Endzeit t2, Anfangsgeschwindigkeit v1 und Endgeschwindigkeit v2:

a = (v2-v1) / (t2-t1)

Wenn Du einen Zeitabschnitt betrachtest und Du kennst die Beschleunigung 
und möchtest die Endgeschwindigkeit ermitteln, dann bekommst Du

a*(t2-t1) + v1 = v2

Damit erhältst Du stückweise die Strecken und kannst die drei Achsen 
einfach per Vektoraddition zusammenzählen und hast dann Deinen Endpunkt.
Achtung: Das gilt nur, wenn Dein Beschleunigungssensor sich nicht dreht! 
Sonst musst Du erst mal die wirkliche Richtung ermitteln.

Wenn's nicht klappt, kannst Du immer noch ein GPS nehmen.

von Max T. (charmquark)


Lesenswert?

Christoph schrieb:
> ...

Ums nochmal zusammenzufassen:

Die beiden Zeilen
v(i) = v(i-1) + a(i) * dt
s(i) = s(i-1) + v(i) * dt
integrieren dir deine Funktion numerisch, auch wenn man das noch ein 
kleines bischen genauer machen könnte.

Da ich die technischen Details nicht kenne, kann ich nicht einschätzen 
ob und wie lange du damit aufzeichnen kannst ohne riesige Abweichungen 
zu bekommen.

von Jan L. (jan_l)


Lesenswert?

also ich hab, dank euch mittlerweile fast das gefühl, dass ich das doch 
vielleicht irgendwie schaffen kann. Um jetzt aber mein verständnis zu 
prüfen werde ich wohl erstmal meinen imu brauchen um damit ein bisschen 
was zu testen.

von Stephan (Gast)


Lesenswert?

Ich hatte kürzlich etwas in die Richtung probiert.
Allerdings mit Gyros und nicht Beschleunigungssensoren. (Du wirst beide 
brauchen)

Drehrate im Intervall von ca. 5ms aufintegriert. Nach 10 Minuten 
(ruhend) hatten sich ca. 10° angesammelt.
Die Temperatur war dabei aber auch schön konstant.

Integration der Gyros über 3 Achsen im erdfesten System (mit 
stümperhafter Umrechnung der körperfesten Werte) war auch ganz 
brauchbar.
In alle Richtungen kreuz und quer geschaukelt, auf den Kopf gestellt, 
wieder ruhig hingelegt:
Abweichung auf allen Achsen 5-10° und das Koordinatensystem war nicht 
mehr ganz rechtwinklig (Rundungsfehler und mein Algorithmus).
Gyros waren nicht kalibriert (nur der Offset war korrigiert).

Stephan

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.