EinEinfach / CaSSAndRA

Cascaded sunray server and rover application
MIT License
28 stars 17 forks source link

Pathfinder: Fehler?! #135

Open themanfrommoon opened 3 months ago

themanfrommoon commented 3 months ago

Moin,

mit diesen Settings: grafik

Dürfte der Pathfinder eigentlich nicht auf den Rand einer Exklusion springen?! grafik

Map anbei: Trampolin3.json

Beste Grüße, Chris

EinEinfach commented 3 months ago

Nein das ist kein Fehler. Der Pathplanner darf zwar keine Mähwege an der Exclusion plannen, aber er darf den Roboter am Rand entlang von A nach B schicken, wenn kein direkter Übergang möglich ist.

themanfrommoon commented 3 months ago

Sicher? Ich denke, dass es deutlich besser wäre dem Taskplaner nur den blauen Weg zu erlauben: image

Ich vermute, dass es nun passieren kann, dass gewisse Bereiche der Karte nicht mehr erreicht werden können, aber da könnte man Abhilfe schaffen, in dem man Ausnahmen erlaubt (nur dann erlaubt, wenn es nicht anders geht) oder einen Fehler ausgibt (Mapping failed) und anzeigt bis wo gemappt wurde. Dann sieht man die nicht erreichten Flächen, und dann könne man ähnlich wie mit dem Suchdraht einen erlaubten Pfad einzeichnen.

marvin78 commented 3 months ago

Das ist das alte leidige Thema. Wir hatten das auch schon mit dem Perimeter. Dieser darf, aus meiner Sicht, niemals falschherum oder auch aus einem anderen Winkel, als durch die Linienführung vorgesehen, angefahren werden und auch nicht außerhalb der des eigentlichen Mähpfads. Der Perimeter und auch die Grenzen der Exklusionen dürften, aus meiner Sicht nur dann überhaupt angefahren werden, wenn sie "dran" sind (dann richtig herum) oder wenn es überhaupt keine andere Möglichkeit gibt. Andernfalls muss der Suchdraht genommen werden. Das betrifft aber im Übrigen auch den Pathfinder auf dem Roboter.

themanfrommoon commented 3 months ago

Genau! Das würde die Stabilität deutlich erhöhen bzw. die Fehlerrate deutlich verringern. Die Strategie könnte sein: Vor dem Start des Pathfinders einen Offset zum Perimeter generieren. Der Perimeter darf nur einmalig in der richtigen Richtung angefahren werden. Danach ist nur noch der Offset zum Perimeter erlaubt, aber nicht mehr der Perimeter. Wo das nicht geht, könnte manuell nachgebessert werden (Funktion wie mit dem Suchdraht).

duemchen commented 3 months ago

In den Mow Settings die "Border Laps" zeichnen schon die gewünschte "Innenlinie". Nach dem Mähen der Aussenlinie könnte man Auf Basis dieser Innenline als neue Extension die Route für das Mähen berechnen. Der erwünschte Abstand wäre dann gesichert gegeben. Es müßte nichts an den internen Algorithmen des Routenplaners geändert werden.

EinEinfach commented 3 months ago

Es müßte nichts an den internen Algorithmen des Routenplaners geändert werden.

Leider schon, sobald die Fläche um einen Offset verkleinern wird, kann es passieren, dass aus einer Fläche (die mit engen Passage verbunden ist) es zwei Flächen werden, ein sogenannter MultiPolygon. Damit kann Cassandra nicht umgehen. Das ist relativ tief im Code verwurzelt und nicht ohne weiteres zu beheben.

EinEinfach commented 3 months ago

Sicher?

Ja, sehr.

Ich vermute, dass es nun passieren kann, dass gewisse Bereiche der Karte nicht mehr erreicht werden können, aber da könnte man Abhilfe schaffen, in dem man Ausnahmen erlaubt (nur dann erlaubt, wenn es nicht anders geht) oder einen Fehler ausgibt (Mapping failed) und anzeigt bis wo gemappt wurde. Dann sieht man die nicht erreichten Flächen, und dann könne man ähnlich wie mit dem Suchdraht einen erlaubten Pfad einzeichnen.

Ausnahmen wäre denkbar. Fehler auf keinen Fall, ich sehe schon jetzt den Forum explodieren, mit Fragen warum es failed oder nicht. Möchte ich nicht haben

Ich denke, dass es deutlich besser wäre dem Taskplaner nur den blauen Weg zu erlauben

Zum Zeitpunkt wo der Pathfinder den Weg sucht ist ihm der blaue Pfad unbekannt. Das eine ist der coverage path planner, dieser hat die Aufgabe die Mählinie nach Mählinie abzufahren, zum anderen ist der Pathfinder dieser kommt zum Tragen wenn der Coverage Pathplanner in die Sackgasse gefahren ist. Der Pathfinder kennt nur die Wege am Perimeter entlang an der Exclusion entlang zwischen dem Perimeter und der Exclusion und Search Wire. Würde man dem Path finder jeden möglichen Punkt auf der Karte als eine mögliche Route anbinden, wird die Berechnung Tage dauern... bzw. die genutzte Bibliothek würde mit einem Fehler aussteigen

themanfrommoon commented 3 months ago

Der Perimeter und die Exklusionen sind klar. Die dürfen meiner Meinung nach beide aber nur genau 1x abgefahren werden und auch nur in die gelernte Richtung (siehe auch Anmerkung von marvin78 weiter oben).

Zum Perimeter wird ein Offset nach innen und ein Offset nach außen für die Exklusionen nach folgender Strategie berechnet:

Variante 1: Zuerst muss im Perimeter/Exklusionen die engste Stelle gefunden werden. Dann hat man den möglichen Offset, der gerade noch so fehlerfrei funktioniert (das ist schonmal besser als grundsätzlich immer über den Perimeter/Exklusionen zu fahren)

Variante 2: Zuerst müssen im Perimeter/Exklusionen alle Stellen gefunden werden, die enger sind als der Offset. An diesen Stellen darf der Offset so klein sein, dass gerade noch ein Offset möglich ist. Überall anders nimmt man den vollen Offset. (das ist das die beste Variante, die keinen Fehler mehr erzeugt)

Dieser Offset ist dann die Grenze, in der sich der Pathfinder bewegen darf. Der Coverage path planner darf den Perimeter und die Exklusionen nur einmalig in gelernter Richtung (oder in einer zu definierenden Richtung) abfahren. Wenn der Coverage path planner nochmal irgendwo den Perimeter/Exklusion abfahren möchte, dann ist nur noch der Offset erlaubt.

Diese Strategie hat enorme Vorteile, denn egal was passiert, mögliche Probleme an den Grenzen werden stark reduziert.