Ich entwickle eine Android-Anwendung mit GPS. Id wie ein Feature, das die Benutzer durchschnittliche Geschwindigkeit über die 1515 Minuten zeigt implementieren. Etwas wie die CPU-Belastung auf Unix. Ich kann durchschnittlich leicht berechnen, indem ich die zurückgelegte Distanz kumuliere, um die zurückgelegte Sekunde zu zwingen und sie durch die verstrichene Zeit zu teilen, aber ich kann nicht an eine intelligente Art denken, den gleitenden Durchschnitt zu berechnen. Offensichtlich kann ich id erledigt werden, indem du den Abstand zwischen der letzten und der aktuellen Position in einem Array jede Sekunde beim Löschen des ältesten Wertes setzt. Ich suche eine ordentliche Art, dies zu tun. Gefragt am 18. Dezember um 21:51 Sie müssen alle Werte für die gesamte Zeitspanne speichern, wie Sie bereits vorgeschlagen haben. Der Grund dafür ist, dass Sie irgendwie die Beiträge der alten Werte zum gleitenden Durchschnitt vergessen müssen. Sie können das nicht genau machen, wenn Sie nicht wissen, was diese Werte wo (d. H. Wenn Sie sie nicht speichern). In Ihrem Fall beträgt 1 Wert pro Sekunde für 15 Minuten 15 60 900 Datenpunkte, das sollte in Ordnung sein. Beachten Sie, dass Sie bei jedem Update keine Summe über das gesamte Array ausführen müssen: Sie können den neuen gleitenden Durchschnitt aus der Anzahl der Datenpunkte berechnen, den neuen Wert und den Wert, den Sie in diesem Moment vergessen haben: Hier ist n Die Anzahl der Datenpunkte (900 in deinem Fall), xforget ist der Wert, den du vergisst und xnew ist der letzte Wert. Sie fallen dann xforget von der Vorderseite Ihres Arrays und speichern xnew am Ende. Anstelle eines Arrays möchten Sie vielleicht eine über eine verknüpfte Liste implementierte Warteschlange verwenden. Antwortete am 18.11 um 22:24 Heres eine Möglichkeit, darüber zu gehen, dass ist ziemlich einfach: Wenn Sie Probenahme Position jede Sekunde halten 901 Proben in einer Warteschlange, das ist 15 Minuten wert (und 1 extra). Position 0 ist die neueste Messung, effektiv Ihre aktuelle Position. Für eine durchschnittliche Geschwindigkeit über die letzten X Minuten: Geschwindigkeit ist jetzt Distanz Einheiten pro Sekunde, umwandeln in mph oder kph oder was auch immer Einheiten, die Sie benötigen. Unterschiedliche Werte von X können für jeden Durchschnitt zwischen 1 und 15 Minuten verwendet werden. Beantwortet Dec 18 11 at 22:20 Ihre Antwort 2017 Stack Exchange, IncI habe hier ein Gerät, das mir GPS-Koordinaten geben kann. Das Zeitintervall kann ich definieren. Ich möchte es benutzen, um die durchschnittliche Geschwindigkeit während des Fahrens zu berechnen oder mit dem Auto zu reisen. Eigentlich habe ich eine Orthodromformel verwendet, um den Abstand zwischen zwei Punkten zu berechnen und dann durch das vorgegebene Zeitintervall zu teilen. Durch die Umsetzung folgte ich diesem Begriff. Leider konnte ich nur einen deutschen Link finden, aber ich denke, die Formel sollte in jeder Sprache verständlich sein. Leider verwenden diese Formel und ein Zeitintervall von 1 Sekunde sehr unpräzise Ergebnisse. Die Geschwindigkeit beim Gehen liegt zwischen 1 kmh und 20 kmh. Also frage ich mich, ob es einen allgemeinen Hinweis auf, wie die Entfernung Berechnung zwischen zwei GPS-Koordinaten (ich fand etwas ähnliches auf SO) und insbesondere, die das beste Zeitintervall ist, um die GPS-Koordinaten zu aktualisieren 9. Mai 10 um 0:27 I Nehmen Sie an, dass Sie dies durch das Gehen mit einer konstanten Geschwindigkeit (ich denke, 5 km / h ist eine normale Gehgeschwindigkeit) beim Messen Ihrer GPS-Position einmal pro Sekunde. Die Variation, die Sie in der momentanen Geschwindigkeit sehen (der Abstand zwischen jedem gemessenen Punkt, geteilt durch 1 Sekunde), ist entweder auf zufällige Variation in der gemessenen GPS-Position zurückzuführen, oder Sie arent nehmen Ihre Messungen genau eine Sekunde auseinander (oder es könnte beide sein Dinge). Ich gehe davon aus, dass Ihre Messungen genau eine Sekunde auseinander genommen werden. Handgehaltene GPS-Geräte sind viel weniger genau als beworben. Während seine oft behauptet, dass die Geräte sind genau innerhalb von 10 ft. Der wahren Position, das ist einfach nicht so. Der beste Weg, um die Genauigkeit eines GPS-Geräts zu messen und zu berichten, ist, es an einem Ort zu verlassen, an dem es die Satelliten sehen kann und nicht geregnet werden kann, und notieren Sie ein paar Tage im Wert von Daten. Sie können dann Google Maps verwenden, um die Punkte zu zeichnen - Ive getan dies um mein Haus und um das Büro, das ist ein guter Weg, um Ihnen ein Gefühl der Skala. Offensichtlich, wenn die Geräte waren perfekt genau, würden Sie sehen, alle Ihre gemessenen Punkte an einem Ort. Oder, wenn die 10 ft. Genauigkeit Sache war wahr, würden Sie sehen, alle Punkte in einem kleinen Cluster in einem 20 ft. Durchmesser Kreis. Was Sie sehen (mit jedem GPS-fähigen Gerät, das ich je getestet habe) ist eine Kombination aus relativ kleinen Positionsstreuungen (auf der Reihenfolge von einigen Dutzend Füßen), die auf einer Skala von ein paar Sekunden auftreten, und eine längerfristige zufällige Wanderung Der durchschnittlichen Position, die sich 200 oder 300 ft im Laufe eines Tages oder zwei bewegen könnte. Wenn du zum Beispiel über dein eigenes Haus gezeichnet bist, könnte es so aussehen, als ob dein PDA zu dem Nachbarhaus wanderte, dann über die Straße, dann die Straße hinunter zwei Häuser, zurück zu dir usw. alles, während du hier um 5 oder 10 Fuß herumfingst Da hat es zu viel Kaffee getrunken. GPS kann genauer sein als dies. Die Vermessungsgeräte benutzen Geräte mit viel leistungsfähigeren Empfängersätzen (so erhalten sie ein viel genaueres Lesen auf die Satellitensignale), und sie lassen sie an Ort und Stelle für eine Zeit bis zum durchschnittlichen aufeinanderfolgenden Messungen. Handheld-Geräte haben billige Empfänger-Chips und billige Antennen und müssen mit allen Arten von Signal-Interferenz sowieso umgehen. Ihre beste Wette ist, einen laufenden Durchschnitt zu tun, um Ihre momentane Geschwindigkeit zu berechnen. Anstatt den Abstand zwischen dem aktuellen Punkt und dem vorherigen Punkt um 1 Sekunde zu teilen, nehmen Sie die letzten 5 Abstände zwischen den Punkten und teilen Sie sich um 5 Sekunden (oder welche Anzahl von Sekunden Sie verwenden). Es ist wichtig, nicht nur den Unterschied zwischen dem aktuellen Punkt und dem Punkt 5 Sekunden zu nehmen und diesen Abstand um 5 zu teilen, da dies eine nichtlineare Bewegung vermissen würde. Update: Ich habe in einem Kommentar, dass youre mit einem Android-Gerät. Weißt du, ob es einen eingebauten GPS-Empfänger hat Viele (meisten) Android-Geräte nicht, was bedeutet, dass ihr GPS nicht die Triangulat-on-the-Satelliten-Version von GPS ist, aber die Vermutung-wo-ich-bin-basierte - On-the-signal-from-the-cell-towers Version. Das ist viel weniger genau positioniert, wie ich sicher bin, dass man aus der snarkiness meiner Beschreibung erzählen könnte. ) Antwortete 9. Mai 10 um 1:09 Irgendwie, wie ich in meiner Antwort sagte der beste Weg, um ein Gerät zu korrigieren Genauigkeit ist es, lassen Sie es seine GPS-Koordinaten für ein paar Tage aufzeichnen und dann alle Punkte. Ich würde es wirklich schätzen, wenn Sie dies mit Ihren beiden Geräten gemacht haben und dann lassen Sie mich wissen, was Ihre Ergebnisse sind. Ndash MusiGenesis Mai 9 10 at 2:15 Surveyors in der Regel nutzen die Tatsache, dass die quotrandom walkquot Sie beschrieben, produziert sehr ähnliche Fehler Vektoren für GPS-Geräte, die nahe beieinander sind, so dass der Unterschied Vektor zwischen zwei GPSen ist viel genauer als ihre Absolute Positionen. Eine Basis-GPS-Station an einem bekannten Punkt der Differenzvektor erzeugt Fehler im Bereich von 1-2 Metern. Ndash Rafa Dowgird Mai 9 10 um 12:32 GPS-Systeme können sofortige Geschwindigkeit direkt, ohne Interpolation Positionen. Ich lese irgendwo, dass die Geschwindigkeitsmessung tatsächlich genauer ist als die Positionsmessung. Welche deviceystemOS verwenden Sie auf Android, versuchen Sie die android. location. Location. getSpeed () - Methode (zusammen mit hasSpeed ()) in Ihrer LocationListener-Implementierung. Die Geschwindigkeitsmessung kann oder ist nicht genauer als die Positionsmessung, aber Sie haben recht, es ist eine andere Messung und basiert nicht einfach auf Berechnungen mit den Positionsmessungen. GPS-Empfänger verwenden tatsächlich die Doppler-Verschiebungen der Satellitensignale, um Geschwindigkeiten zu berechnen. Ndash MusiGenesis 9. Mai 10 um 11:53 Suche auf Google für GPS SPEED ACCURACY, und Sie finden Berichte, dass die Geschwindigkeit aus der Position-vs-Zeit berechnet ist zehnmal schlechter als nur mit dem Geschwindigkeitsparameter kommen direkt aus dem GPS-Empfänger . Der Geschwindigkeitsparameter hängt nicht von der Positionsgenauigkeit ab, sondern wird aus dem Doppler (Geschwindigkeitsdifferenz) aus den Satellitensignalen berechnet. GPS Ermittlung des Kurses und der Geschwindigkeit br Tom Clark, W3IWI Zuerst beschreibe ich, wie dein GPS-Empfänger Position und Geschwindigkeit misst . Ihre Receiver-Tracks (mindestens) 4 GPS-Satelliten. Die in den Receiver eingebauten DSP-Tracking-Loops müssen auf zwei Teile des Signals von jedem Satelliten - dem 1.023 Mbs CA-Code und der 1575.42 MHz Trägerfrequenz - verriegeln. Der Dual-DSP-Betrieb umfasst zwei Tracking Loops - eine CLL (Code Locked Loop) für den CA-Code und eine PLL (Phase Locked Loop), die den Carrier verfolgt. Die CLL erzeugt das Timing des GPS-Signals WRT (in Bezug auf) der interne Uhr des Empfängers - dies wird normalerweise in Distanzeinheiten ausgedrückt, die als Pseudo-Range (PR) bezeichnet werden, und es enthält den Fehler in der internen Uhr des Empfängers, der dem Real hinzugefügt wurde Geometrischen Bereich des Satelliten. In ähnlicher Weise misst die PLL die Trägerphasenrate (dh die scheinbare Satellitenfrequenz in Bezug auf den lokalen Oszillator des Empfängers, der üblicherweise von demselben Kristalloszillator abgeleitet wird, der als der Zeittakt verwendet wird) - dies wird als Pseudo-Range Rate (PRR) bezeichnet, Und enthält den Frequenzfehler der Empfänger LO und den Beitrag aus den Doppler-Verschiebungen, die mit allen Bewegungen verbunden sind. Die Dopplerverschiebung umfasst die Vektorsumme der Satelliten 7 km Sek. Orbitalgeschwindigkeit plus die 400 ms (bei der Äquator) Rotationsgeschwindigkeit der Erde plus Ihre Empfängerbewegungen (in einem fahrenden Auto, In frühen GPS-Empfängern wurden vier PRs von 4 Satelliten konvertiert In eine 3-D (XYZ, LatLonHgt oder was auch immer) Position plus die Kalibrierung der Timing-Bias Ihres Receivers und 4 PRRs wurden in eine 3-D-Geschwindigkeit plus eine Messung des Frequenzfehlers des Oszillators umgewandelt Alle PRPRR-Daten von allen N-Satelliten in Sicht für die letzten T Sekunden und speist die 2NT PRPRR-Samples in eine einzige mathematische Black Box (BB) (meist ein Kalman-Filter), um eine überbestimmte Schätzung der gleichen 8 Parameter zu erzeugen Also in modernen Empfängern verwendet diese BB sowohl die Kombination von vergangenen Gegenwart PRs und PRRs von vielen Satelliten, um die Position, Velocity Time (PVT) Schätzung zu verbessern. So Pauls Aussage über Geschwindigkeiten durch Änderungen in Position bestimmt wird sorta, teilweise richtig , Aber (wenn man sich die Gleichungen im BB ansieht) sind die gemessenen scheinbaren Dopplerfrequenzen noch wichtiger. Abgesehen von 1: Ein Teil dieses Threads fragte nach den Geschwindigkeitsfähigkeiten der verschiedenen Garmin-Empfänger. Garmin hat zwei generische Empfängertypen. Die erste, einschließlich der GPS-20, GPS-38, GPS-45, GPS-45XL und die ursprüngliche GPS-II verwendet eine langsame CPU, um die DSPBB-Display-Funktionen zu tun. Der DSP unterstützte nur zwei Empfängerkanäle, die sequentiell unter den verschiedenen Satelliten gemultiplext wurden. Die Brain Dead CPU hatte anscheinend nicht genügend PS, um eine PRR Bandbreite mehr als die mit der 100 MPH Geschwindigkeit verbunden zu behandeln, so dass diese Empfänger eine Software-Klammer haben, die sie nutzlos in Flugzeugen macht. Die neueren Garmins (GPS-25, GPS-48, GPS-12, GPS-12XL, GPS-II, GPS-III usw.) haben viel mehr CPU-Leistung mein GPS-III verwendet ein i386ex. Infolgedessen konnte Garmin bis zu 12 Satelliten gleichzeitig im DSP verarbeiten, die BB kann mit den Flugzeuggeschwindigkeiten umgehen und das GPS-III unterstützt sogar die ordentliche Hochlandmassen. Nun kehrt man zum Tutorial zurück - lasst uns die Frage der Geschwindigkeitsfehler beantworten. Die Fehler, die du in speedvelocity bekommst, entstehen aus mehreren Quellen. Die beiden wichtigsten sind die inhärente Genauigkeit des GPS-Systems (Ihr Receiver plus die GPS-Satelliten) und das hinzugefügte Rauschen aus der DoDs-Verschlimmerung namens Selective Availability (SA). Um das erste von ihnen zu betrachten, können wir SA ausschalten und davon ausgehen, dass die GPS-Satelliten perfekt sind. Die Wellenlänge des GPS-Signalträgers beträgt 20 cm mit einem bescheidenen SNR, die PLL im Empfänger kann die Trägerphase auf etwa 1 cm (120. eines Zyklus oder 20 Grad der elektrischen Phase) sehen (messen). Aus Gründen der Einfachheit nehmen wir an, dass wir für 1 Sekunde messen, also kann ich 1 cm Sekunde Geschwindigkeit für einen gegebenen Satelliten sehen. Da wir normalerweise nicht in diesen Einheiten denken, 1 cmsec 36 meterhour 0,023 mileshour. Um die Geometrie und die Tatsache zu berücksichtigen, dass wir mehrere Satelliten sehen, multiplizieren wir diese durch HDOP (für horizontale Geschwindigkeit) oder VDOP (für Geschwindigkeit), da HDOP nur selten 3 ist, bedeutet dies, dass der Systemgeschwindigkeitsfehler selten 0,07 mileshour ist. Und die Tatsache, dass wir uns auf die Trägerphasenrate verlassen, um die Geschwindigkeit zu bestimmen, messen wir die relative L-Band-Trägerfrequenz (d. H. Doppler-Offset) bis 120. eines Hertz. Im Wesentlichen verschlechtert die DoD die Leistung der umlaufenden Atomuhren auf den GPS-Satelliten, indem sie eine programmierbare Line-Trage in den Ausgang des (10,23 MHz) Takts setzt und die Uhr mit einer magischen Pseudozufallssequenz, die nur sie kennen, . Unsere Amateur-Messungen haben gezeigt, dass sie die Linie Trage über ein breites Spektrum von Zeitskalen, von ein paar Sekunden bis 12 Stunden, aber dass der langfristige Durchschnitt Null ist. Über längere Zeitskalen beeinflussen die Variationen das Timing der Taktsignale, die GPS überträgt (wie der 1.023 Mbs CA Code), so dass unsere PR Messungen laut sind und wir sehen unsere scheinbare Position wandern. Die DoD hat garantiert, dass die Positionsfehler aufgrund von SA nicht mehr als 100 Meter (3-Sigma, horizontal) für den Bereich der Variationen, die sie hinzufügen, bei einer vernünftigen Anzahl von Satelliten (wie bei HDOP Diese Seite wurde zuletzt geändert
No comments:
Post a Comment