Update 1.0.230 -> 1.0.298 Verhalten OBSTACLE_DETECTION_ROTATION

Ich bin da zufällig darüber gestolpert, eigentlich wollte ich die 1.0.276 Firmware von User Svolo auf die 1.0.302 bringen, aber ich glaube da habe ich zu wenig Ahnung davon. Mir fehlt einfach das dynamische mähen.
 
Ja, für die Ardumower ist das einfach essentiell.. finde ich.

Als Lichtblick, das habe ich schon in der 302 drin:

//Speeds/Time for different movement operations
#define MOWSPINUPTIME 18000 //ms Adds time to rotate mowingblades before starting moving
#define OVERLOADSPEED 0.15 //m/s
#define ROTATETOTARGETSPEED 65.0 //deg/s (Grad die Sekunde)
#define TRACKSLOWSPEED 0.15 //m/s (like docking!)
#define NEARWAYPOINTSPEED 0.15 //m/s
#define NEARWAYPOINTDISTANCE 0.30 //m
#define FLOATSPEED 0.15 //m/s
#define SONARSPEED 0.10 //m/s
#define DOCKANGULARSPEED 0.25 //rad/s
#define OBSTACLEAVOIDANCESPEED 0.20 //m/s
#define OBSTACLEAVOIDANCEWAY 0.40 //m way in meters the mover will drive backwards in case of obstacle detection
#define ESCAPE_LAWN true //mower drives reverse if true and RPM Drop of mowingmotor is detected by more than MOW_RPM_DROP(percentage)
#define MOW_RPM_DROP 50 //% if RPM of mowmotor stalls more than MOW_RPM_DROP mover will back up with ESCAPELAWNDISTANCE and ESCAPELAWNSPEED and try again
#define MOWRPMDROPDURATION 50 //ms duration mow motor rpm has to be too low until ESCAPE_LAWN is triggered
#define ESCAPELAWNSPEED 0.20 //m/s
#define ESCAPELAWNDISTANCE 0.40 //m
#define MOTOR_MAX_SPEED 0.60 //m/s limitation for setSpeed value from Sunray-App (0,01 to 0,59m/sec are possible) to avoid to high speed setting by mistake // SOEW_NEU
#define MOTOR_MIN_SPEED 0.05 //m/S minimal driving speed
#define MOWMOTORSTOPONOBSTACLE false //if false, mowmotor will not stop on obstacle triggers which lead to ReverseEscape oder ForwardEscape Operation
#define MAPSTANLEYPARAMETERS true //stanley values will be linear mapped from MOTOR_MIN_SPEED-->MOTOR_MAX_SPEED to actual speedset of mower


Als nächstes Baue ich den einfachen 2Punktregler wieder ein, diesmal aber über die Drehzahl des Mähmotors.
Hoffe hat jeder die Odometrie dran?
 
Ja, für die Ardumower ist das einfach essentiell.. finde ich.

Als Lichtblick, das habe ich schon in der 302 drin:

//Speeds/Time for different movement operations
#define MOWSPINUPTIME 18000 //ms Adds time to rotate mowingblades before starting moving
#define OVERLOADSPEED 0.15 //m/s
#define ROTATETOTARGETSPEED 65.0 //deg/s (Grad die Sekunde)
#define TRACKSLOWSPEED 0.15 //m/s (like docking!)
#define NEARWAYPOINTSPEED 0.15 //m/s
#define NEARWAYPOINTDISTANCE 0.30 //m
#define FLOATSPEED 0.15 //m/s
#define SONARSPEED 0.10 //m/s
#define DOCKANGULARSPEED 0.25 //rad/s
#define OBSTACLEAVOIDANCESPEED 0.20 //m/s
#define OBSTACLEAVOIDANCEWAY 0.40 //m way in meters the mover will drive backwards in case of obstacle detection
#define ESCAPE_LAWN true //mower drives reverse if true and RPM Drop of mowingmotor is detected by more than MOW_RPM_DROP(percentage)
#define MOW_RPM_DROP 50 //% if RPM of mowmotor stalls more than MOW_RPM_DROP mover will back up with ESCAPELAWNDISTANCE and ESCAPELAWNSPEED and try again
#define MOWRPMDROPDURATION 50 //ms duration mow motor rpm has to be too low until ESCAPE_LAWN is triggered
#define ESCAPELAWNSPEED 0.20 //m/s
#define ESCAPELAWNDISTANCE 0.40 //m
#define MOTOR_MAX_SPEED 0.60 //m/s limitation for setSpeed value from Sunray-App (0,01 to 0,59m/sec are possible) to avoid to high speed setting by mistake // SOEW_NEU
#define MOTOR_MIN_SPEED 0.05 //m/S minimal driving speed
#define MOWMOTORSTOPONOBSTACLE false //if false, mowmotor will not stop on obstacle triggers which lead to ReverseEscape oder ForwardEscape Operation
#define MAPSTANLEYPARAMETERS true //stanley values will be linear mapped from MOTOR_MIN_SPEED-->MOTOR_MAX_SPEED to actual speedset of mower


Als nächstes Baue ich den einfachen 2Punktregler wieder ein, diesmal aber über die Drehzahl des Mähmotors.
Hoffe hat jeder die Odometrie dran?
I don't understand : A version exist with all this setting ?? if Yes Where is it locate ?
For mow motor odometrie is not always possible (DC motor) , Maybe it's better to manage the behaviour according to sense mow motor and also change motor speed according sense like into Azuritber (help to limit noise and increase mowing duration)
 
@Mr. Tree : Das sieht ja vielversprechend aus. Wird das dann in die offizielle "Sunray" übernommen? Oder baust du parallel eine eigene Version?

Und kannst du schon ungefähr sagen wann die Version final zur Verfügung stehen wird?
 
Naja, es hatte vorletzes Jahr angefangen und es gab letztes Jahr ein kleines Moddingteam bezüglich mower dynamik, inklusive mir.
Ich bin gerade dabei das Meiste bzw. das Beste und mehr mit so wenig wie möglich code einzubauen und dabei die originale Codestruktur nicht zu verletzen.
Ich bin schon relativ weit, und nach heutigem Test lief mein Mower schon besser als letztes Jahr mit der .230. svol0 hatte alles noch überarbeitet und ordentlich Arbeit investiert.

Auf die offizielle Sunray habe ich keinen Einfluss, würde aber positives Feedback nach testen von anderen und eine generelle Einpflegung von "tuningparametern"
total begrüßen. Im Fall Ardumower bin ich mir sicher, dass viele User den Nutzen erkennen würden und der Mower ihren individuellen Vorstellungen vom "Smartmowing" gerecht wird. Ich bin gerade noch an einer Version von Adaptive_Speed, das hatte heute schon sehr gut funktioniert. Die Woche werde ich mir
noch Zeit nehmen, dann kommt von mir eine Version die sich über die config.h bequem pimpen lässt.
 
I don't understand : A version exist with all this setting ?? if Yes Where is it locate ?
For mow motor odometrie is not always possible (DC motor) , Maybe it's better to manage the behaviour according to sense mow motor and also change motor speed according sense like into Azuritber (help to limit noise and increase mowing duration)
The Version of .302 with implementations will be there until a week, i will post a gitlink or make a download available.
 
Achso, das klingt interessant. Dann werde ich das mal beobachten und deine Version wenn sie online kommt auf jeden fall sofort testen.
Baust du denn das "mow motor stoppen" bei Hinderniserkennung auch direkt zum einfachen deaktivieren mit ein?
 
Die Deaktivierung zum Stoppen des Motors bei erkannten Obstacles habe ich mal in Commit 620f4d2 als config.h define eingeführt und per Pull-Request zur Übernahme ins Projekt beantragt:
https://github.com/Ardumower/Sunray/pull/126
Ich habe es inzwischen kurz testen können. Bei einem einfachen Auslösen des Bumpers schaltet sich der Motor nicht mehr aus.

Die eigentliche Umfahrung ist noch immer ein Halbkreis mit eingestelltem Durchmesser. Was bei meinem ersten Test wohl zu geschlagen hat, ist folgende Änderung: Aufgrund einer ungünstigen GPS-Positionstoleranz hat mein Zaunpfeiler den Bumper ausgelöst. Das passiert gelegentlich mal, weil ich ihn recht nah am Zaun vorbeiführe. In 230 hat er dann beim Drehen in die Umfahrungsrichtung einfach den Hintern am Zaun rumgedrückt und kam in die Position zur Umfahrung. In 298 erkennt er dabei aber dass er sich nicht so drehen kann, wie er will und startet eine neue Umfahrungsroutine. Damit ist er dann wohl etwas näher am Pfeiler vorbei gekommen (ungefähr seine Sollroute).
@spranz Wenn Du nach wie vor das Problem hast, dass der Mäher sich nicht mehr befreien kann, solltest vielleicht noch mal an diesen Routinen zur Hinderniserkennung suchen. Vielleicht die eine oder andere Art der Hinderniserkennung abschalten oder abschwächen.

Jetzt habe ich aber mit der 298 auch noch 2 weitere Auffälligkeiten:
1. Wenn ich initial mit dem Handy mit dem Mäher kurz nach seinem Start verbunden bin, ist alles in Ordnung. Die App zeigt mir alles an. Wähle ich jetzt aber CONNECT, um die Verbindung von WLAN auf BlueTooth umzustellen, wird mir in der untersten Zeile nicht mehr p=xx e=x w=xxx d=x angezeigt, sondern nur #Points
Wechsel ich zurück auf WLAN wird jetzt auch nur noch #Points angezeigt.
Ich gehe aber davon aus, dass das nicht am Mower sondern an der App 1.0.165 liegt. Das passiert nämlich auch, wenn ich die App starte, ohne dass Muh eingeschalten ist.

2. Was ich mir gerade gar nicht erklären kann: Ich hatte jetzt einen Lauf, da ist der Mäher beim Abfahren des Perimeters an der Ecke eine Spur zu früh abgebogen. So ist er einige Meter gefahren, dann ist er ein Stück zurück gefahren, hat auf die richtige Spur gewechselt und ist dort korrekt weitergefahren. An der nächsten Ecke das gleiche Spiel. An falschen/ungenauen GPS-Positionen kann es nicht gelegen haben. Er hat mir diese falsche Position auch in der Map angezeigt, wo er gerade fährt. Wisst Ihr was für eine Funktion hier zugeschlagen haben könnte?
Es sah schon so aus, als wenn wir eine Rasenkantenerkennung hätten, der Mäher dann gemerkt hätte, dass er diese nicht erwischt hätte und deswegen die Kante korrigiert hätte.:ROFLMAO:
 
Bleibt bei euch dann der Ardumower stehen wenn er ein oder mehrmals das gleiche Hindernis erkennt? Bei mir bleibt er öfters liegen. Irgendwas wurde geändert das zur Zeit keinen Spaß macht.
 
Die Deaktivierung zum Stoppen des Motors bei erkannten Obstacles habe ich mal in Commit 620f4d2 als config.h define eingeführt und per Pull-Request zur Übernahme ins Projekt beantragt:
https://github.com/Ardumower/Sunray/pull/126
Ich habe es inzwischen kurz testen können. Bei einem einfachen Auslösen des Bumpers schaltet sich der Motor nicht mehr aus.

Die eigentliche Umfahrung ist noch immer ein Halbkreis mit eingestelltem Durchmesser. Was bei meinem ersten Test wohl zu geschlagen hat, ist folgende Änderung: Aufgrund einer ungünstigen GPS-Positionstoleranz hat mein Zaunpfeiler den Bumper ausgelöst. Das passiert gelegentlich mal, weil ich ihn recht nah am Zaun vorbeiführe. In 230 hat er dann beim Drehen in die Umfahrungsrichtung einfach den Hintern am Zaun rumgedrückt und kam in die Position zur Umfahrung. In 298 erkennt er dabei aber dass er sich nicht so drehen kann, wie er will und startet eine neue Umfahrungsroutine. Damit ist er dann wohl etwas näher am Pfeiler vorbei gekommen (ungefähr seine Sollroute).
@spranz Wenn Du nach wie vor das Problem hast, dass der Mäher sich nicht mehr befreien kann, solltest vielleicht noch mal an diesen Routinen zur Hinderniserkennung suchen. Vielleicht die eine oder andere Art der Hinderniserkennung abschalten oder abschwächen.

Jetzt habe ich aber mit der 298 auch noch 2 weitere Auffälligkeiten:
1. Wenn ich initial mit dem Handy mit dem Mäher kurz nach seinem Start verbunden bin, ist alles in Ordnung. Die App zeigt mir alles an. Wähle ich jetzt aber CONNECT, um die Verbindung von WLAN auf BlueTooth umzustellen, wird mir in der untersten Zeile nicht mehr p=xx e=x w=xxx d=x angezeigt, sondern nur #Points
Wechsel ich zurück auf WLAN wird jetzt auch nur noch #Points angezeigt.
Ich gehe aber davon aus, dass das nicht am Mower sondern an der App 1.0.165 liegt. Das passiert nämlich auch, wenn ich die App starte, ohne dass Muh eingeschalten ist.

2. Was ich mir gerade gar nicht erklären kann: Ich hatte jetzt einen Lauf, da ist der Mäher beim Abfahren des Perimeters an der Ecke eine Spur zu früh abgebogen. So ist er einige Meter gefahren, dann ist er ein Stück zurück gefahren, hat auf die richtige Spur gewechselt und ist dort korrekt weitergefahren. An der nächsten Ecke das gleiche Spiel. An falschen/ungenauen GPS-Positionen kann es nicht gelegen haben. Er hat mir diese falsche Position auch in der Map angezeigt, wo er gerade fährt. Wisst Ihr was für eine Funktion hier zugeschlagen haben könnte?
Es sah schon so aus, als wenn wir eine Rasenkantenerkennung hätten, der Mäher dann gemerkt hätte, dass er diese nicht erwischt hätte und deswegen die Kante korrigiert hätte.:ROFLMAO:
Das mit dem drehen liegt imho noch an den turnpreferences.. da gibt es in 302 schon einen fix von disaster. aber beim testen habe ich immer noch das phänomen, dass er bei einer leicht spitzen ecke (leicht unter 90°) immer eine über 360° piruette im eckpunkt macht...
 
Der Mähmotor sollte auf jeden Fall noch stoppen, wenn man den Mäher anhebt.
 
Das mit dem drehen liegt imho noch an den turnpreferences.. da gibt es in 302 schon einen fix von disaster. aber beim testen habe ich immer noch das phänomen, dass er bei einer leicht spitzen ecke (leicht unter 90°) immer eine über 360° piruette im eckpunkt macht...
Ich fahre bei mir noch mit der Vorabversion, die ich selbst in den aktuellen Softwarestand reinkopiert habe. Grundsätzlich macht die turnpreference was sie soll. Für Leute, die auf Geschwindigkeit optimieren, wird sie aber eher nichts sein.
 
Das mit dem drehen liegt imho noch an den turnpreferences.. da gibt es in 302 schon einen fix von disaster. aber beim testen habe ich immer noch das phänomen, dass er bei einer leicht spitzen ecke (leicht unter 90°) immer eine über 360° piruette im eckpunkt macht...
Ja, dass mit den spitzen Ecken kann ich auch nachvollziehen. Bei mir kommt diese Situation immer dann zustande, wenn er von seinem Startpunkt den ersten Mähpunkt des Perimeters anfährt. Statt wie in 230 hier in einem kleinen Dreieck den Punkt anzufahren und reinzudrehen, dreht er jetzt immer in falscher Richtung fast einen Vollkreis und haut dabei sein Hinterrad einmal quer durch das Blumenbeet.
Ich war schon am Überlegen, meine Startprozedur zu verändern. Aber Du hast recht: Eigentlich ist das ein Fehler im Code, den es zu optimieren gilt.
 
Danke, das funktioniert bei mir auch an dem leicht spitzen Winkel.
@Mr. Tree fährst Du mit Standard MOWER_SIZE 60 ? Probier mal keiner einzustellen. Wenn ich die Funktion richtig verstehe, ist der Wert für einen ArduMower StandardChassis viel zu groß eingestellt. Ich bin jetzt mit 36cm gefahren, meine aber dass man sogar auf 25cm runtergehen könnte. Ich mag aber auch einen Denkfehler darin haben oder etwas übersehen haben.
 
Danke, das funktioniert bei mir auch an dem leicht spitzen Winkel.
@Mr. Tree fährst Du mit Standard MOWER_SIZE 60 ? Probier mal keiner einzustellen. Wenn ich die Funktion richtig verstehe, ist der Wert für einen ArduMower StandardChassis viel zu groß eingestellt. Ich bin jetzt mit 36cm gefahren, meine aber dass man sogar auf 25cm runtergehen könnte. Ich mag aber auch einen Denkfehler darin haben oder etwas übersehen haben.
Ich denke, mit sehr kleinen werten wird die funktion obsolet, weil er keine schnittpunkte findet und macht dann was er vorher schon getan hat ^^
Aber MowerSize ist hier wohl eher Mowerlenght???!
 
Zuletzt bearbeitet:
Ich fahre bei mir noch mit der Vorabversion, die ich selbst in den aktuellen Softwarestand reinkopiert habe. Grundsätzlich macht die turnpreference was sie soll. Für Leute, die auf Geschwindigkeit optimieren, wird sie aber eher nichts sein.
Mit Geschwindigkeit hat das gar nichts zu tun, denn wenn der Mower an einem Punkt dreht.. hat er keine (außer eine Drehgeschwindigkeit rad/s oder deg/s, und diese hat nichts mit der vorab gewählten Richtung zu tun). Außer!!: Er überschießt beim Anfahren des Punktes.

Idee für neue Funktion: bei überschießen nicht drehen und zur pos fahren, sondern zurücksetzen ;) @AlexanderG
 
Zuletzt bearbeitet:
Mit Geschwindigkeit meine ich alle Bereiche: Optimierung von Fahr- und Drehgeschwidigkeit und Eleminieren unnötiger Wege und Drehungen. Deshalb meine Aussage: Wer auf Geschwindigkeit optimiert, wird diese Funktion eher nicht mögen.
 
Oben