Frage

Ich wollte ein Trägheitsnavigationssystem für ein Android -Telefon implementieren, von dem ich feststelle, dass es angesichts der Genauigkeit des Beschleunigungsmessers und der ständigen Schwankung der Lesungen hart ist.

Zunächst stelle ich das Telefon auf eine flache Oberfläche und probierte 1000 Beschleunigungsmesserwerte in die x- und y -Richtungen (parallel zum Tisch, so dass keine Schwerkraft in diese Richtungen wirkt). Ich habe dann diese Messwerte gemittelt und diesen Wert verwendet, um das Telefon zu kalibrieren (subtrahieren Sie diesen Wert von jeder nachfolgenden Lesart).

Ich habe das System dann getestet, indem ich es erneut auf den Tisch legte und 5000 Beschleunigungsmesserwerte in die X- und Y -Anweisungen abtastete. Ich würde angesichts der Kalibrierung erwarten, dass diese Beschleunigungen in jeder Richtung zu 0 (ungefähr) addieren sollten. Dies ist jedoch nicht der Fall, und die Gesamtbeschleunigung über 5000 Iterationen liegt bei weitem nicht bei 0 (im Durchschnitt bei 10 auf jeder Achse).

Mir ist klar, ohne meinen Code zu sehen, dass dies schwer zu beantworten ist, aber im allgemeineren Sinne ...

Ist dies einfach ein Beispiel dafür, wie ungenau die Beschleunigungsmesserwerte auf einem Mobiltelefon (HTC Desire S) sind, oder ist es wahrscheinlicher, dass ich einige Fehler in meiner Codierung gemacht habe?

War es hilfreich?

Lösung

Sie erhalten eine Position, indem Sie die lineare Beschleunigung jedoch zweimal integrieren Der Fehler ist schrecklich. Es ist in der Praxis nutzlos.

Hier ist Eine Erklärung warum (Google Tech Talk) bei 23:20. Ich kann dieses Video nur empfehlen.

Es ist nicht das Beschleunigungsmesserrauschen, das das Problem verursacht, sondern das Problem Gyro -weißes Rauschen, siehe Absatz 6.2.3 Ausbreitung von Fehlern. (Übrigens benötigen Sie auch die Gyroskope.)

Bei der Innenpositionierung habe ich diese nützlich gefunden:

RSSI-basierte Indoor-Lokalisierung und -verfolgung mit Sigma-Point-Kalman-Smoothers

Fußgängerverfolgung mit Trägheitssensoren mit Schuhmontage

Verbesserung der Leistung von Pedometern mit einem einzigen Beschleunigungsmesser

Ich habe keine Ahnung, wie diese Methoden in realen Anwendungen abschneiden würden oder wie sie sie in eine schöne Android-App verwandeln können.

Eine ähnliche Frage ist Dies.

AKTUALISIEREN:

Anscheinend gibt es eine neuere Version als die oben genannte Oliver J. Woodman, "eine Einführung in die Trägheitsnavigation", seine Doktorarbeit:

Fußgängerlokalisierung für Innenumgebungen

Andere Tipps

Ich denke nur laut nach und habe noch nicht mit einer Android -Beschleunigungs -API gespielt, also tragen Sie es mit mir.

Um zuerst die Navigation von Beschleunigungsmesser zu erhalten, benötigen Sie traditionell einen 6-Achsen-Beschleunigungsmesser. Sie benötigen Beschleunigungen in X, Y und Z, aber auch Rotationen XR, YR und ZR. Ohne die Rotationsdaten haben Sie nicht genügend Daten, um einen Vektor festzulegen, es sei denn, Sie gehen davon aus, dass das Gerät niemals seine Einstellung ändert, was ziemlich einschränkend wäre. Niemand liest den TOS sowieso.

Oh, und Sie wissen, dass INS mit der Rotation der Erde driftet, oder? Also gibt es auch. Eine Stunde später und Sie klettern auf mysteriöse Weise auf einem 15 ° -Schn -Hang in den Weltraum. Dies setzt voraus, dass Sie einen INS in der Lage hatten, den Standort so lang zu halten, was ein Telefon noch nicht kann.

Eine bessere Möglichkeit, Beschleunigungsmesser mit einem 3-Achsen-Beschleunigungsmesser zu verwenden. Für die Navigation wäre es, in GPS zu binden, um die INS nach Möglichkeit zu kalibrieren. Wo GPS zu kurz fällt, Komplimente ergänzt gut. GPS kann Sie plötzlich 3 Blocks entfernt schießen, weil Sie einem Baum zu nahe gekommen sind. Ins ist nicht großartig, aber zumindest weiß es, dass Sie nicht von einem Meteor getroffen wurden.

Was Sie tun können, ist die Daten der Telefone Beschleunigungsmesser und viel davon zu protokollieren. Wie Wochen wert. Vergleichen Sie es mit guten (ich meine wirklich gut) GPS -Daten und verwenden Sie DataMining, um die Korrelation von Trends zwischen Beschleunigungsmesserdaten und bekannten GPS -Daten festzulegen. (Pro -Tipp: Sie möchten den GPS -Almanach tagelang mit guter Geometrie und vielen Satelliten überprüfen. An manchen Tagen können Sie nur 4 Satelliten haben und das ist nicht genug). Geht mit ihrem Telefon in der Tasche, die Beschleunigungsmesserdaten protokolliert ein sehr spezifisches Muster. Basierend auf der DataMining stellen Sie ein Profil für dieses Gerät mit diesem Benutzer fest und welche Art von Geschwindigkeit, die das Muster darstellt, wenn es GPS -Daten entspricht. Sie sollten in der Lage sein, Kurven zu erkennen, Treppen zu besteigen, sich hinzusetzen (Kalibrierung bis 0 Geschwindigkeitszeit!) Und verschiedene andere Aufgaben. Wie das Telefon gehalten wird, müsste vollständig als separate Dateneingaben behandelt werden. Ich rieche ein neuronales Netzwerk, das für den Data Mining verwendet wird. Mit anderen Worten etwas Blindes für das, was die Eingaben bedeuten. Der Algorithmus würde nur nach Trends in den Mustern suchen und nicht wirklich auf die tatsächlichen Messungen der Ins achten. Alles was es weiß ist historically, when this pattern occurs, the device is traveling and 2.72 m/s X, 0.17m/s Y, 0.01m/s Z, so the device must be doing that now. Und es würde das Stück entsprechend vorwärts bewegen. Es ist wichtig, dass es völlig blind ist, denn nur ein Telefon in die Tasche zu legen, kann möglicherweise in einem von 4 verschiedenen Orientierungen ausgerichtet sein, und 8, wenn Sie die Taschen wechseln. Und es gibt auch viele Möglichkeiten, Ihr Telefon zu halten. Wir sprechen hier viele Daten.

Sie werden offensichtlich immer noch viel Drift haben, aber ich denke, Sie hätten auf diese Weise mehr Glück, weil das Gerät weiß, wann Sie aufgehört zu gehen, und die Positionsdrift wird nicht aufrechterhalten. Es weiß, dass Sie immer noch auf historischen Daten stehen. Traditionelle Ins -Systeme haben diese Funktion nicht. Die Drift verewigt alle zukünftigen Messungen und Verbindungen exponentiell. Die gottlose Genauigkeit oder eine sekundäre Navigation in regelmäßigen Abständen ist für traditionelle INS absolut wichtig.

Jedes Gerät und jede Person müsste sein eigenes Profil haben. Es sind viele Daten und viele Berechnungen. Jeder geht mit unterschiedlichen Schritten mit unterschiedlichen Geschwindigkeiten und stellt seine Telefone in verschiedene Taschen usw., um dies in der realen Welt zu implementieren, um die Server-Seite zu verarbeiten.

Wenn Sie GPS für die anfängliche Baseline verwendet haben, gibt es ein Teil des Problems, dass GPS im Laufe der Zeit eigene Migrationen aufweist, aber sie sind nicht portierliche Fehler. Sitzen Sie einen Empfänger an einem Ort und protokollieren Sie die Daten. Wenn es keine WAAS -Korrekturen gibt, können Sie problemlos Standort Korrekturen in zufälligen Richtungen um Sie herum abteilen. Mit WAAS, vielleicht bis zu 6 Fuß. Möglicherweise haben Sie mit einem Sub-Meter-RTK-System auf einem Rucksack tatsächlich ein besseres Glück, um zumindest den Algorithmus der Ann herunter zu bringen.

Sie werden immer noch Winkeldrift mit der INS haben, die meine Methode anwenden. Das ist ein Problem. Wenn Sie jedoch so weit gegangen sind, um eine Ann zu erstellen, die über Wochen GPS- und INS -Daten unter N -Benutzern überw innehischt und tatsächlich bis zu diesem Punkt zum Laufen gebracht wurde, macht es Ihnen offensichtlich nichts aus, dass Big Data bisher. Gehen Sie diesen Weg weiter und verwenden Sie mehr Daten, um die Winkeldrift zu beheben: Menschen sind Gewohnheitskreaturen. Wir machen so ziemlich die gleichen Dinge wie Spaziergang auf Gehwegen, durch Türen, Treppen und machen keine verrückten Dinge wie Spaziergang über Autobahnen, Wände oder abseits der Balkon.

Nehmen wir also an, Sie nehmen eine Seite von Big Brother und speichern Daten darüber, wohin Menschen gehen. Sie können mit der Kartierung beginnen, wo von Menschen erwartet werden, dass sie gehen. Es ist ziemlich sicher, dass der Benutzer, wenn er anfängt, Treppen hochzugehen, an derselben Treppe ist, die die Person bevor sie hochgegangen ist. Nach 1000 Iterationen und einigen Anpassungen am kleinsten Quadrat weiß Ihre Datenbank ziemlich genau, wo diese Treppen mit großer Genauigkeit sind. Jetzt können Sie Winkeldrift und Standort korrigieren, wenn die Person beginnt zu gehen. Wenn sie diese Treppen trifft oder diese Halle abweist oder einen Bürgersteig entlang fährt, kann jede Drift korrigiert werden. Ihre Datenbank würde Sektoren enthalten, die von der Wahrscheinlichkeit gewichtet werden, dass eine Person dorthin gehen würde oder dass dieser Benutzer in der Vergangenheit dorthin gelaufen ist. Dafür werden räumliche Datenbanken mithilfe davon optimiert divide and conquer Nur Sektoren zuweisen, die sinnvoll sind. Es wäre wie bei den MIT-Projekten, bei denen der Laser-Roboter mit einem schwarzen Bild beginnt, und malt das Labyrinth in Erinnerung, indem sie jede Runde aufleuchten und dort beleuchtet, wo sich alle Wände befinden.

Bereiche mit hohem Verkehr würden höhere Gewichte und Bereiche, in denen niemand jemals 0 Gewicht hat. Höhere Verkehrsbereiche haben eine höhere Auflösung. Sie würden im Wesentlichen eine Karte von überall haben, wo jemand war und es als Vorhersagemodell verwenden.

Ich wäre nicht überrascht, wenn Sie feststellen könnten, welchen Sitz einer Person mit dieser Methode in einem Theater eingenommen hat. Angesichts genügend Benutzer, die in das Theater gehen und genügend Auflösung, haben Sie Daten zu jeder Zeile des Theaters und der Breite jeder Reihe. Je mehr Menschen einen Ort besuchen, desto höherer Treue, mit dem Sie vorhersagen können, dass sich diese Person befindet.

Außerdem empfehle ich Ihnen dringend, ein (kostenloses) Abonnement für das GPS World Magazine zu erhalten, wenn Sie an der aktuellen Forschung zu solchen Dingen interessiert sind. Jeden Monat bin ich damit aus.

Ich bin mir nicht sicher, wie gut Ihr Offset ist, weil Sie vergessen haben, Einheiten einzuschließen. ("Rund 10 auf jeder Achse" sagt nicht viel .: P) Das heißt, es ist wahrscheinlich immer noch auf Ungenauigkeiten in der Hardware zurückzuführen.

Das Beschleunigungsmesser ist in Ordnung für Dinge wie die Bestimmung der Ausrichtung des Telefons in Bezug auf die Schwerkraft oder das Erkennen von Gesten (Schütteln oder Anstieg des Telefons usw.)

Der Versuch, die tote Abrechnung mit dem Beschleunigungsmesser zu erledigen, wird Sie jedoch einem großen zusammengesetzten Fehler ausgesetzt. Das Beschleunigungsmesser müsste ansonsten wahnsinnig genau sein, und dies ist kein häufiger Anwendungsfall. Ich bezweifle, dass Hardware -Hersteller dies optimieren.

Der Android -Beschleunigungsmesser ist digital, die Beschleunigung mit der gleichen Anzahl von "Eimer", sagen wir, es gibt 256 Eimer und das Beschleunigungsmesser kann von -2 g bis +2 g erfasst werden. Dies bedeutet, dass Ihre Ausgabe in Bezug auf diese "Eimer" quantisiert wird und sich um einige Werte sammelt.

Um einen Android -Beschleunigungsmesser zu kalibrieren, müssen Sie mehr als 1000 Punkte probieren und den "Modus" finden, um den das Beschleunigungsmesser schwankt. Finden Sie dann die Anzahl der digitalen Punkte, indem die Ausgabe schwankt, und verwenden Sie diese für Ihre Filterung.

Ich empfehle Kalman Filtering, sobald Sie den Modus und die +/- Schwankung erhalten haben.

Mir ist klar, dass dies ziemlich alt ist, aber das vorliegende Problem wird in keiner der angegebenen Antworten behandelt.

Was Sie sehen, ist die lineare Beschleunigung des Geräts einschließlich der Wirkung der Schwerkraft. Wenn Sie das Telefon auf eine flache Oberfläche legen 9.80665 m/s2, daher geben Sie den 10, die Sie sehen. Die Sensoren sind ungenau, aber sie sind nicht so ungenau! Sehen hier Für einige nützliche Links und Informationen über den Sensor, nach dem Sie möglicherweise suchen.

Sie gehen davon aus, dass die Beschleunigungsmesserwerte in X- und Y -Richtungen, die in diesem Fall vollständig Hardware -Rauschen sind, eine Normalverteilung um Ihren Durchschnitt bilden würden. Anscheinend ist das nicht der Fall.

Eine Sache, die Sie ausprobieren können, ist, diese Werte in einem Diagramm zu zeichnen und festzustellen, ob ein Muster auftaucht. Wenn nicht, ist das Geräusch statistisch zufällig und kann nicht kalibriert werden-zumindest für Ihre bestimmte Telefonhardware.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top