GPS eingrenzung

Gast #4420715
Lesenswert?
• ▲
▼
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
Gast #4420765
Lesenswert?
• ▲
▼
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
#4420819
Lesenswert?
• ▲
▼
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.
#4421044
Lesenswert?
• ▲
▼
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.

1
  If GPS1.GPSEnabled Then
2
    lat1 = Location1.Latitude
3
    lon1 = Location1.Longitude
4
    utm = Navigation1.LatLonToUTM(6378137.0, 1/298.257223563, lat1, lon1)
5
    x0 = utm(0)
6
    y0 = utm(1)
7
    Label1.Text = "Aktuelle Position: " & Round2(x0, 2) & " / " & Round2(y0, 2)
8
    If Button1.Tag = "1" OR radius > 0 Then
9
      entfernung = Sqrt(Power(x0 - x1, 2) + Power(y0 - y1, 2))
10
      Label3.Text = "Entfernung zum Mittelpunk: " & Round2(entfernung, 2)
11
      If radius > 0 AND (entfernung > radius + 5) AND wz Then
12
        zähler = zähler + 1
13
        Label6.Text = "Zähler:"
14
        Label5.Text = Round(zähler)
15
        Beeper1.Initialize(1000, 800)
16
        Beeper1.Beep
17
        wz = False
18
      Else If entfernung < radius - 5 AND wz = False Then
19
        wz = True
20
      End If
21
    End If
22
  End If
#4421075
Lesenswert?
• ▲
▼
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 ;-)
#4421292
Lesenswert?
• ▲
▼
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.
Gast #4421367
Lesenswert?
• ▲
▼
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 :-)
Gast #4421910
Lesenswert?
• ▲
▼
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 ....
#4421947
Lesenswert?
• ▲
▼
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
#4421966
Lesenswert?
• ▲
▼
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:
1
Durchschn_Längenkm = (cos(Breitengrad_A) + cos(Breitengrad_B)) / 2 * 111,111
2
Breitenkm = (Breitengrad_A - Breitengrad_B) * 111,111
3
Längenkm = (Längengrad_A - Längengrad_B) * Durchschn_Längenkm
4
Strecke = wurzel(Breitenkm² + Längenkm²)


Gruß

Jobst
Gast #4421979
Lesenswert?
• ▲
▼
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.
Gast #4422144
Lesenswert?
• ▲
▼
W.A. schrieb:
> Da täuscht du dich aber gewaltig, zumindest falls das Ding nicht nur auf
> Teilen der Erdoberfläche funktionieren soll

Dieter 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"? :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren