Lokalisierung vom Rasen Roboter

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Lokalisierung vom Rasen Roboter

      Hallo zusammen,
      da ich nun jede Menge Zeit spare, weil mein Robolinho den Rasen mäht, habe ich wieder mehr Zeit für Programmierung.
      Nun kam mir die Idee, dass es doch ganz interessant wäre zu sehen, wo der sich gerade befindet.
      Und damit könnte man auch feststellen, welche Bereiche er eher mehr und welche eher weniger mäht.
      Zusätzlich dann noch eine SMS, wenn jemand das Teil von meinem Grundstück wegnimmt, mit genauem Standort wohin.

      Erster Gedanke war, einen GPS Empfänger zu nehmen und darüber die Position auf dem Grundstück festzustellen.Beim Auswerten der daten habe ich aber festgestellt, dass die Position trotz auf dem Schreibtisch liegendem Empfänger stark variiert. Über mehrere Minuten geht der so einige umher. Dann habe ich einen zweiten baugleichen BT220 genommen und die Differenz der beiden geloggt. Aber auch da sind ähnliche Abweichungen. Sieht nicht so gut aus.
      Gerade probiere ich, ob ich über die Konfiguration den UBLOX so einstellen kann, dass die Abweichung geringer wird. Ich hatte ursprünglich auf unter 1m gehofft, im Moment bin ich davon recht weit weg. Zu weit jedenfalls, als dass eine sinnvolle Auswertung der Arbeit des Roboters möglich wäre.
      In DGPS habe ich mich auch mal eingelesen, genauso in die Raw Daten Verarbeitung, aber vielleicht bin ich dafür geistig schon nicht mehr aufnahmefähig genug.
      Und ganz andere Richtungen wie Lokalisierung über Funk- oder Ultraschallsender auf meinem Grundstück sind auch recht kompliziert.
      Zuletzt habe ich mir auch noch die MPU-9250 usw angesehen, ob ich damit etwas anfangen kann. Aber wenn ich mir das Gehoppel des Mähers auf meinem Rasen ansehen, bezweifele ich, dass ich mit deren Daten eine exaktere Position als mit GPS hinbekomme. Zumindest nicht mehr in diesem Leben.
      Da die beste Ehefrau von allen mir deutlich zu verstehen gegeben hat, dass ein Eingriff in den Robo vollkommen unakzeptabel wäre, scheiden so Sachen wie Sensoren der Räder abgreifen leider auch aus. <X :D

      Vielleicht hat ja einer von euch schon etwas in diese Richtung gemacht und man könnte sich austauschen.
      Viel gefunden habe ich dazu hier noch nicht.
    • Du musst mal hier im Forum nach GPS suchen.
      So eine Diskussion gab's schon mal.

      Aber vorweg, die Drift ist normal. Sie bewegt sich immer um die eigentliche Position herum.
      Das kommt von Schwankungen der Satelliten-Position und auch von atmosphärischen Störungen.

      Eine Möglichkeit wäre, die Position über einen gleitenden Mittelwert zu ermitteln.
      Das Signal ist dann ruhiger, aber dafür auch träger. D.h. Die ermittelte Position hingt dann der eigentlichen um eine gewisse Zeit hinterher.
    • Hallo Mitch,
      erst einmal danke für deine Antwort.
      Unter GPS finde ich nur diesen gps-nmea-daten-auswertung.
      Dort geht es aber hauptsächlich um den Empfang des Datensatzes und die Verarbeitung. Damit habe ich kein Problem.
      Nur der Beitrag von Tschoeatsch bezieht sich auf die Schwankung der Geschwindigkeit.
      Ich wundere mich ja nicht über die Streuung, sondern bin an Möglichkeiten interessiert, sie zu verringern.
      Ich vergleiche die ganze Zeit die Ergebnisse beider Empfänger und die max. Differenz zwischen den beiden ist etwa so groß wie die max. Streuung eines einzelnen Empfängers.
      Mein Robo macht etwa 50cm/sec, also knapp 2km/h. Da der GPS Wert nicht springt sondern driftet, komme ich mit einer Mittelung doch wohl nicht weiter, besonders wo die Drift größer als die tatsächliche Bewegung sein kann. Es könnte theoretisch sogar sein, dass ich beim bewegten Objekt über eine gewisseZeit absolut konstante Position bekomme, weil sich Drift und Bewegung genau aufheben.
      Da scheint es für mich klar zu sein, dass ich mit einer nachträglichen Korrektur nicht weiterkomme, solange ich nicht einen der Werte kenne.
    • Bei 1m Auflösung musst du schon beim Militär nachfragen.

      Aber wie groß ist denn dein Garten, in dem der Bot rumfährt? +- 2,5m ist dich tragbar meine ich.
      Oder sind es +-5 Meter?

      Meines Wissens gibt es auch einen Algorithmus.
      Der anhand der Drift die weitere Drift berechnet und so die Fehl-Position kompensiert.
      Der ist aber reichlich mathematisch und nicht banal!
      Eher nix für die Bascom Fließkommaberechnung.
    • Mitch64 wrote:

      Bei 1m Auflösung musst du schon beim Militär nachfragen.
      Wieso beim Militär?

      Mitch64 wrote:


      +- 2,5m ist dich tragbar meine ich.
      Mein Robo fährt chaotisch. Bei +-2,5m kann ich mir die Auswertung abschminken, welche Bereiche er wie stark gemäht hat.
      Mein Garten ist insgesamt ca. 15m breit und 40m lang.
      Und wie gesagt, ich hänge nicht an GPS, es gibt ja noch andere Möglichkeiten.
      Aber scheinbar wird sowas doch eher selten gemacht.
    • Hallo Franz,

      wenn du die Fahrten mit einer höher stehenden Kamera über Einzelbilder aufzeichnest, z.B. alle 2 Sekunden (oder auch mehr, hängt von der Robogeschwindigkeit ab), dann könntest du am Ende das ganze in Zeitraffer ablaufen lassen und sehen wie und wo der Robo hergekurvt ist. Wäre gleich auch eine längerfristige Datensicherung. a_19_23577ce2
      Bei 5 Stunden Mähzeit hättest du 9000 Bilder, wäre es ein schöner und kurzer Fim von 6 min (25/sec), wenn ich mich verrechnet habe.
      Schneller abspielen lassen geht ja auch.

      Noch besser wäre es, ein hervorstechendes Superkontrast-Merkmal auf dem Robo anzubringen, welches für die Kamera einen deutlichen Spot darstellt, und den Film nachher mit einem Programm bearbeiten, welches dir die Spuren dieses Spots aus den einzelnen Bilder nachzeichnet.

      Habe aber nach einem solchen Programm noch nicht geforscht, eventuell selbst mit Python auf Raspi herstellen.
    • Schraubbaer wrote:

      Wie währ es mit dem Ansatz: nen Licht (Laser,IR) Empfänger in jede Ecke vom Garten, dann auf dem Mähknecht ein schwenkbaren Sender (Eventuell rotierend?) Am Schwenker den Winkel Messen, dann kann man die position ja ausrechnen.
      Geht wegen dem eingangs beschriebenen Gehoppels auf dem Rasen nicht.
      In einer Turnhalle klappt das wunderbar, aber die musst du auch nicht mehr mähen ;)

      Man könnte ja eine Kamera erhöht anbringen, die das Feld beobachtet.
      Wenn der Roboter eine eindeutige Farbe hat, z.B. orange, kann man den Farbfleck recht gut im Pixelfeld bestimmen (zumindest was ich schon so an Demos gesehen habe)
      Statt Farbe geht das vielleicht auch über Bewegungserkennung, allerdings will man sicher nicht jede Amsel oder Wildschwein erfassen.
    • Hallo zusammen,
      vielen Dank für eure weiteren Vorschläge.
      Mit den Kameras wird das wahrscheinlich sehr aufwendig, da zum einen mehrere Bäume im Weg sind und die haben genau dann viele Blätter, wenn der Robo über den Sommer läuft. Außerdem ist mein Grundstück ja 40 m lang und das Haus steht auch noch drauf. Da wären so viele Kameras nötig, dass das nicht machbar ist.

      Mit der lokalisierung über feststehende Empfänger für Licht (Laser eher nicht wegen des Gehoppels) muss ich mir mal genauer ansehen. Da könnte ich ja ruhig ein paar mehr hinstellen, sodass der Robo immer mehrere sehen kann.
      Wenn ich jede Sekunde einen Positionswert haben möchte, müsste der Sender auf dem Robo sich einmal pro Sekunde drehen, das ist machbar. Synchronisieren könnte ich den über den GPS Empfang. Also bei Empfang des Datensatzes startet der Sender in Fahrtrichtung. Die Empfänger melden dann mit welcher Verzögerung sie das Licht sehen konnten. Und zusammen mit den GPS Daten reichen vielleicht schon 2 empfangene Lichtimpulse. Muss ich mir mal genauer überlegen.
    • Franz wrote:

      Dann habe ich einen zweiten baugleichen BT220 genommen und die Differenz der beiden geloggt.
      Wenn de Drift ähnlich ist wäre es nicht machbar sie gegeneinander abzugleichen? Ein Empfänger im Robot und der andere an fester bekannter Position. Ist sie rein zufällig oder jeden Tag gleich? Soweit ich weiß werden die Satelliten einmal Täglich synchronisiert wodurch die Drift sich im 24 Stunden Rhythmus ähnlich verhalten könnte. Wenn er gestohlen wird sind 5m zuviel. Dann wird vielleicht die falsche Wohnung gestürmt :D
    • In der Landwirtschaft oder im Vermessungswesen werden auch genauere Geräte als +/- 2m eingesetzt. Kostet halt der Empfänger deutlich mehr, weil Lizenzgebühren und aufwändigere Korrekturen dahinter gepackt werden müssen. (muss mal das große Kind fragen)

      Im Eigenbau könntest Du noch Triangulation verwenden. Also auf den Robi einen Sender mit einem fixen Signal: 433MHz und dann 1x pro Sekunde senden, z.B. per 50-100us pro Puls ein Muster Puls-Pause-2xPuls-2xPause. Dann brauchtest Du mindestens 3 Empfänger, die entweder per Kabel, Licht, Funk mit der mittleren Station verbunden sind. Die Station in der Mitte ist die Zentrale.
      Ein paar Referenzmessungen musst Du machen, um die Laufzeiten der Außenstationen zur Zentrale zu kennen.
      Der Rest ist Zeitdifferenzen & Mathematik. Wenn es gut werden soll wird es teurer - wie immer.
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
    • Franz wrote:

      Die Empfänger melden dann mit welcher Verzögerung sie das Licht sehen konnten. Und zusammen mit den GPS Daten reichen vielleicht schon 2 empfangene Lichtimpulse.
      Mit Licht geht das nicht, viel zu schnell.
      Bei Messung mit Fremdlicht tagsüber brauchst du eine Modulation, die das ganze auch noch verzögert.
      Wenn die Empfänger-AVR mit 16 MHz laufen und du es schaffst, alles zu synchronisieren, dann hat ein halber Takt Verzögerung schon einen Fehler von 10 Meter zur Folge.
      Mit Gehoppel auf dem Rasen und vermutlich noch einigermaßen wetterfest wird das noch schwieriger.

      Man könnte auch langsamere Signale benutzen, Schall bereitet sich langsam genug für eine Entfernungsmessung aus, aber schnell genug, um alle Sekunde zu messen.
      Der Rasenmäher sendet einen Schall- und Lichtimpuls, die Empfänger werten die Zeit zwischen beiden aus.

      Statt mit der Laufzeit der Signale kannst du vielleicht auch einfach den Winkel zwischen Rasenmäher, Bake und Grundlinie feststellen.
      Der Roboter sendet ein Funk-Dauerfeuer und die Baken peilen mit einer Art Radar-Antenne, also einem drehenden Reflektor.

      de.wikipedia.org/wiki/Funkpeilung
    • Gedanklich hat @Michael mit seiner Argumentation recht. In Kombination mit der Empfangsstärke (RSSI) und einer speziellen Signalauswertung könnte ein Ansatz sein. Wobei dann sich Ultraschall einfacher umsetzen ließe, denn selbst die Änderung des Luftdrucks spielt bei Laufzeitdifferenzen keine Rolle.
      Aus datenschutzrechtlichen Gründen befindet sich die Kontaktdaten auf der Rückseite dieses Beitrages.
    • Von Laufzeit bei Licht habe ich auch nie gesprochen, macht bei 300 Millionen Meter und 20 Millionen Takten pro Sekunden überhaupt keinen Sinn. Da wären GHz nötig.
      Ich hatte den Vorschlag von Tobias aufgegriffen, eine mit 1Hz rotierende LED auf dem Robo, synchronisiert über GPS Zeit. Da kann ich den Winkel sehr genau feststellen, wenn die LED nur genügend fokussiert ist und die fest positionierten Empfänger ausreichen empfindlich. Das hat nichts mit Laufzeit des Lichts zu tun, im Gegenteil, die wird komplett ignoriert.

      Was ich bei meinen beiden GPS Empfängern nicht verstehe ist, dass sie so unterschiedliche Werte anzeigen. Sie liegen direkt nebeneinander auf dem Schreibtisch und ich hätte gedacht, dass sie beide den gleichen Fehler abbekommen. Aber auch zwischen denen ist die Abweichung +-5m, zumindest habe ich das so berechnet. Die Ausgabe ist bei Höhe und Breite jeweils 5 Stellen hinter dem Komma der Minuten, also 1/100.000 Minute. In der Höhe also 40.000.000m Erdumfang durch 360°durch 60' durch 100.000 ergibt 1,85cm als Auflösung. Für die Breite ergibt sich bei uns etwa 1,16cm. Und die Drift ist zwischen kleinstem und größten Wert eines Empfängers ist 500, also fast 10m. Und fast genauso groß ist sie zwischen den beiden Empfängern zur gleichen Zeit maximal.

      Nun habe ich mir mal die Satelliten angesehen, die laut GSA Telegramm in die Berechnung eingehen. Die sind fast immer gleich, nur die Reihenfolge ist immer unterschiedlich. Ob das irgendeinen Einfluß auf die Berechnung hat, konnte ich bisher nicht herausfinden. Ich weiß auch nicht, ob ich die direkt ändern kann.
      Um sicherzugehen, dass nicht ein Satellit knapp über dem Horizont die Berechnung verfälscht, habe ich versucht, den Empfänger so zu konfigurieren, dass er eine min. Elevation von 30° hat, Standard ist 10°. Ich habe aber noch nicht überprüft, ob der das auch annimmt.

      Der UBLOX kann ja richtiges DGPS, aber ich kapiere noch nicht, wo ich das Korrektursignal herbekomme und wie ich es dem Empfänger zur Verfügung stelle.
    • Franz wrote:

      Von Laufzeit bei Licht habe ich auch nie gesprochen,
      Natürlich nicht. Aber es ging ja um die Positionsbestimmung, wenn man die per Licht machen wollte.
      Aber Position per Laufzeit von Licht zu machen ist bei 16MHz Controller-Takt aussichtslos.
      Nach meiner Rechnung macht das Licht bei einem Takt schon über 18m.

      Wenn ich die ganzen Post's so lese, kristallisiert sich Schall als Medium heraus.

      Michael hatte schon Ultraschall angedeutet mit Licht.
      Das etwas weiter gesponnen, könnte der Robi ein IR-Signal ähnlich einer Fernbedienung senden, das den Empfänger auf einen kommenden Zeitpunkt vorbereitet, an dem der Robi einen Ultraschall-Puls abgibt.

      Beispielsweise könnten per Modulation 38kHz mehrere kurze Impulse gesendet werden, der mit einem langen Puls endet.
      Der Empfänger bereitet sich vor und wenn der Lange Puls endet, beginnt die Zeitmessung. Genau jetzt sendet der Robi das Ultraschallsignal.

      Der Empfänger misst also dann die Zeit zwischen IR-Signal Pulsende bis Ultraschall eintrifft. Diese Zeit kann dann in die Entfernung umgerechnet werden.

      Am Robi werden mehrere IR-Dioden im Ring angeordnet, die in Reihe/parallel angeschlossen sind und so gleichzeitig in alle Richtungen senden.
      Ein drehender Sender ist damit auch nicht notwendig.

      Da die einzelnen Empfänger immer nur die Laufzeit, also die Entfernung zum Robi ermitteln, müssen die Daten noch gesammelt und miteinander verrechnet werden, um die Position zu bestimmen. Dazu könnte man die Empfänger auch mit IR-Sende-Dioden ausstatten, die dann ihren Wert zur nächsten Bake übertragen.

      Wegen der GPS-Empfänger hätte ich auch erwartet, dass die GPS-Empfänger, wenn sie nebeneinander liegen und zum Gleichen Zeitpunkt die selbe Abweichung anzeigen sollten. Wäre das so, würde die Idee von Pluto funktionieren.

      Wenn das aber nicht so ist und die Abweichungen völlig willkürlich sind, frage ich mich was dann die Ursachen dafür sind.
      Satelliten-Positions-Abweichungen und Athmosphärenstörungen wären dann nicht die Ursache.
    • Es gibt ja den

      Ultraschall Sensor HC-SR04



      Vielleicht gibt es so etwas auch für entwas größere Entfernungen und vielleicht könnte man den Sender und den Empfänger von so einem Ding trennen, um zum einen doppelte Rechweite zu haben und zum anderen einen auf dem Mäher und einen in einer Ecke außen zu haben.
      Wurde so ein Thema nicht unter dem Stichwort Baken schon einmal irgendwo diskutiert und hatten die Leute vom Miniaturwunderland Hamburg das nicht für ihre Modellboote irgendwie gelöst?
    • Ich würde der GPS Variant eine Chance geben... man muss eben die Daten mal genauer anschauen und eine Lösung finden, welche die Drifts normalisiert.
      Erst wenn da Records von Daten vorliegen, kann man da mehr sagen...
      Ich persönlich halte so etwas für machbar, zumal das Modul unter freiem Himmel wohl viele Satelliten empfängt, womit die Schwankungen im Rahmen bleiben sollten. Drohnen arbeiten damit ja auch recht zuverlässig.

      "...beim Militär nachfragen..." bezog sich wohl darauf, dass für militärische Anwendungen die Auflösung des GPS bei ~1m liegt.
      Code first, think later - Natural programmer :D