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
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.
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.
google: Positionsbestimmung Beschleunigungssensor Es läuft auf eine Integration der Beschleunigungswerte über die Zeit hinaus.
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
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.
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
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=)
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:
@ Jan und Rest Danke für eure Verlinkungen, die werde ich mir Heute abend zugemüte führen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.