Sheep Sheep

Dann habe ich das richtig verstanden.
Mein Ziel ist es das er die Spiral verlässt und geradeaus weiterfährt und die Zeit der Spiral zu definieren.
Dazu habe ich in der mower.cpp eine
SpiralTime = 50000; definiert

und die
case STATE_FORWARD:
// driving forward
if (mowPatternCurr == MOW_BIDIR){
double ratio = motorBiDirSpeedRatio1;
if (stateTime > 4000) ratio = motorBiDirSpeedRatio2;
if (rollDir == RIGHT) motorRightSpeedRpmSet = ((double)motorLeftSpeedRpmSet) * ratio;
else motorLeftSpeedRpmSet = ((double)motorRightSpeedRpmSet) * ratio;
}
if ((lastSetSpiralStartTime = stateStartTime + motorSpiralStartTimeMin)) {
if (millis() < lastSetSpiralStartTime + 4000) rotatePoint = motorSpeedMaxRpm;
else rotatePoint = 0;
if (rollDir == RIGHT){
motorRightSpeedRpmSet = (motorSpeedMaxRpm*(1.0/(1.0+(float)motorSpiralFactor/(float)(millis()-lastSetSpiralStartTime)))-rotatePoint);
}
else{motorLeftSpeedRpmSet = (motorSpeedMaxRpm*(1.0/(1.0+(float)motorSpiralFactor/(float)(millis()-lastSetSpiralStartTime)))-rotatePoint); }
}
checkErrorCounter();
checkTimer();
checkRain();
checkCurrent();
checkBumpers();
checkDrop(); // Dropsensor - Absturzsensor
checkSonar();
checkPerimeterBoundary();
checkLawn();
checkTimeout();
break;

geändert. rotatePoint bewirkt das anfängliche drehen auf der stelle, um die "Inseln" zu vermeiden

Werde ich am Wochenende mal testen ob das so geht
Gruß Stefan
 
Was mir aufgefallen ist, das die odometryTicksPerCm falsche berechnet werden. ES muss " * " PI lauten und nicht " / "

odometryTicksPerCm = ((float)odometryTicksPerRevolution) / ((((float)wheelDiameter)/10.0) *3.1415); // computes encoder ticks per cm (do not change)
 
Hallo, wollte mich ja melden wenn ich meine Stromabnehmer soweit fertig habe...alles noch prototypmässig aber es funktioniert einwandfrei, eine Torsionsfeder sorgt für einen guten Anpressdruck.
Meine ursprünglich gedruckten Vorderräder haben wegen zu sparsamen Druck (zu wenig Infill) vorzeitig den Geist aufgegeben... aus dem frühren Modellflugleben fanden sich provisorische Räder...eigentlich ideal da recht weich aufgefordert, der Moser fährt viel ruhiger damit
Gruss Michael
Attachment: https://forum.ardumower.de/data/media/kunena/attachments/3659/20180729_195227.jpg/
 
Zuletzt bearbeitet von einem Moderator:
Hallo Michael,

hast Du die Probleme beim Rausfahren gelöst? In einem anderen Beitrag habe ich gelesen, dass beim Rückwärtsfahren die Räder nicht synchronisiert werden.
Bei mir habe ich die Perimeterschlaufe etwas krumm in der Ladestation liegen, sodass der sie beim Einparkieren einen kleinen Bogen fährt und dann etwas schräg dasteht. So gehts (z.T. knapp) an der Mauer vorbei beim Ausparkieren.

Gruess
Chris
 
Nein, nicht gelöst...ich experimentiere auch noch mit der Schleife. Möchte eine Lösung haben bevor ich den Draht unter das Pflaster lege...
Bin für jeden Hinweis dankbar.
Gruss Michael
 
Hallo Michael,

bei mir macht vor allem der "Stop" nach dem STATE_STATION_CHECK probleme. Da dreht er leicht.

Habe deshalb in "motor.h" "Robot::motorControl()" diese Zeilen gewechselt:

Code:
if (currentMillis < stateStartTime + motorZeroSettleTime) motorLeftPID.w = 0; // get zero speed first after state change
...
if (currentMillis < stateStartTime + motorZeroSettleTime) motorRightPID.w = 0; // get zero speed first after state change

in:

Code:
if ((currentMillis < stateStartTime + motorZeroSettleTime) && (stateCurr != STATE_STATION_REV)) motorLeftPID.w = 0; // get zero speed first after state change
...
if ((currentMillis < stateStartTime + motorZeroSettleTime) && (stateCurr != STATE_STATION_REV)) motorRightPID.w = 0; // get zero speed first after state change


Das Verhalten beim Drehen ausserhalb vom Permeter war auch noch nicht optimal. Das habe ich auch noch angepasst im SheepSheep Branch .

Gruess

Chris
 
Hallo micserver,

sehr schöne Umsetzung. Wo hast du denn die weißen Plastikprofile her, die du in deinem Mower verbaut hast? Oder hast du die gedruckt?
 
Ja, stammt aus dem 3D Drucker, Sparkcube v1.1 XL, der muss ja was zu tun haben :)....ausserdem hätte ich das Aluprofil nicht so formen können.
Falls man sich fragt was das für ein Bumper ist: Hochstartgummischlauch aus dem Segelflugmodellbau tut hier einen hervorragenden Dienst.
Gruss Michael
 
Oben