Forum: Mikrocontroller und Digitale Elektronik GPS eingrenzung


von bmsirb (Gast)


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

von Pandur S. (jetztnicht)


Lesenswert?

Vektorrechnung ist bekannt ?

von TestX (Gast)


Lesenswert?

Such mal nach dem stichwort "geofencing algorithm"

von bmsirb (Gast)


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

von hp-freund (Gast)


Lesenswert?

http://www.dbs.ifi.lmu.de/Lehre/GIS/SS2009/Skript/Kap-06.pdf

Würde mich aber nicht wundern wenn es schon etwas fertiges für den 
ar**ino gibt.

von Philipp K. (philipp_k59)


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.

von Alex W. (a20q90)


Lesenswert?

hp-freund schrieb:
> ar**ino

Bitte was?

von hp-freund (Gast)


Lesenswert?

Alex W. schrieb:
> Bitte was?

;-)

von Max M. (max_m807)


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

: Bearbeitet durch User
von Daniel F. (df311)


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 ;-)

von Rolf M. (rmagnus)


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.

von Dieter F. (Gast)


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 :-)

von hp-freund (Gast)


Lesenswert?

Hier hat sich schon einer Gedanken dazu gemacht:

https://github.com/abhinandanramesh/Geo-Fencing

von Oldie (Gast)


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 ....

von J. T. (chaoskind)


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

von Jobst M. (jobstens-de)


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

: Bearbeitet durch User
von W.A. (Gast)


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.

von Dieter F. (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.