Hallo, ich habe folgendes Problem: An einem Starrkörper sind einige Beschleunigungssensoren befestigt. Im Grunde soll es offen bleiben ob das 1,2 oder 3-Achssensoren sind, aber der Einfachheits halber können wir zunächst 3-Achs annehmen. Nun möchte ich anhand der Messdaten die Position so gut wie möglich schätzen. Zunächst habe ich die Daten doppelintegriert und Tiefpass gefiltert. Die translatorische Verschiebung wirkt ja auf jeden Punkt gleichermaßen. Als Nährung hierfür nehme ich daher die kleinste Verschiebung in alle 3 Raumrichtungen. Nun muß es doch irgendwie möglich sein anhand der Differenz der Verschiebungen eine Nährung für die Orientierung zu bestimmen? Kann mir jemand helfen? Ich komm einfach nicht weiter! Gruß
V. F. schrieb: > Nun muß es doch irgendwie möglich sein anhand der Differenz der > Verschiebungen eine Nährung für die Orientierung zu bestimmen? Das kommt darauf an welche Freiheitsgrade das Objekt hat. Drehungen um Achsen, die genau durch den Sensor gehen, kriegst Du halt nicht mit.
V. F. schrieb: > Nun muß es doch irgendwie möglich sein anhand der Differenz der > Verschiebungen eine Nährung für die Orientierung zu bestimmen? Sicher. Definiere zuerst einmal, wie du die 'Orientierung' darstellen willst. Einen Sensor definierst du als 0 Punkt des Objektes. Seine Position ist die Position des Objektes. Einen anderen Sensor definierst du als die X-Achse des Objektes und einen weiteren als die Y-Achse. (Die Z-Achse ergibt sich theoretisch aus den beiden anderen, aber in deinem Fall würde ich der Sache nicht wirklich trauen und einen eigenen Sensor dafür abstellen). Die 3 Sensoren müssen 3 Ebenen aufspannen, die senkrecht zueinander stehen. Ich habs mir jetzt nur kurz überlegt und eigentlich müsste das möglich sein, dass die Sensoren nicht exakt auf den Achsen sitzen, sondern eine Differenz dazu haben. Es reicht also, wenn du nur von einem Sensor definierst: Er legt die X-Achse des Objektes fest. Jetzt kennst du die Ausgangsorientierung des Objektes, zb ausgedrückt in einer Matrix. Des weiteren hast du rausintegriert, wo sich jeder Sensor hinbewegt hat. Aus diesen neuen Positionen kann man wieder eine Matrix bilden und hat so die Orientierung an der Endposition. Aus den beiden Matrizen kann man dann auch die angewandte Operation in Form einer Matrix ausdrücken. Allerdings solltest du tunlichst diese Ergebnismatrix nach Leibeskräften wieder orthonormalisiern, ansonsten hast du nur Hausnummern. Mit der Matrix kannst du dann weiterarbeiten, zb eine Zerlegung in Eulerwinkel, oder eine Umrechnung in ein Quaternion oder was auch immer.
Beim Starrkörper handelt es sich um ein Auto. Also sollte die Rotation im Prinzip schon 3 Freiheitsgrade haben. Es sind ja mehere Sensoren an dem Körper befestigt. Jede Drehung sollte doch von einen der Sensoren erfasst werden können.
@ Karl heinz Buchegger Danke erstmal für deine Antwort. Ich habe meine Frage ungeschickt formuliert. Den Fall den du beschrieben hast habe ich eigentlich schon gelöst. Ich habe dazu eine least-square Ebene zwischen den Punkten gelegt und diese mit meinem Starrkörper identifiziert. Mir gehts jetzt mehr um den Fall, dass ich mehrere Sensoren haben, die nicht allte 3 Raumrichtungen messen. Also zb. 3 2-Achs Sensoren. Theoretisch kann ich hierraus die Position bestimmen indem ich ein GLS der Form: |x_i-x_j| = d_ij aufstelle. Dieses GLS ist aber nichtlinear und nicht eindeutig. Nummerische Solver bringen mir dabei nichts brauchbares. Nun Frage ich mich also, ob das nicht anderes eventuell nummerisch zu lösen geht. Für die Translation ist, denke ich, die kleinste Verschiebung eine gute Nährung. Für die Rotation fällt mir nichts ein.
Also, mit Beschleunigungssensoren eine Position zu bestimmen ist sehr hakelig. Durch die Doppelintegrierei hast du einen Fehler, der quadratisch mit der Zeit zunimmt! Du wirst also nach einer Minute freien Integrierens deines Sensors schon Fehler im Bereich von mehreren Metern haben, obwohl der Sensor in Ruhe ist. Eine Stützung der Daten mit einer Referenz ist unumgänglich. Natürlich kann man das ganze ins 3 dimensionale übertragen, allerdings potenzierst du damit deinen Fehler. Vielleicht können wir dir weiterhelfen wenn wir die genauere Anwendung wissen. Wie gesagt, Position aus Beschleunigung ist nich, selbst wenn du alle mathematischen Register ziehst. Du brauchst eine Referenz zur Stützung. Stefan
@ Stefan Heindel Da hast du natürlich recht. Da ich an der Situation leider nichts ändern, es sind nunmal nur diese Daten vorhanden, möchte ich einfach nur eine Beschreibung, die so gut wie möglich die Realität beschreibt. Außerdem habe ich Messdaten die mit einer Abtastrate von ca 10^-4 max eine Minute lang messen. In einem konkreten Bsp sind es sogar nur 20s. Ich versuche auch grade die Daten mit einem Kalman- statt einem Tiefpass-Filter zu bereinigen.
Okay, also grundätzlich ist es unmöglich, nur mit 3 Beschleunigungssensoren sowohl Translationen als auch Rotationen zu bestimmen. Wenn es um ein Fahrzeug geht, würde ich in erster Näherung die Fahrbahn als Ebene modellieren, das heißt z würde ich bis auf weiteres erst einmal komplett herauslassen. Die Beschleunigungssensoren sind ja wahrscheinlich im Auto befestigt, also im körperfesten Koordinatensytem. Deine Position wird aber im erdfesten Koordinatensystem gemessen. Also du hast x_auto, y_auto und x_erde und y_erde (vereinfacht). Jetzt musst du wissen, um welchen Winkel die beiden zueinander verdreht sind (Fahrtrichtung!), sonst kannst du einfach nichts sagen. Man kann diese Informationen grundsätzlich nicht aus den Beschleunigungsdaten bekommen. Du könntest jetzt irgendwelche fiesen Annahmen treffen, aber wahrscheinlich liegst du damit mehr falsch als richtig. Also mein Vorschlag wäre du besorgst dir ein GPS und wiederholst damit deine Messung. Dann kann man aus der Position und den Beschleunigungen schon einiges mehr sagen. Stefan
Stefan Heindel schrieb: > Okay, > > also grundätzlich ist es unmöglich, nur mit 3 Beschleunigungssensoren > sowohl Translationen als auch Rotationen zu bestimmen. Grundsätzlich doch schon, sofern ich 3Achs Sensoren nehme. Wie das geht hat ja zb Karl Heinz Buchegger oben geschildert. Natürlich entsteht dabei ein Fehler, der quadratisch mit der Zeit steigt. Gruß
Stefan Heindel schrieb: > also grundätzlich ist es unmöglich, nur mit 3 Beschleunigungssensoren > sowohl Translationen als auch Rotationen zu bestimmen. Lassen wir mal das Problem der Aufintegrierung der Beschleunigung weg und gehen davon aus, dass wir 3 Punkte haben, deren Position im Raum sowohl vor als auch nach einer Operation exakt bekannt ist. Als weitere Annahme nehme ich dazu, dass die relative Orientierung der 3 Punkte dergestalt ist, dass sie zumindest nicht kollinear sind, sich also aus den 3 Punkten ein 3D-Koordinatensystem konstruieren lässt. Dann ist es schon möglich eine Matrix anzugeben, die die 3 Ursprungspunkte in die 3 Punkte nach der Operation transformiert. Das ist sogar noch nicht einmal weiter schwierig. Punkt A wird als Ursprung des Korrdinatensystems genommen Punkt B als ein Punkt auf der X-Achse Punkt C gibt dann an in welcher Richtung die Y-Achse zu finden ist. X = |( B - A )| Y' = |( C - A )| Z = X kreuz Y Y = Z kreuz X Zusammen mit der Translation T = A haben wir damit die Ursprungsmatrix M Dasselbe mit den Punkten und den Koordinaten in der Endlage und man kriegt die neue Lage im Raum Mneu und wenn man das braucht rechnet man sich die Transformationsmatrix auch noch aus, die M in Meneu überführt Mtrafo = inverse(M) * Mneu Die getroffene Annahme lautet allerdings: Die Position von A und zumindest B muss genau stimmen. C hat ein klein wenig Freiheitsgrad, als er sich in der lokalen X/Y Ebene bewegen darf. interessant ist jetzt die Fragestellung: Wenn ich mehr als nur 3 Sensoren habe, wie kann ich die benutzen um die (möglicherweise fiktiven) Punkte A, B und C möglichst exakt zu fixieren. Problematisch ist natürlich an der ganzen Sache, wie gut denn die Positionen in der Endlage sind. Doppeltes aufintegrieren ist nicht unproblematisch.
Ich habe das mal an simulierte Daten getestet. Wenn ich lange genug an den Parametern des Tiefpassfilters rumspiele, kommt das schon so einigermaße hin. Jedenfalls die ersten 20 sec. Hier würde ich auch gerne mal den Kalmanfilter als Vergleich nehmen. Wie gesagt, versuche gerade einen zu basteln. Meine Frage ist aber eigentlich eine andere. Angenommen der Fehler der Doppelintegration sein vernachlässbar. Kann ich die Position auch bestimmen, wenn ich die Verschiebung pro Sensor nicht in alle Raumrichtung habe. Also z.b. wenn Sensor1->(x,y), Sensor2->(x,z), Sensor3->(y,z) mißt. An dem Problem sitze ich jetzt schon ne ganze Weile und komme nicht voran. Karl heinz Buchegger schrieb: > interessant ist jetzt die Fragestellung: Wenn ich mehr als nur 3 > Sensoren habe, wie kann ich die benutzen um die (möglicherweise > fiktiven) Punkte A, B und C möglichst exakt zu fixieren. Hierzu habe ich eine Lösung gefunden (eigentlich nur Alternative alle Punkte mit einfließen zulassen). Undzwar gibt es einen Algorithmus der eine Ebene findet, das den kleinsten quadr. Abstand zu bel. viele Punkten besitzt. Hieraus kann man ausgehend von der Anfangsposition die Position der Punkte rückrechen. Hier der Link zum Algorithmus: http://mathforum.org/library/drmath/view/63765.html
V. F. schrieb: > Meine Frage ist aber eigentlich eine andere. Angenommen der Fehler der > Doppelintegration sein vernachlässbar. Kann ich die Position auch > bestimmen, wenn ich die Verschiebung pro Sensor nicht in alle > Raumrichtung habe. Also z.b. wenn Sensor1->(x,y), Sensor2->(x,z), > Sensor3->(y,z) mißt. An dem Problem sitze ich jetzt schon ne ganze Weile > und komme nicht voran. IMHO: nein mathematisch begründen kann ich das jetzt nicht, ist mehr ein Bauchgefühl. (vielleicht so: Um die Matrix dingfest zu machen, benötigst du 9 Bestimmungsstücke. Deine 3 Sensoren liefern aber nur 6) > Punkte mit einfließen zulassen). Undzwar gibt es einen Algorithmus der > eine Ebene findet, das den kleinsten quadr. Abstand zu bel. viele > Punkten besitzt. Hieraus kann man ausgehend von der Anfangsposition die > Position der Punkte rückrechen. > Hier der Link zum Algorithmus: > http://mathforum.org/library/drmath/view/63765.html Ist auch eine Idee: Man betrachtet nicht wie sich die Achsen transformieren, sondern wie sich die im Koordinatensystem enthaltenen Ebenen transformieren. Die SChnittgerade der X/Y Ebene und der X/Z Ebene ergibt dann die X-Achse
Karl heinz Buchegger schrieb: > IMHO: nein > mathematisch begründen kann ich das jetzt nicht, ist mehr ein > Bauchgefühl. Analytisch geht das theoretisch schon. Man kennt ja den Abstand der Sensoren untereinander. Hieraus kann man drei Gleichungen der Form: dij^2=|xi-x_j|^2 bilden. Da uns ja nur noch 3 Unbekannte fehlen, kann man so die fehlenden Koordinaten bestimmen. Jedoch muss hierbei ein nichtlineares GLS gelöst. Das wird richtig hässlich und langwierig wenn man das zb 100000mal hintereinader macht.
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.