Forum: Mikrocontroller und Digitale Elektronik IMU Lagebestimmung/Anfänger


von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe die Aufgabe bekommen die Daten eines IMU (LORD 3DM-GX4-45 
https://www.microstrain.com/inertial/3dm-gx4-45) auszulesen und somit 
die Aktuelle Position zu bestimmen sowie bei Bewegung eine Art 
Bewegungsmuster zu erstellen. Hierzu benötige ich ja Quasi die eigene 
Position in einem Koordinatensystem, verbessert mich gerne wenn ich 
falsch liege.

Bisher habe ich mit IMU's keinerlei Erfahrung und weiß nicht so recht wo 
ich ansetzen soll um die Aufgabe zu lösen. Mir wurde zur Aufgabe anfangs 
gesagt das ich die Positionsdten durch den eingebauten Kalman Filter 
erhalte, was wie ich glaube nicht so ist da dieser,wie ich verstanden 
habe, lediglich die Daten "bereinigt" und ausgibt.

Okay, also die Daten die erhalten kann sind unter anderem 
Beschleunigungs und Rotationsdaten mit denen ich irgendwie über 
Integrationen an Positionsdaten(also quasi x,y,z) kommen könnte. Jetzt 
habe ich mehrere Beiträge dazu gelesen in denen davon wegen steigender 
ungenauigkeit abgeraten wird.
Von mir wird erwartet das ich am ende eine art Punktwolke, welche das 
Bewegungsmuster darstellt, ausgebe welche dann weiterverarbeitet werden 
kann.

Ich hoffe ich konnte es einigermassen verständlich erklären so dass Ihr 
mir eine Richtung weisen könnt.

Liebe Grüße
Christian

von Rainer U. (r-u)


Lesenswert?

Wo liegt denn Dein Problem? Oder andersrum gefragt, was kannst Du schon 
von diesen Punkten:

- Datenblatt lesen
- passenden uC auswählen
- Sensor elektrisch korrekt anschließen und sensor und uC mit Strom 
versorgen
- programm für den uC schreiben
- daten vom uc an einen PC übertragen,
...?

Probier doch einfach, was der Sensor "einfach so" für Daten liefert, und 
dann verfeinerst Du.

von Christian (Gast)


Lesenswert?

Hallo Rainer,

ich habe das Datenblatt des IMU's bereits gelesen,angeschlossen, ein, 
bisher übersichtliches, Porgramm geschrieben und Daten auch empfangen.

Mein Problem ist das ich nicht weiß wie es nun weitergeht,auch nicht 
wonach ich so recht suchen soll.

Ich habe erwartet das ich Positionen erhalte, sowas wie xyz, doch ich 
habe stattdessen "nur" die Möglichkeit mir Beschleunigung,Rollwinkel, 
Magnetdaten etc. ausgeben zu lassen.

Meine Frage ist also wie geht es weiter, wie mache ich aus den Daten 
Positionen oder anders ausgedrückt wie kann ich die Lage bestimmen wenn 
ich den IMU bewege.

Vielleicht noch weiterführende Infos, der IMU soll später auf eine 
Drohne die dann mittels IMU Ihre position ermittelt und dementsprechend 
reagieren soll.

von Matthias X. (current_user)


Lesenswert?

google: Positionsbestimmung Beschleunigungssensor

Es läuft auf eine Integration der Beschleunigungswerte über die Zeit 
hinaus.

von Christian (Gast)


Lesenswert?

Hallo MAthias,

danke für deinen Gedankenanstoß, das hilft mir etwas weiter.

Verstehe ich das richtig das ich doppelt integrieren muss?
Wenn ich nun außerhalb von Gebäuden den IMU nutze kann ich die evetuell 
auftretenden Abweichungen ja durch die Daten des GPS abfangen aber 
innerhalb von Gebäuden kann das doch recht schnell sehr ungenau werden. 
Ich habe Materie Integration zwar noch nicht ganz verstanden,das wird 
wohl auch noch ne weile dauern, aber mir scheint das es bei doppelter 
Integration auch 4 Fach so ungenau wird. Nicht das ich aufeinmal auf dem 
Mond stehe :D .

Eine andere alternative gibt es wohl nicht, ausser der Einsatz von 
weiterer Sensorik ?

Gruß Christian

von Purzel H. (hacky)


Lesenswert?

Naja. Beschleunigung integriert ergibt Geschwindigkeit. Geschwindigkeit 
integriert ergibt Weg. Was ist daran so schwierig. Mach's doch einfach 
mal. Solange alles in einer Ebene stattfindet ist's doch einfach.

von Rest (Gast)


Lesenswert?

Christian schrieb:
> Bisher habe ich mit IMU's keinerlei Erfahrung und weiß nicht so recht wo
> ich ansetzen soll um die Aufgabe zu lösen. Mir wurde zur Aufgabe anfangs
> gesagt das ich die Positionsdten durch den eingebauten Kalman Filter
> erhalte, was wie ich glaube nicht so ist da dieser,wie ich verstanden
> habe, lediglich die Daten "bereinigt" und ausgibt.

Ja und nein. Das Kalmanfilter beinhaltet die Aufintegration der Daten. 
Allerdings muss das Filter parametrisiert werden und das ist keine 
einfache Sache. Es gibt ja genüngend Arduino Codes und andere Beispiele 
für Open Source IMUs. Meistens werden zur Parametrisierung Modelle 
gebildet an denen man seinen Algorithmus einstellt (z.B. Matlab o.Ä.) 
und dann der Algorithmus final implementiert. Das ist aber schon heftige 
Mathematik und da muss man viel Hirnschmalz reinstecken. Gute Einführung 
https://www.cbcity.de/das-kalman-filter-einfach-erklaert-teil-1

von Jan (Gast)


Lesenswert?

Christian realisiert das schon korrekt. Der Fehler wächst sogar 
quadratisch. Jedes kleinste Rauschen, jeder nichtkompensierte Offset, 
jede Nichtlinearität lässt deine Positions in Nirwana abhauen, du 
brauchst also Möglichkeiten zum Reset der Geschwindigkeit ("zero 
velocity reset").
All das erfordert natürlich, dass du die aktuelle Orientierung sehr 
genau weißt und die Richtung der Schwerkraft abziehen kannst, sonst 
integrierst du dauerthaft 1g in irgendeine Richtung.

Es ist schwierig!

- der Sensor muss ordentlich kalibriert werden
- Orientierung muss zuverlässig sein
- Samplerate muss hoch sein
- von Zeit zu Zeit (würde was im Sekundenbereich erwarten) brauchst du 
eine Referenz, sonst driftest du weg.


So einfach wie z.B. hacky sich das vorstellt ist es nicht. Es ist 
verdammt kompliziert.

Spezialanwendung, wo z.B. zero velocity update gemacht wird: 
https://www.youtube.com/watch?v=6ijArKE8vKU und papers von Madgwick 
(https://scholar.google.de/scholar?hl=de&as_sdt=0%2C5&q=Sebastian+Madgwick&btnG=)

von Christian (Gast)


Lesenswert?

Hallo Hacky,

wie alles im Leben ist das relativ, nicht wahr?

Meine 10.Klasse liegt 20 Jahre zurück und das was wir letzlich gemacht 
haben waren Gleichungssysteme. Für mich ist dies ganz und garnicht 
einfach denn ich habe Mathe nicht studiert.

z.B. v(t) =t∫0a(τ)dτ oder x(t) =t∫0v(τ)dτ=t∫0t∫0a(τ)dτ dθ

t = steht für die Zeit, welche? Als die Messdaten aufgenommen wurden 
nehme ich an?
∫ = Integral, wie rechne ich das oben t unten steht 0
a = Beschleunigung?
τ = Tau = 6,3irgendwas?
dτ = keine Ahnung was d ist aber es wäre dann d*Tau  ?
θ = Theta, ein Winkel im Polarkoordinatensystem ?


Folgendes habe ich dazu gefunden,gelesen,inhaltlich etwas verstanden 
doch die Formeln, da sehe ich kein Land.
(Seite 8 2.3.2Positionsbestimmungg)



[[Link]http://www8.informatik.uni-wuerzburg.de/fileadmin/10030800/user_upload/quadcopter/Abschlussarbeiten/INS_Lukas_Ifflaender_BA.pdf]

Zur Positionsbestimmung werden Accelerometer verwendet.
In einem ersten Schritt wird die relative Beschleunigung errechnet. 
Dabei ist es wichtig auch
die Gravitation zu beachten. Das heißt, dass
~g von ~a
abegzogen werden muss. Dabei muss die
Ausrichtung des Systems berücksichtig werden.
~g muss also vom externen System in das Körper-
system tranformiert werden.
Aus der errechneten Beschleunigung wird durch Integration die 
Geschwindigkeit errechnet:v(t) =t∫0a(τ)dτ
Durch einen zweiten Integrationsdurchgang wird anschließend die Position 
bestimmt:

von Christian (Gast)


Lesenswert?

@ Jan und Rest

Danke für eure Verlinkungen, die werde ich mir Heute abend zugemüte 
führen.

von Vincent H. (vinci)


Lesenswert?

Laut Datenblatt besitzt das Ding ein eingebautes GPS mit einer 
Updatefrequenz zw. 1 und 4Hz. Was also vermutlich tatsächlich von dir 
verlangt wird ist, dass du es schaffst zwischen den GPS Updates die 
Beschleunigung zu Integrieren ohne dass dir die Position wegschießt...

Jegliche weitere Diskussion ist ohne zusätzliche Angaben sinnlos. Es 
macht etwa einen erheblichen Unterschied ob der Sensor auf ein Fluggerät 
oder einen Fuß geschnallt wird. Bei zweiterem sind nämlich wie Jan 
bereits angesprochen hat sogenannte "Zero Velocity Updates" möglich die 
sozusagen den Fehler "resetten" können. Ebenfalls wichtig ist ob das 
eine Out- oder Indoor Anwendung sein soll. Das würde nämlich klären ob 
das GPS im Sensor überhaupt was bringt...

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.