Guten Tag allerseits!
Ich mache gerade ein kleines Privatprojekt für mich und meine Kinder
zuhause und habe im Moment foglendes Problem.
Ich verwende gerade einen arduino GPS-shield und möchte gerne für mein
Quart-Bike ein Bereich eingrenzen um damit sozusagen dem Fahrzeug
vorgeben wo es fahren darf.
Also sagen wir mal ich hab ein Rechteck und er soll in diesem Bereich
fahren und außerhalb nicht. Mein Problem ist ich schaffe es nicht die
Koordinaten miteinander zu verbinden (punkt A mit punkt B usw.).
Ich danke schon im voraus auf alle Antworten!
MfG. bmsirb
Danke für deine Antwort!
Aber ich bin relativ neu auf diesem Gebiet!
Aber aus dem "geofencing algorithm" versteh ich wenig bis gar nichts :')
Kannst du es bitte näher erläutern denn ich denke das wäre was für mein
Projekt
Geo Fence heisst soviel wie "Gebietskäfig" und hat heutzutage Einzug bei
den Quadcoptern mit gPS das man sagen kann vom Startpunkt bis Grenze
20mx20x20 m.
Ohne höhe ist das nichtmal ein Algorithmus, sondern eine
Koordinatenrechnung die nicht sehr schwer ist.. Allerdings muss man dann
immer von einem Ausgangspunkt ausgehen.. nen halbes Strassenverzeichnis
wird dann eher zum Algorhitmus.
ich habe für ein anderes Projekt etwas ähnliches realisiert. Hier wird
im Radius um einen Mittelpunkt ein Bereich überwacht, wird der Bereich
(Kreis) um 5 Meter verlassen, wird eine Aktion ausgeführt, hier wird ein
Zähler hochgezählt und ein akustisches Signal ausgegeben. Das einzige
was du machen musst, die Koordinaten in UTM (x0, y0) umrechnen, wie du
das für dein Arduino machst, musst du allerdings selber raus finden, da
hab ich keine Ahnung.
für den Privatgebrauch kann man - meiner Meinung nach - die Krümmung der
Erdoberfläche als nicht vorhanden bettrachten, da die eingegrenzte
Fläche doch eher klein sein dürfte ;-)
in dem Fall ist das Problem einfach:
Die Grenzen des Bereichs werden durch zwei bis vier Koordinatenpaare
definiert.
Im Fall "zwei" ist die Aufgabe (abgesehen von einer Umwandlung in ein
brauchbares Datenformat) mit einem einzigen if (und mehreren
Teilbedingungen) erledigt.
Im Fall "mehr als zwei" brauchts ein bisschen mehr Hirnschmalz, ist aber
mit Mitteln der Mathematik aus der Mittelschule durchaus in recht kurzer
Zeit zu erledigen.
Schwieriger wirds, wenn die Größenordnung der Fläche 1000 km²
überschreitet, dann sollte man sich (je nach gewünschter
Genauigkeitsanforderung) tiefer mit der Gemotrie beschäftigen, da
ansonsten kein Rechteck mehr herauskommt ;-)
Daniel F. schrieb:> für den Privatgebrauch kann man - meiner Meinung nach - die Krümmung der> Erdoberfläche als nicht vorhanden bettrachten, da die eingegrenzte> Fläche doch eher klein sein dürfte ;-)
Wenn man Mercator-projizierte Karten verwendet, passt das eh, denn die
machen das auch.
> Im Fall "mehr als zwei" brauchts ein bisschen mehr Hirnschmalz, ist aber> mit Mitteln der Mathematik aus der Mittelschule durchaus in recht kurzer> Zeit zu erledigen.
Wobei man da, wenn's allgemein überall funktionieren soll, etwas
aufpassen muss, denn die Erdoberfläche hat blöderweise keinen Anfang und
kein Ende. Es gibt also einen "wrap-around" bei den Koordinaten, den man
berücksichtigen muss.
> Schwieriger wirds, wenn die Größenordnung der Fläche 1000 km²> überschreitet, dann sollte man sich (je nach gewünschter> Genauigkeitsanforderung) tiefer mit der Gemotrie beschäftigen, da> ansonsten kein Rechteck mehr herauskommt ;-)
Nicht nur mit Geometrie, sondern vor allem auch mit Kartografie.
Bestimme von Deinem Rechteck (per GPS-Messung) Längen- und Breitengard
links oben (im Nordwesten) -> GrLiOLong und GrLiOLat sowie Längen- und
Breitengard rechts unten (im Südosten) -> GrReULong und GrReULat Deines
Rechtecks und schreibe diese mit den gemessenene Werten als vorgenannte
Konstanten in Dein Programm.
Dann, im Programm, prüfe jeweils (mit Longitude und Latitude = akt.
GPS-Messung):
1
IF(GrLiOLong<Longitude&&GrLiOLat>Latitude)&&
2
(GrReULong>Longitude&&GrReULat<Latitude)
3
4
{
5
// alles O.K.
6
}
7
8
ELSE
9
10
{
11
// Motor aus :-) oder sonst was ...
12
}
Ich gehe davon aus, wir reden vom Standort Deutschland ...
Du kannst Di natürlich auch sprechendere Namen für die Variablen /
Konstanten ausdenken :-)
Ich denke mal, es wird maximal um einige km gehen.
Da sind innerhalb der Polarkreise (und nicht gerade an der
Datumsgrenze) Näherungen mit < 1% Fehler möglich, wenn es um
ein Quadrat geht, dessen untere/obere Begrenzung in Ost-West-
Richtung geht.
Man stellt sich auf den Mittelpunkt des Quadrats und das
GPS ermittelt die Koordinaten des Mittelpunkts.
Nun gibt man dem arduino die halbe Seitenlänge des
Quadrats ein. Oder die ganze Seitenlänge und der arduino
halbiert sie für den Vergleichswert.
Beim Fahren wird mit Hilfe des GPS die Abweichung vom
Mittelpunkt in
Breite (1852 m / Winkelminute) und
Länge (1852 m * cos(Breite) / Winkelminute)
erfasst.
Die Abweichungen werden absolut (ohne Vorzeichen) mit
dem erlaubten Wert verglichen - und bei Überschreitung
gibt es ein Signal, oder - oder ....
Beim Quadrat bei dem die Ränder parallel zur Nord/Süd-Achse und
Ost/West-Achse verlaufen, nimmst du dir die Koordinaten vom
nordöstlichen und vom südwestlichen Punkt und prüfst ob deine Position
in der NordsüdKoordinate größer als die vom Nordoste-Punkt UND kleiner
als die vom südwest-Punkt ist. Genauso für die Ostwestachse verfahren.
Sollte dein Quadrat verdreht sein, solltest du dich noch ein wenig mit
Vektorrechnung befassen.
MfG chaos
Also, wenn man einen "Wrap around" ausschliessen will, muss man entweder
die Entsprechenden Fälle abfangen oder gleich mit Orthodromen rechnen.
(Wobei man das dort auch tut)
Breitenkorrigierte Koordinaten per Pythagoras machen auch bei einer
Strecke von 1500km nur wenig Abweichung. An den Polen nimmt die
Abweicheung jedoch zu:
Dieter F. schrieb:> Dann, im Programm, prüfe jeweils (mit Longitude und Latitude = akt.> GPS-Messung):>> IF ( GrLiOLong < Longitude && GrLiOLat > Latitude ) &&> ( GrReULong > Longitude && GrReULat < Latitude )>> {> // alles O.K.> }
Da täuscht du dich aber gewaltig, zumindest falls das Ding nicht nur auf
Teilen der Erdoberfläche funktionieren soll.
Beweis durch Gegenbeispiel. Wo ist übrigens Oben, Unten, Links und
Rechts? Das hätte dir schon dein Geographielehrer austreiben sollen.
W.A. schrieb:> Da täuscht du dich aber gewaltig, zumindest falls das Ding nicht nur auf> Teilen der Erdoberfläche funktionieren sollDieter F. schrieb:> Ich gehe davon aus, wir reden vom Standort Deutschland ...
Lesen kannst Du aber - oder ?
W.A. schrieb:> Beweis durch Gegenbeispiel. Wo ist übrigens Oben, Unten, Links und> Rechts? Das hätte dir schon dein Geographielehrer austreiben sollen.Dieter F. schrieb:> links oben (im Nordwesten)Dieter F. schrieb:> rechts unten (im Südosten)
Habe ich ja wohl alles definiert.
Du beweist nur, dass Du nicht richtig liest. Bist Du von Beruf
"Oberlehrer"? :-)