Mähverhalten wie z.B Worx Landroid

Hallo,
ich habe mir in den letzen Tagen mal verschiedene Mähtechniken von Rasenroboteren angesehen und finde die von dem Worx ganz nett gelöst.
Ich vermute das der Landroid zwei Spulen verbaut hat. Eine links und eine rechts. Wenn der Landroid auf die Peimeterschleife trifft erkennt er somit immer in welche Richtung er einschlagen muss um wieder in den Mähbereich zurück zu kommen. Und dies schafft er auch ganz ohne zu stoppen, zurück zusetzen, drehen um wieder in den Mähbereich zu kommen. Dadurch kommt er im Vergleich auch gut durch Engstellen und das ohne komplizierte Navigation. Klar bleibt das Mähen im Chaosprinzip aber wie ich finde dadurch das er nicht immer stehen bleiben muss und zurück setzt ist auch der Rasen in Problembereichen nicht zu sehr strapaziert.
Könnte man so ein Mähprogramm ohne großen Aufwand auch in die aktuelle Azurit integrieren wenn man eine zweite Spule einbaut?
Bei meinem Mäher kommt es leider immer wieder vor, das er sich in die falsche Richtung dreht und nicht zurück in den Mähbereich findet.
Gruß Stephan
 
Hallo Stephan,

das hat mich auch gestört. An Engstellen (teilweise nur 50cm) fährt er sich regelmäßig fest. Zuerst geht es etwas vor, über den Perimeter, dann zurücksetzen und drehen. Grundsätzlich dreht er dabei viel zu weit und fährt damit auf der anderen Seite über den Draht. Wenn es ganz blöd läuft, setzt er so lange zurück, bis er rückwärts auf der anderen Seite über den Draht kommt.

Temporär habe ich die Reverse-Time und die Roll Time deutlich verringert. Meiner stoppt, sobald der Draht überfahren wurde und fährt somit nur 2-3cm über den Draht. Bei mir steht die Reverse-Time aktuell bei 0,5 Sek, max roll time steht auf 1,2 Sek. Damit findet er sich bisher deutlich besser zurecht.

Besser würde es mir auch gefallen, wenn er überhaupt nicht zurück setzen muss. Da bin ich noch am testen. Problematisch könnten die Bumper werden. Wenn die gedrückt wurden, muss er zurück setzen um vom Hindernis wegzukommen. Ich bin mir gerade nicht sicher, ob es für den Bumper eine eigene Reverse-Time gibt.

Wie er entscheidet, in welche Richtung er wegdreht, habe ich auch noch nicht heraus gefunden. Es ist bei mir fast immer in die gleiche Richtung. Werde mir den Code bei Zeiten mal ansehen.
 
Hallo Patrick,
ist es evt. hier im Code ?
Ich bin im Programmieren nicht so fit und daher frage ich lieber nochmal jemanden der es besser kann als ich.
Die Grundfahrroutine würde ich auch nicht verändern wollen, sondern nur das Verhalten wenn der Mower im Mähbetrieb auf die Schleife trifft.
z.B. Wenn er mit der linke Spule Perimeter-Out erkennt dann sollte für ein Moment (1-3sec) das rechte Rad angehalten werden.
Gruß
Stephan
 
Hi,

das dürfte die richtige Stelle sein.
Da muss ich mich erst mal reinfinden, was man sich hierbei gedacht hat.
Vielleicht findet sich aber noch jemand, der da direkt Licht ins Dunkle bringt
 
Hallo,

möglich ist grundsätzlich alles - allerdings versuchen wir ja hier nach- und nach so etwas wie eine Muster-/Referenz-Plattform zu schaffen bei der die Hardware und Software fehlerfrei läuft. Nur so hat ein Nachbauer eine Chance ein stabiles System zu erhalten. Jeder der davon abweichen will (Hardware wie Software), baut sich zwangsläufig neue Fehlerquellen ein.

Die Software ist ja wie ein großer Schaltplan - mal gerade auf die Schnelle etwas ändern wird nicht funktionieren ohne sich näher damit näher zu beschäftigen und jede kleine Änderung zieht in der Regel aufwändige Dauer-Tests nach sich (denn wir wollen ja keine neuen Fehler einbauen ;)).

Nun zum konkreten Fall: robot.cpp und STATE_FORWARD ist wohl die richtige Anlaufstelle für das angesprochene Feature.

Kurz zum Ablauf der Software: In der Hauptschleife (loop) werden periodisch:
1. Die Sensoren eingelesen (readSensors)
2. Der Zustandsautomat durchlaufen und abhängig vom aktuellen Zustand die Sensorwerte überprüft (CheckXXXXX) und abhängig von diesen Sensorwerten in neue Zustände gewechselt (setNextState) - beim Wechsel werden ggf. neue Soll-Werte für die Motoren gesetzt (Beispiel: Variable "motorLeftSpeedRpmSet").
3. Die Motoren mit den Soll-Werten angesteuert (motorControl)

Die möglichen Zustände und Ergebnisse für die Übergänge des Zustands-Automaten sind hier alle grafisch darsgstellt: http://wiki.ardumower.de/images/f/ff/Ardumower_states.png
Wenn der Mower also im Zustand FORWARD ist, fährt er nach vorn. Man schaut also in der loop() nach was alles in diesem Zustand FORWARD gemacht wird (case FORWARD). Dort hätte man die Möglichkeit weitere Aktionen einzufügen, also auch das Ändern der Motor Soll-Werte (motorLeftSpeedRpmSet) abhängig vom Schleifen-Sensorwert (Perimeter.isInside(0/1)).

PS: Falls sich konkrete Fragen zu einem Code-Abschnitt in der Software ergeben, bitte fragen ;-)

Gruss,
Alexander
 
Oben