Ich arbeite derzeit an einem Gerät, das einen 3D-Beschleunigungsmesser (mit Skala + -2 g) und einen 3D-Gyroskop-Sensor (mit Skala + -250 g) verwendet.
Ich kann jeden möglichen Vektor (X, Y, Z) und deren Beschleunigung (gs) und Winkelrate (dps) sowie den Winkel ablesen, in dem sich das Gerät gerade befindet. Aber mein Problem ist, dass, wenn das Gerät auf Neigung ist (0 g, wenn keine Neigung), die Beschleunigung zwischen (abwärts) 0 g -> - 1 g oder zwischen (aufwärts) 0 g -> 1 g liegt, je nachdem, in welchem Winkel sich das Gerät gerade befindet. Unten ist ein Bild, das die Idee hoffentlich klärt.
Das Gerät befindet sich in einem Auto und sollte die Beschleunigung messen, wenn das Auto langsamer wird (Bremse). Befindet sich das Gerät jedoch bereits in der Neigungsposition, misst der Beschleunigungsmesser eine Beschleunigung, die durch die Neigung verursacht wird. Dies macht es schwierig, festzustellen, ob das Gerät tatsächlich eine Beschleunigung aufweist oder nur die Neigung, die die Beschleunigung verursacht.
X- und Y-Achse erzeugen 0 g und die Z-Achse ist 1 g, wenn das Gerät keine Neigung aufweist und sich auf einer ebenen Oberfläche befindet. Die Neigung bewirkt, dass der Messwert der X-Achse in Richtung 1 g geht, wenn die Neigung nach oben und -1 g nach unten gerichtet ist. Der Wert + -1g ist erreicht, wenn sich das Gerät in einem Winkel von 90 ° zur ursprünglichen Position befindet
Ich habe mir überlegt, wie ich die durch die Neigung verursachte Beschleunigung eliminieren und nur die tatsächliche Beschleunigung des Geräts messen kann, aber mit den folgenden Daten, die ich erzeugen kann, kann ich diesem Problem nicht aus dem Weg gehen.
Grundsätzlich denke ich, wenn ich nur die Beschleunigung der X-Achse (Bild) messen könnte, auch wenn der Sensor wie im Bild geneigt ist.
Hoffentlich ist diese Nachricht aufgrund meiner Englischkenntnisse und der Art und Weise, wie ich versuche, mein Problem zu erklären, nicht allzu schwer zu verstehen.
quelle
Antworten:
Nur eine Skizze einer Lösung.
Berücksichtigen Sie alle 3 Achsen.
Die Beschleunigung aufgrund der Schwerkraft beträgt unabhängig von der Neigung immer 1 G als Vektorsumme von X, Y, Z, unabhängig von der Neigung. Sie können sich die Beschleunigung in Ruhe oder in stetiger Bewegung als Punkt auf einer Kugel mit dem Radius 1G vorstellen. (Wenn Sie vollkommen horizontal sind, liegt dieser Punkt (0, 0, -1) dh direkt unter Ihnen).
Beschleunigung durch Bremsen verzerrt die Kugel selbst; Die Vektorsumme von X, Y, Z wird nicht länger 1G sein.
So
Wenn Sie nicht auch drehen oder schleudern, benötigen Sie zur Sicherheit Eingaben von Lenkrad und ABS. das wird ein Datenfusionsproblem. Dieser Ansatz liefert eine Schätzung der Beschleunigung. Um diese Schätzung zu überprüfen und zu verfeinern, kombinieren Sie sie mit anderen (auch unzuverlässigen) Datenquellen, wie in Phil Frosts Antwort, und verwenden Sie einen Kalman-Filter.
quelle
Ihr Hauptfehler besteht darin, die Beschleunigung nicht als einen einzigen Vektor zu behandeln. Wenn das Auto in Ruhe ist, beträgt dieser Vektor immer 1 g nach oben. Betrachten Sie nicht nur die X-Komponente der Rohdaten des Beschleunigungsmessers. Mach die echte Vektor-Mathematik.
Nein, das ist der Punkt. Was Sie sagen, mag für die X-Komponente der Beschleunigungsmesser-Ausgabe zutreffen, gilt jedoch nicht für die Beschleunigung, wenn das Auto in Ruhe ist.
Die ideale gemessene Beschleunigung ist immer die tatsächliche Beschleunigung des Fahrzeugs (relativ zur Erde) plus die Beschleunigung von 1 g aufgrund der Schwerkraft. Letzteres ist immer in Aufwärtsrichtung. Wenn Sie die Ausrichtung des Fahrzeugs kennen, können Sie diese 1 g aufgrund der Schwerkraft abziehen, um die tatsächlich gesuchte Beschleunigung zu ermitteln.
Es ist zu beachten, dass bei solchen Ablesungen, insbesondere bei billigen MEMS-Sensoren, erhebliche Fehler auftreten. Sie sollten zwar in der Lage sein, eine gute Vorstellung von kurzfristigen Ereignissen wie starkem Beschleunigen oder starkem Bremsen zu bekommen, diese Daten sind jedoch bei weitem nicht gut genug, um eine Trägheitsnavigation für höchstens ein paar Sekunden durchzuführen.
quelle
Wie andere Antworten angegeben haben, liefert der Beschleunigungsmesser einen dreidimensionalen Vektor, der die Summe der Schwerkraft und anderer Beschleunigung auf das Fahrzeug aufgrund des Motors, der Bremsen oder anderer auf das Fahrzeug einwirkender Kräfte ist. Ihr Ziel ist es dann, die Gravitationsbeschleunigung vom Ausgang des Beschleunigungsmessers zu subtrahieren, um die verbleibenden anderen Kräfte zu finden.
Für die beste Genauigkeit kann man nicht davon ausgehen, dass die Schwerkraft im Verhältnis zum Beschleunigungsmesser immer "unten" ist. Beispielsweise kann sich das Auto auf einem Hügel befinden. Alle Ihre Berechnungen müssen mit dreidimensionaler Vektormathematik durchgeführt werden, und Sie müssen eine Schätzung der Ausrichtung des Autos haben, damit Sie die Richtung des zu subtrahierenden Schwerkraftvektors kennen.
Ein Kalman-Filter ist hier ein gängiger Ansatz. Die Idee ist, alle Daten, die Sie haben, die die Orientierung des Autos verändern könnten, zu nehmen, dann einen gewichteten Durchschnitt der Messungen durchzuführen und diesen mit dem zu kombinieren, was Sie über die Physik wissen, die auf das Auto einwirkt, um eine probabilistische Schätzung des zu erhalten neue Ausrichtung des Autos und welcher Weg ist "down".
Je mehr Daten Sie haben und je genauer Sie die Physik des Autos modellieren können, desto genauer kann diese Schätzung werden.
Wenn Sie beispielsweise einen Kreisel haben und die Neigung des Autos messen, können Sie vorhersagen, dass sich der Schwerkraftvektor in Richtung des Hecks des Autos drehen wird. Kurzfristig, wenn das Auto gerade erst einen Hügel hinaufgefahren ist, kann dies dazu beitragen, dass der Schwerkraftvektor schnell die richtige Ausrichtung annimmt.
Sie können auch davon ausgehen, dass das Auto im Durchschnitt nicht bremst oder beschleunigt. Somit kann ein tiefpassgefiltertes Ausgangssignal des Beschleunigungsmessers in die Schätzung einfließen, welche Richtung "abwärts" ist. Dies liefert eine Langzeitmessung, die keiner Trägheitsdrift unterliegt.
Die Kombination der Daten von Beschleunigungsmesser und Gyroskop zur Schätzung der Schwerkraftrichtung liefert somit eine genauere Schätzung als jede Messung allein.
Sie können weiter einbeziehen, was Sie über den möglichen Betriebsbereich des Fahrzeugs wissen. Zum Beispiel kann das Auto keine zu steilen Hügel hinauf oder hinunter fahren. Wenn der Beschleunigungsmesser solche extremen Winkel anzeigt, können Sie ihn möglicherweise weniger belasten, vorausgesetzt, der größte Teil seiner Leistung wird durch Bremsen oder Motor, nicht durch Schwerkraft verursacht.
Wenn der Fahrer auf die Bremse tritt, verschiebt dies den Beschleunigungsvektor, und Sie können diesen von der geschätzten Abwärtskomponente abziehen.
Wenn Sie über GPS- und Kartendaten verfügen, können Sie auch eine Schätzung der Neigung des Autos basierend auf dem Standort vornehmen. Wenn Sie genaue Daten haben, wissen Sie möglicherweise genau, auf welcher Steigung sich das Fahrzeug befindet. Wenn Sie nur Daten mit geringer Genauigkeit haben, kann dies dennoch nützlich sein. Befindet sich das Auto beispielsweise in Kansas, sind Hügel unwahrscheinlich. Befindet sich das Auto in San Francisco, sind Hügel wahrscheinlicher und Sie können dem Beschleunigungsmesser weniger Gewicht geben.
Wenn Sie Daten zum Kraftstoffverbrauch und zur Geschwindigkeit haben und wissen, dass mehr Kraftstoff verbraucht wird, wenn Sie bergauf fahren, können Sie dies verwenden, um zu schätzen, dass das Auto auf der Grundlage der Kraftstoffeffizienz nach oben oder unten geneigt ist.
Und so weiter. Je mehr Sie wissen, desto besser kann Ihre Schätzung sein.
quelle
Sie benötigen einen Fusionsalgorithmus und verwenden 3D-Beschleunigungsmesser, 3D-Gyro und 3D-Magnetsensoren. Mit diesem Fusionsalgorithmus erhalten Sie die Fluglage, wobei die Erdschwerkraft als Referenz für die Ermittlung des Horizonts dient - Neigungs- / Gier- / Rollwinkel. Die beiden anderen Sensoren mag / gyro helfen dabei, die dynamische Bewegung herauszufiltern. Da sich Ihr Auto auch nach links / rechts dreht, wird die Zentrifugalkraft addiert. Sobald Sie die Haltung haben, können Sie den Gravitationsvektor subtrahieren und die resultierende Beschleunigung in allen drei Achsen zerlegen.
quelle
Als sehr grundlegende Methode können Sie einen Hochpassfilter verwenden, um den konstanten Teil der Beschleunigung (der der Schwerkraft entspricht) zu eliminieren und den variablen Teil, der auf die Fahrdynamik zurückzuführen ist, beizubehalten. Annehmen
raw
handelt sich um einen Vektor, der Ihre X-, Y- und Z-Messungen enthält, und esacc
handelt sich um die Fahrzeugbeschleunigung ohne Schwerkraft. DannEinzelkomponenten von
acc
sind immer noch von der Neigung betroffen, aber die Vektornorm ist nicht:Natürlich ist diese Methode nicht sehr genau, insbesondere wenn sich die Neigung mit hoher Geschwindigkeit ändert. Dies ist ungefähr so weit wie naive Mathematik Sie bekommt. Wenn Sie eine bessere Präzision benötigen, lernen Sie die Verwendung eines Kalman-Filters.
quelle
Die Antwort liegt in der genauen Definition von "Verlangsamung" .
Aus Ihrer Frage:
Allerdings ist nicht gleich Bremsen verlangsamt . Es gibt zwei mögliche Definitionen:
Dieser Unterschied ist bei Steigungen und Gefällen signifikant. Bei Abfahrten erhöht sich die Geschwindigkeit des Fahrzeugs, wenn die Bremsen nicht betätigt werden. Bei Steigungen kann sich die Geschwindigkeit verlangsamen, auch wenn nicht gebremst wird.
Es stellt sich heraus, dass das Erkennen von 1. deutlich schwieriger ist als 2. Definieren wir die Achsen in Bezug auf die Fahrzeugausrichtung: X: Vorne-Hinten-Richtung, Y: Links-Rechts-Richtung, Z: Oben-Unten-Richtung. Alle Achsen zum Auto ausgerichtet.
Lösungen:
Für Definition 1. ist der beste Ansatz anzunehmen, dass sich die Geschwindigkeit des Autos nur in X-Richtung ändern kann. Dann ist die gemessene Beschleunigung a = g + v wobei g eine Beschleunigung aufgrund von Kräften ist, die der Schwerkraft entgegenwirken, und v eine Beschleunigung aufgrund einer Geschwindigkeitsänderung ist. Sie können annehmen, dass die Länge von g immer 9,8 m / s² beträgt und dass v immer in X-Richtung ist. Also (g_x + v_x, g_y, g_z) = (a_x, a_y, a_z) , was v_x = a_x - sqrt ((9,8 m / s² )² - g_y² - g_z²) ergibt . Dies funktioniert nur solange | v | ist kleiner als | g |oder mit anderen Worten, die Beschleunigung aufgrund von Motor oder Bremsen beträgt weniger als 1 G. Sollte eine ziemlich sichere Annahme sein, es sei denn, Ihr Auto hat einen Raketenverstärker.
Für die Definition 2. können Sie einfach die X-Achse direkt ablesen. Wenn das Auto nicht beschleunigt oder bremst, ist die einzige Schwerkraft, die auf es einwirkt, die Normalkraft der Fahrbahn. Diese Kraft ist immer in der z-Richtung relativ zum Auto, so dass sich der x-Achsen-Messwert nicht ändert. Bremsen und Motor wirken nur in x-Richtung und sind in dieser Ablesung direkt sichtbar.
quelle
Es scheint, dass Sie ein "Overkill" -Gerät für Ihre Anwendung verwenden. Sie sollten ein Gerät verwenden, das nur die x- und y-Beschleunigung misst. Auf diese Weise hat die Neigung keinen messbaren Effekt. Obwohl die Gesamtbeschleunigung aufgrund der Neigung kleiner oder größer sein kann, misst das Gerät nur die x- und y-Komponenten der Beschleunigung in der Ebene, in der sich das Fahrzeug befindet.
quelle