Fragen zum Verhalten bzw. "Logik"

Hallo zusammen,

nach langen hin und her läuft der Robi endlich. Leider habe ich festgestellt, dass er sich auf meinem … sagen wir mal kleinen Spielfeld nicht ganz korrekt verhält.
Er dreht nach sich so weit ich das feststellen kann beim erreiche der Schleife ca. 6 mal in gleiche Richtung. Das heißt zB. er bewegt sich von der Schleife immer nach hinten und nach links.
Dadurch aber steckt er immer an den Ecken fest. Dort mäht er zwar aber ich will nicht, dass er 1Std "nur" in der Ecke sich dreht und die übliche Fläche unberührt bleibt.
Wie auch immer.
Es muss im Quellcode die Anzahl der Drehungen ( nach rechts bzw. nach links ) irgendwo festgelegt sein.
Genauso die Dauer der Drehung.

Wo finde ich die Stelle bzw. wo kann ich es verändern?

Ich bin sicher, dass mir jemand der die Programmierung beherrscht auch weiterhelfen kann.

Danke.

SG
Chris
 
Hi Chris,
sorry, das sich noch keiner zu Deinem Problem gemeldet hat. Es gibt eigentlich schon ein paar Parameter, an denen man schrauben kann. Bin selber erst nur (eigentlich wegen genau diesem - wie funktioniert das Ganze) mit dem Ardumower Mini beschäftigt, aber ich weiß, das es über die ArduRemote App möglich ist, einzustellen, wie weit (Min./Max) der Ardumower rückwärts fährt. Aus Min/Max wird eine Zufallszahl ermittelt, solange fährt der Ardumower rückwärts/seitwärts. Wenn Du die Einstellung nicht findest, schau ich noch mal genauer.

Gruß
Wolfgang
 
Hi Wolfgang,

es muss was im Code selber stehen. Die Anzahl der Umdrehungen wird ja im Programm irgendwo abgelegt. Die sollte veränderbar sein.
In der App kannst du "nur" die Zeit wie lange er rückwärts fährt. Wie schnell er reagiert.

Wenn ich mir so meinem Husqvarna so anschaue ist er um vielfaches "intelligenter" als mein self made Mower .
Dies würde ich gerne ändern ;-)

Gruß
Chris
 
Hallo Chris,

ich verstehe nicht ganz, warum Du von "Anzahl der Umdrehungen" sprichst. Vielleicht habe ich da Deine Frage falsch verstanden. Der Ardumower soll, wenn er auf die Schleife trifft stoppen, kurz rückwärts fahren, drehen und weiterfahren. Wie lange er rückwärts fährt und wie lange er sich dann dreht, sind Zeiten. Oder meinst Du beim Abfahren des Perimeter-Kabels? Kannst Du mal ein Video über dieses Verhalten einstellen und Deine Motor-Einstellungen posten?

Gruß
Wolfgang
 
Hallo Wolfgang,

ja Video würde vieles erklären allerdings sind die Datenmengen so groß, dass ich es nicht übertragen kann.

Du hast Recht mit dem was du Schreibst. Der Ardumower trift auf die Schleife fährt kurz rückwärts doch dann dreht er nach zB. Links.
Und genau die Richtung in welche er dreht ( hier Links ) wiederholt er ca 5 mal. Dh trift auf Schleife --> Rückwärts Links
trift auf Schleife rückwärts Links ;...;...;... und jetzt beim 5 mal Trift er auf die Schleife und dreht nach RECHTS ????!!!!!???? wieder 5 mal
Sprich trift auf schleife rückwärts Rechts ....
Dadurch aber fährt er , komischer weise quasi das ganze wo er sich vorher hinein manövriert hat ,rückwärts ab.
Hat er die 5 Drehungen nach rechts erreicht wird er, 3- mal darfst du raten, 5 mal nach links drehen und das Speil geht von vorne los .

Damit steckt er in der Ecken fest.

Ich würde gerne im Quellcode die Anzahl der Drehungen ( jeweils nach links oder nach Rechts ) auf 10 setzen.
Oder diese randomisieren so, dass er zufällig eine Richtung wählen kann.

Ich bin mir nicht sicher ob dieses " Verhalten" normal ist. Doch meiner fährt genau so herum.

Gruß
Chris
 
Hallo Chris,
aus dem hohlen Bauch heraus - bisher war alles im robot.cpp, Ist gerade spät :sleep:. Werde morgen mal weiter suchen
Gute Nacht
Wolfgang
 
Hallo Chris,

die Drehung wird zufällig über die Zeit gesteuert.
entweder hier:
Settings-> Motor -> Rolltime min, Rolltime max.
oder hier:
Settings-> Perimeter ->Perimeter out roll time min, Perimeter out roll time max.
kann das angepasst werden.

Nach einer Minute wird die Drehrichtung geändert.

Gruess

Chris
 
Nun ja, nicht ganz ... ich würde gerne wissen wo sich im Quellcode die Sequenz bzw. der Abschnitt befindet.
Irgendwo im robot.cpp ist sehr Waage ;-)

Gruß
Chris
 
Hallo Chris,

ich kenne das Problem.
Mein 4motion fährt sich auch fest, da er nicht auf der Stelle drehen kann.

Die Steuerung läuft über Zeitvorgabe und damit ist das ganze auch abhängig von der Mähgeschwindigkeit.

Du findest das hier, Auszug aus meinem Code:

robot.ccp

// check perimeter as a boundary
void Robot::checkPerimeterBoundary(){
/* Original
if (millis() >= nextTimeRotationChange){
if (rotateLeft) {
nextTimeRotationChange = millis() + 60000;
}
else {
nextTimeRotationChange = millis() + 60000;
};
rotateLeft = !rotateLeft;
//rotateLeft = 0; //stolli
}
*/ Original

//Fürst Ruprecht: soll Zeitunabhängig/Geschwindigkeitsunabhängig zuerst wegen Festfahren in eine Richtung drehen

if(rotateLeft && (nextTimeRotationChange == 8)) {
rotateLeft = 0;
nextTimeRotationChange == 0;
}
if(!rotateLeft && (nextTimeRotationChange == 4)) {
rotateLeft = 1; //stolli
nextTimeRotationChange == 0;
}

Ich habe die Zeitschleife durch eine Vorgabe wie oft Links- und wie oft rechtrrum ersetzt.
Aber Achtung: Wegen Regenwetter aktuell noch nicht getestet.
Vielleicht veränderst Du zuerst die Werte (60000 = 1Minute) für rechts und lnks in unterschiedliche Werte, sonst fährt er im Minutentakt hin und her.

Gruß Fürst Ruprecht
 
Hallo Fürst,

also 90 Sek. (bzw. 90000 millis) schaut nicht schlecht aus .
Doch nervig ist immer noch die Tatsache, dass wenn er auf ein Gegenstand auftrifft, welches in der nähe der Schleife und beispielsweise Links steht, er dann immer noch die 90 Sek. nach links dreht, obwohl hier alles mit einer Rechtsdrehung "gelöst" worden wäre.

Ein wenig mehr "logik" im verhalten wäre echt super. Quasi wenn Blumentopf Link und schleife vorn drehe Rechts ... ;-)
Werde versuchen eine Video zu drehen um das jetzige Verhalten zu Visualisieren.
Doch vlt. hat schon jemand hier eine Lösung erarbeitet?

Ich will nicht meckern aber ... Husqvarna macht das genial. Der erkennt sogar unter welchem Winkel er die Schleife anfährt .

Gruß
Christoph
 
Hallo Christoph,
ich denke mal drüber nach. Ich habe die Zeitschleife ersetzt. Bei mir kurft er zuerst 8 mal zur einen Seite, wenn er aus der Schleife nicht rauskommt 4 mal zur anderen Seite.
Ich habe aufgrund der Lenkung einen zweiten Schleifenempfänger eingebaut. Damit kann man den Winkel beim Auftreffen auf die Schleife bestimmen. Eigentlich soll er mit helfen, besser am Draht entlang zu fahren. Ich habe aber das Phänomen, daß er manchmal mehrmals rückwärts fährt (weil er ja immer rückwärts dreht) und dann den Mähbereich verläßt und die Büsche nieder macht. Wenn er mit zwei Sensoren arbeiten soll, muß man „mehr“ Überfahren des Drahts zulassen -> noch mehr kurze Büsche!
 
Hallo Fürst ,

nun ich denke hier könnte man evtl. den Lagesensor verwenden. Ich habe so etwas bevor Ardumower mal getestet. Allerdings damals mit einem Kompass habe mir quasi immer den Wert relativ ausgeben lassen. Da es aber sehr empfindlich auf fast alles reagiert hat ( Metall , Kabel usw.. ) hat dies nur im Stand oder auf einem Tisch funktioniert. daher habe ich dies verworfen. Der Lagesensor sollte aber dafür geeigneter sein. Ebenso habe ich GPS onboard. Damit müsste zumindest die Richtung aus der der Robi kommt bestimmbar sein.
Da ich aber kein Programmierer bin ist die Umsetzung eher schwierig für mich. Die Code Schnippsel gibt es im Netz dies jedoch in die Azurit Software einzubinden ... dies ist für mich die Herausforderung die ich nicht selber hinbekomme.

Die Schleifenerkennung funktionier bei mir wirklich gut wenn er nur ein bissl "intelligenter " wäre .... ;-)
Gruß
Christoph
 
Oben