Sunray-Firmware - Ideensammlung / ideas for improvement

hatte heute mal wieder das Problem, dass wenn ich "Skip to Progress" in der App verwende, der Rover eiskalt die Perimeter ignoriert.
Ich gebe zu mein Mähfeld ist nicht das einfachste, aber der Rover wäre heute von unten links bis oben rechts einfach gerade durchgefahren. Habe ihn dann in der Nähe des nächsten Punktes aus wieder ausgesetzt, dann respektiert er auch wieder den Perimeter. Glaub da ist beim Anfahren der ersten Punkte noch der Wurm drin.

1651855885579.png
 
Das sieht ja nach einer Herausforderung aus. Was ist denn in den Zwischenräumen, dass es so zerklüftet aussieht? Zeig mal ein Satellitenbild von dem Grundstück!

Beste Grüße,
Chris
 
Hallo @Algo,
habe gerade erst jetzt gesehen, dass Alexander dieses in der Version V1.0.247 soeben behoben hat.

Gruß Sven
 
hatte heute mal wieder das Problem, dass wenn ich "Skip to Progress" in der App verwende, der Rover eiskalt die Perimeter ignoriert.
Ich gebe zu mein Mähfeld ist nicht das einfachste, aber der Rover wäre heute von unten links bis oben rechts einfach gerade durchgefahren. Habe ihn dann in der Nähe des nächsten Punktes aus wieder ausgesetzt, dann respektiert er auch wieder den Perimeter. Glaub da ist beim Anfahren der ersten Punkte noch der Wurm drin.

Anhang anzeigen 4344
Sieh Herausfordernd aus dein Garten. Da wäre wahrscheinlich ein anderer Mähroboter gescheitert.
 
ist auf alle Fälle herausfordernd, der Garten, aber genau das richtige für den Ardumover oder Alfred, auf solchem Grundstück will keiner Strippe verlegen.
Ein Quadrat kann jeder Baumarktmäher mähen.
 
Wäre mal Interessant wie breit die schmalen Stücke sind.
Eigentlich hätte ich noch ein viel größeres Stück zu mähen, das soll aber dann der zweite breitere Mäher übernehmen. Die Karte sieht eigentlich nur so wild aus, weil ich noch die Funktion mit Mähbereichen vermisse, jetzt muss ich mir mit 3 Verbindungswegen die einzelnen "Parcellen" anfahren und aushelfen.
Bei den Exclusionen muss ich auch nochmal ran. Hab immer wieder Probleme mit den Koordinaten, trotz überall fix passt die Position immer wieder mal nicht und muss nacharbeiten, auch an den Perimetern immer Probleme mit dem Wenden (Mauer, Weidezaun), weil der Rover länger als die Mähbreite ist und nur einmal der Perimeter abgefahren wird. Durch die vielen Wegpunkte ist das Nacharbeiten sagen wir mal sehr sehr zeitaufwendig.
Aber ja, ohne Sunray wäre so eine Mähkarte nicht möglich. :D
 
Hallo @Algo , da muss ich kurz mal nachfassen. Habe ein ähnlich schwieriges Grundstück mit einem Rasenstück, dass nur über einen 20m langen gepflasterten Weg (1m Breite) zugängig ist. Ich hatte verstanden, dass man in einer Karte nur eine einzige zusammenhängende Rasenfläche aufzeichnen kann. Wie hast Du das realisiert? Hast Du Passagen die ohne zu mähen als Zufahrt benutzt werden? Dachte das Thema Waypoints wäre meine Lösung..
 
Hallo @Algo , da muss ich kurz mal nachfassen. Habe ein ähnlich schwieriges Grundstück mit einem Rasenstück, dass nur über einen 20m langen gepflasterten Weg (1m Breite) zugängig ist. Ich hatte verstanden, dass man in einer Karte nur eine einzige zusammenhängende Rasenfläche aufzeichnen kann. Wie hast Du das realisiert? Hast Du Passagen die ohne zu mähen als Zufahrt benutzt werden? Dachte das Thema Waypoints wäre meine Lösung..
also die dünnen Verbindungen die Du bei mir siehst sind einfach ganz nah zusammengelegter Perimeter (hier wird natürlich auch gemäht, auch wenns nix zu mähen gibt), eine andere Lösung hab ich nicht gefunden bisher.
 
momentan gibt es auch keine andere Lösung, ich habe es auch mit eng beieinander liegenden Perimterstrecken gelöst und das da beim Abfahren der Mähmotor läuft ist mir eigentlich so ziemlich egal.
 
Mit den ersten Mähversuchen werden Fragen zur zukünftigen Einplanung der Mähaktivitäten konkreter.
Meine kartierte Fläche beträgt 2708 qm und der Rasen wächst auf dieser Fläche sehr unterschiedlich.
Der Mäher ist relativ schwer und wird sicher seine Spuren hinterlassen.

Mähaktivitäten starten und stoppen scheint nicht das Problem zu sein und mittels MQTT ist das umsetzbar.

Ideen/Fragen:
  • Mit verschiedenen Speicherplätzen ist das Anlegen verschiedener Karten bereits möglich. Lassen diese gespeicherten Karten mittels Webservices automatisiert auf den Mäher laden, so dass zum Beispiel unterschiedliche Mähmuster oder Winkel im Linienmuster, die Schäden im Rasen minimieren? Wenn man die Karten automatisiert rotieren könnte, wäre eine Schonung des Rasens möglich.
  • Könnten mehrere Karten auf der SD-Karte gespeichert werden?
  • Lässt sich der Zustand einer hochgeladenen Karte im Mäher mittels Checksummp verifizieren, so dass ein Start mit einer inkonsistenten Karte nicht erfolgen kann?
  • Die Rasenfläche vor meinem Haus wächst wesentlich besser als die hinterm Haus. Wie lassen sich gezielte Mähzonen realisieren? Mit Bordmitteln würden mir verschiedene Karten mit riesigen Exclusionen einfallen, um gezielt im übrigen Bereich zu mähen. Funktioniert das?
  • Könnte man (Start)-punkte in der Mähfläche definieren, die beim Start direkt angesteuert werden? Quasi Start per Kommando mit dem Startpunkt als Parameter. Wenn die Mähaktivitäten in der Region des Startpunktes beginnen würden, könnte man vielleicht erreichen, dass bestimmte Bereiche gezielt gemäht werden würden.
  • Im Grunde sind das Kompromissen zur Definition von Zonen mit bereits vorhandenen Funktionen.
Viele Grüße
Oliver
 
Hallo,
ich habe Code ergänzt um die Stanley Paramter an die Sollgeschwindigkeit vom Mäher anzupassen bzw. linear zu mappen.
Das wird besonders in Verbindung mit Adaptiver Mähgeschwindigkeit benötigt.
Bei mir läuft es. Einzufügen in der robot.cpp, andere Änderungen sind nicht notwendig.

direkt darunter einfügen (irgendwo bei Zeile 1220):

else {
if (gps.solution == SOL_FLOAT)
linear = min(setSpeed, FLOATSPEED); // reduce speed for float solution
else
linear = setSpeed; // desired speed
if (sonar.nearObstacle()) linear = SONARSPEED; // slow down near obstacles
}
//angula r = 3.0 * trackerDiffDelta + 3.0 * lateralError; // correct for path errors


////////////////////////////////////X
//Mapping of Stanley Control Parameters in relation to actual Setpoint value of speed
//Values need to be multiplied, because map() function does not work well with decimals
float CurrSpeed = motor.linearSpeedSet * 1000; //X
CurrSpeed = abs(CurrSpeed);
float k = map(CurrSpeed, 100, 600, STANLEY_CONTROL_K_SLOW*1000, STANLEY_CONTROL_K_NORMAL*1000); //X
float p = map(CurrSpeed, 100, 600, STANLEY_CONTROL_P_SLOW*1000, STANLEY_CONTROL_P_NORMAL*1000); //X
k = k / 1000; //X
p = p / 1000; //X
////////////////////////////////////X


Dann direkt darunter auskommentieren bzw. mit obigem ersetzen:

//X float k = STANLEY_CONTROL_K_NORMAL;
//X float p = STANLEY_CONTROL_P_NORMAL;
//X if (maps.trackSlow) {
//X k = STANLEY_CONTROL_K_SLOW;
//X p = STANLEY_CONTROL_P_SLOW;
//X }

Die Werte 100 und 600 sind in mm/s zu verstehen. Hier Könnte man noch MINSPEED und MAXSPEED in der config.h definieren. Habe ich auch gemacht.
Ausserdem kann man dann in der motor.setlinearangularspeed function noch eine min/max Abfrage des Speeds machen, falls das nicht schon anderweitig passiert.
Grüße,
Sebastian



Edit:
Werte vom Max Speed (von 400 auf 600) geändert.
 
Zuletzt bearbeitet:
Schön wäre noch
1. ein Wochentimer
2. automatisches Versetzen des Mähwinkels um x Grad

@Alexander: ist die Reihenfolge bei dir auch so vorgesehen?
zu 2:
Es sollte einstellbar sein, nach wie vielen Tagen der Winkel geändert werden soll (z.B. jeden Tag um 90° ändern), evtl. könnten vordefinierten Bahnen abwechselnd genommen werden.
 
Bei drehungen überprüfen ob sich dabei das Heck des Mowers über den Perimeter oder eine Exclusion hinausbewegt. In einem Solchen Fall wäre es besser er würde ein stück zurücksetzen und dann drehen oder ähnliches...
Wenn man z.B. zuerst 2 Runden am Rand gemäht werden, dann hat man genug Platz für die Umdrehung im bereits gemähten Bereich. Das schließt jedoch nicht aus, dass eine Mäher-Geometrie-abhängige Kollisionskontrolle mit den Ausschlussbereichen toll wäre.
 
Oben