GPS Steuerung

  • So ich kann was berichten :)

    Also ich hab einen Weg gefunden wie man in "Viking" (apt install viking) ein Quadrat malen kann und diese Daten speichert.

    Es ist eine *.vik Datei mit mehreren "Spuren" also Quadrate die man leicht aus dieser Datei extrahierenn kann.

    Bis jetzt hab ich in viking also direkt bei mir vor der Haustür, mehrer unterschiedlich große 4-Ecke eingegeben.

    Es können beliebig viele sein alle so 30 Meter bis 100 Meter groß.

    Die Daten wurde aus der gespeicherten *.vik datei extrahiert und mit einem weiteren bash script verarbeitet.

    Was soll ich sagen die Quadrate sind ungefähr alle um 100 bis 150 Meter verschoben in Wirklichkeit.

    Es ist aber schwer zu sagen um wieviel wirklich weil man da draußen die Striche nicht sieht, die man in Viking eingegeben hat.

    Das längliche Quadrat ist auch noch schief vermutlich.

    Alle Quadrate wurden gefunden.

    Der Bluetooth-Lautsprecher hat gepiepst, beim Betreten und ist aus beim Verlassen der Quadrate (aktuallisiert alle 3 Sekunden).

    Also mit dem Handy als GPS Empfänger.

    Viking ist gut.

    Vielleicht sollte man die Quadrate direkt life ablaufen und speichern damit man unter 100 Meter verschiebung kommt :) :)

    5 Mal editiert, zuletzt von det_lev_da (15. November 2019 um 17:56)

  • Also ich hab einen Weg gefunden wie man in "Viking" (apt install viking) ein Quadrat malen kann und diese Daten speichert.

    Von Viking habe ich noch nicht gehört, aber klasse, wenn es funktioniert :)

    Ich hätte Google Earth Pro (mittlerweile kostenlos) benutzt und es dann als KML-Datei exportiert. Ob es da auch zu Abweichungen kommt kann ich nicht sagen.

    Kelvin

  • Ich hab mich gestern mit Viking noch eine Stunde beschäftig. Gekannt hab ich es schon länger.

    Bing-Maps als Standart eingestellt, weil Google-Maps mit viking abgestellt werden musste von Google aus.

    Sagen wir mal so, mein Raspbian ist komplett in Deutsch und alle Menüs sind deutsch.

    Mein Ziel war nur irgendwie die Koordinaten, zu speichern.

    Welches Format war mir egal, extrahiert mittels bash-Script und aufgearbeitet (und ja kein XML :) ).

    Google-Maps geht da nicht auf der viking Software.

    Die Koordinaten können aber extrahiert werden aus dem gespeicherten.

    Etwas umständlich ist es wenn man die Ebene-Wegpukte anklickt, da meint viking immer man wolle diese Ebene Umbenennen.

    Man muss die Wegpunkt-Ebene anklicken, um das rechte-Mausklick-Menu darauf zu öffnen.

    Das nervt weil man die Wegpukt Aufnahme damit abschließen muss in diesem Menü.

    Es musste schnell gehen :) :) :)

    Das größte Problem war, in bash, Kommazahlen zu vergleichen.

    Das GPS liefert unterschiedlich lange Kommazahlen hinter den Komma manchmal 7 Stellen manchmal 8 Stellen. (mehr/weniger)

    Diese 100 Meter Abweichung kann auch daher kommen, weil es auf die Kürzere Anzahl gekürtzt wird intern.

    Hab im Internet eine Methode mit awk gefunden um diese Zahlen zu vergleichen, das müsste eigentlich passen.

    Genau sagen kann ich es nicht, wie genau diese Methode vergleicht.

    Man weiß von einem Viereck eben Xmax, Xmin, Ymax, Ymin.

    Also lat=Latitude=X lon=longitude=Y.

    Vom GPS wird lat und lon gelifert, die aktuellen.

    Was stimmen muss, um in einem Viereck zu sein, ist, es müssen 4 Bediengungen erfüllt sein.

    Die in einer einzigen IF Abfrage und && zusammengefasst werden.

    lat > Xmin && lat < Xmax && lon > Ymin && lon > Ymin

    Trifft das zu befindet man sich in einem vordefinierten Viereck, welches in viking eingeben wrude.

    Das ist es eigentlich was mein bash-Script macht! :)

    Das große Problem ist, das SCRIPT wird alle (sagen wir mal) 1 Sekunde aufgerufen und jedes mal werden die Vierecke (DATEI) geöffnet. Das ganz geht auf Dauer, auf die Lebenszeit der SD Karte.

    Ein Python SCRIPT, welches nicht immer neu geöffnet wird wäre schon besser.

    Vorerst für Tests ist es so gut :) :)

    3 Mal editiert, zuletzt von det_lev_da (15. November 2019 um 19:40)

  • Das große Problem ist, das SCRIPT wird alle (sagen wir mal) 1 Sekunde aufgerufen und jedes mal werden die Vierecke (DATEI) geöffnet. Das ganz geht auf Dauer, auf die Lebenszeit der SD Karte.

    Dann lade doch gleich zu Anfang die Daten aus der Datei in eine Variable im Script und greife darauf jedes Mal zu. So muss die Datei nicht jedes Mal geöffnet werden.

    Kelvin

  • Gestern hab ich noch 17 Quadrate mit viking erstellt und aus der gespeicherten *vik Datei extrahiert und aufbreitet damit man es in array laden kann. Über die Brücke war gut Fehler vielleicht 3 Meter (unbebaut).

    In den Häuserschluchten war der Fehler schon größer.

    Es ist langsam mit bash Script, hab eben in eine Terminal noch eine Ausgabe um zu sehen in Welchem Viereck man sich befindet.

    Also 17 * 4 mal muss awk Kommazahlen vergleichen. Das dauert so 2 bis 3 Sekunden. Das ist echt langsam :-). Das bash Script klappert bei jedem Durchgang alle 17 Vierecke ab. Mit Python kenne ich mich nicht gut aus. Ich kann mir nicht vorstellen das Python langsamer sein kann :) :)

  • Hallo zusammen

    mein JOY-PI Koffer ist eingetroffen juhu

    jetz werde ich mich mal mit dem Teil beschäftigen und dann gehts zum ersten Projekt

    habe ja schon ein wenig Info von euch. Denke die nächsten Tage werde ich noch das ein oder andere Fragen

    bis dahin mal

    Gruß Ralf

  • Ich bin jetzt auf Python umgestiegen und das ist echt schnell.

    Ich hab diese Library?? genommen.

    https://github.com/MartijnBraam/gpsd-py3

    hier gibt es Beispiele:

    https://github.com/MartijnBraam/gpsd-py3/blob/master/DOCS.md

    Hab das ganze bash Script in Python übersetzt.

    Ich muss jetzt nur noch herausfinden, wie man den Fehler abfangen kann, wenn kein gpsd läuft.

    Das Python Script hört zwar auf, wenn gpsd nicht läuft, nur sieht esmnicht gut aus.

    Wenn man so ein Script nur alle paar Schaltjahre benutzt .......

    Ist eigentlich immer das Gleiche :) nach 3 Monaten ist alles weg, wie so ein Script funktioniert.


    Es ist egal woher die GPS-Daten kommen gpsd ist der Server an dem auch diese Library??? zugreift, ob gpsd von einem SUPER GPS Adapter oder vom Smartphone ist egal.

    Mit der Library??? kann auch die Geschwindigkeit (Speed) ausgeben werden.

    Das wäre interresant für die Abfrage-Geschwindigkeit (timer.sleep(x)).

    0 Speed == 10s warten

    100km/h == 0.2s warten

    Hab noch nicht getestet ob Speed auch die Geschwindigkeit ist mit der man unterwegs ist. Das Wäre noch was. :) Ist aber komplizierter. :) :)

    Einmal editiert, zuletzt von det_lev_da (19. November 2019 um 00:33)

  • Ich hab es jetzt fertig!

    Als Grundlage wird shapely benutzt.

    Es wird jetzt eine shapely MultiPoint Liste benutzt im MultiPoint Format.

    Das läuft jetzt und ist super Schnell.

    Das shapely MultiPoint Array (Liste in Python) kann so viele Trackpoint Spuren aufnehmen wie es soll beliebig viel und shapley ist absolut schnell rechnet für alle Polygone (ja Polygone, nicht vierecke, beliebge vielecke also) aus und meldet das Betreten.

    Ja jetzt ist alles mit shapley ohne eigene Formeln.

    Hab zwar Probiert eine Convex-hull zu bilden, das ist daran gescheiter das tangens die Winkel manchmal negativ ausgibt und mal nicht.

    Shapely macht das auch viel schneller und blitz schnell.

    Man gibt in Viking die Track Spure ein, schließt sie ab in Viking, speichert das ganze in der *.vik Datei.

    Es sind zwei Scripte eins zum extrahieren von der vik Datei und das Anzeigen der Convex-hull in Viking. So kann das orginal Gebilde mit der von shapley erzeugten convex-hull verglichen werden. Und ein reines Python script für die Live Analyse der Gps Daten und Polygon betreten Abfrage.

    Besser geht es nicht :) es ist professionell.

    Muss das ganz noch mit dem gpsd Library von Python ansehen müssen, für Fehler abfangen.

  • für Fehler abfangen.

    Beachte, im Grenzbereich kann es vorkommen, dass die GPS-Daten sagen du würdest ständig rein und raus gehen. Wenn einmal innerhalb, dann wird es wieder nach einer einstellbaren Zeit geschaut, ob der Bereich verlassen wurde. Beim Verlassen ebenso, nicht dass die Ansage ein zweites Mal anläuft.

    Glaube ersetzt kein Wissen

  • Beachte, im Grenzbereich kann es vorkommen, dass die GPS-Daten sagen du würdest ständig rein und raus gehen. Wenn einmal innerhalb, dann wird es wieder nach einer einstellbaren Zeit geschaut, ob der Bereich verlassen wurde. Beim Verlassen ebenso, nicht dass die Ansage ein zweites Mal anläuft.

    Kein Problem habe ein super DatenModel. Ich schreib jetzt mal Array stat Liste, in Python soll es keine Arrays geben.


    Also ich hab ein Array eine Matrix (Matrize in deutsch) da ist jede Zeile ein shapely Multipoint Object. Es gibt also 5 Bereichte die mit dem Schiff durchfahren werden, also hat das Array (Matrix) 5 Zeilen mit beleibeig vielen Punkten, die das Gebiet beschreiben.

    Zu dieser Matrix hab ich schon zwei zusatatzliche 1 Dimensionale Arrays.

    Jetzt hätte ich schon fast Vector geschrieben ( C++) unschlagbar. :)

  • So aus der Production line 1A :) liegt ein bash Script vor.

    Was installiert sein muss ist shapely zenity viking

    pip install shapely

    apt install zenity

    apt install viking

    Dieses Script produziert aus trackpoint Spuren aus einer *.vik Datei zwei Datei. Eine modifizierrte *.vik mit shapely convex_hull + orginal Spur.

    Und noch eine Datei mit daten um es durch ein Python Script zu jagen :)

    Viel Spaß hahahahahaha

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!