EinEinfach
Well-known member
Ich vermute der Bumper löst aus und dann versucht er zu drehen. Gab es nicht irgendwo eine Anleitung wie man den Bumper beim Alfred weniger empfindlich modifiziert?
Das finde ich spannend. Dem einen ist er zu hart, dem anderen zu weich. Mir passt es genauso wie es ist. Ich kann mir nicht vorstellen, dass es da eine großartige Serienstreuung gibt. Wo kommt also der Wunsch her das zu ändern?Gab es nicht irgendwo eine Anleitung wie man den Bumper beim Alfred weniger empfindlich modifiziert?
Weil das von der offiziellen Seite so kommuniziert wird, für dich nicht Grund genug?Das finde ich spannend. Dem einen ist er zu hart, dem anderen zu weich. Mir passt es genauso wie es ist. Ich kann mir nicht vorstellen, dass es da eine großartige Serienstreuung gibt. Wo kommt also der Wunsch her das zu ändern?
Wenn Du die Software-Variante von timotto meinst, dann ist diese in abgewandelter Form sogar kurzzeitig mit in die offizielle Version aufgenommen worden. Aber zur Zeit wieder deaktiviert worden, da es wohl beim Alfred nicht zuverlässig funktioniert. Beim ArduMower konnte ich noch kein Fehlverhalten fest.Ich vermute der Bumper löst aus und dann versucht er zu drehen. Gab es nicht irgendwo eine Anleitung wie man den Bumper beim Alfred weniger empfindlich modifiziert?
void Bumper::run() {
bumperDriver.run();
inputLeftPressed = bumperDriver.getLeftBumper();
inputRightPressed = bumperDriver.getRightBumper();
if (BUMPER_ENABLE){
outputLeftPressed = inputLeftPressed;
outputRightPressed = inputRightPressed;
/*
FIXME: code does not seem to work properly in all cases
https://github.com/Ardumower/Sunray/pull/103#issuecomment-1215526140
IDEA: do not check bumper errors here, check them (like for the lift-sensor) in 'src/EscapeReverseOp.cpp/run'
*/
bool bumperLeft = false;
bool bumperRight = false;
// delay for the bumper inputs
if (inputLeftPressed){
if (millis() >= (leftPressedOnDelay + BUMPER_TRIGGER_DELAY)) bumperLeft = true;
} else leftPressedOnDelay = millis();
if (inputRightPressed){
if (millis() >= (rightPressedOnDelay + BUMPER_TRIGGER_DELAY)) bumperRight = true;
} else rightPressedOnDelay = millis();
if (millis() > (linearMotionStartTime + BUMPER_DEADTIME)){
outputLeftPressed = bumperLeft;
outputRightPressed = bumperRight;
} else outputLeftPressed = outputRightPressed = false;
// check if bumper stays triggered for a long time periode (maybe blocked)
if ((bumperRight || bumperLeft) && (BUMPER_MAX_TRIGGER_TIME > 0)){
if ((abs(motor.linearSpeedSet) >= 0.05) || (abs(motor.angularSpeedSet) >= 0.05)) { // if no movement, bumperStayActivTime paused
bumperStayActivTime = bumperStayActivTime + (millis()-lastCallBumperObstacle);
}
if ((bumperStayActivTime) > (BUMPER_MAX_TRIGGER_TIME * 1000)){ // maximum trigger time reached -> set error
if (stateOp != OP_ERROR){
stateSensor = SENS_BUMPER;
CONSOLE.println("ERROR BUMPER BLOCKED - BUMPER_MAX_TRIGGER_TIME exceeded. See config.h for further information");
setOperation(OP_ERROR);
}
}
} else bumperStayActivTime = 0;
lastCallBumperObstacle = millis();
}
}
Ne ne ich meine, die Hardwareänderungen die in der Alfred Anleitung stehenWenn Du die Software-Variante von timotto meinst
Nach dem Ausschalten mal etwas warten und dann erst wieder einschalten.Ausschalten, wieder einschalten.
Kann unterschiedliche Ursachen haben, nur ein paar davon:Den Speed habe ich etwas höher gesetzt. Ein paar Meter fährt er gut und dann immer wieder langsamer. Woran kann das liegen?
Wenn du die Lizenz hast, kannst du den Perimeter 2 mal abfahren lassen und dann hat er genug Platz zum wenden.Kann ich irgendetwas einstellen, sodass der Mäher die Grenzen nicht überschreitet? Er versucht direkt am Zaun zu drehen und kommt dann natürlich nicht weiter.
Den Speed habe ich etwas höher gesetzt. Ein paar Meter fährt er gut und dann immer wieder langsamer. Woran kann das liegen?