Hmm, um meine Frage zu präzisieren ein Codebeispiel, wie es falsch ist.
Code:
while(true)
{
move(60,FWD,DIST_MM(1000),true); //Fährt 1 Meter
task_Bumpers(); //stoppt Roboter ....
}
Der Roboter Fährt einen Meter vorwärts.
Wenn er jedoch nach 20 cm gegen ein Hindernis fährt, bleibt er nicht stehen, sondern seine Motoren drehen weiter solange bis ein Meter zurückgelegt wurde. Erst nach Beendung von move() erkennt task_Bumpers() das ein Bumper gedrückt wurde.
(
Erst dann werden auch die Motoren gestoppt.
Ich will den Roboter bestimmte Distanzen zurücklegen lassen und trotzdem auf Hindernisse reagieren.
Weiß hier wer einen Lösungsansatz?
Ich könnte mir vorstellen irgendwie den move() Befehl mit blocking false zu verwenden und irgendwie eine Hilfsvariable zu verwenden die sagt wann der Weg zurückgelegt wurde etc. Jedoch fällt mir keine Möglichkeit ein wie ich aus der Hauptschleife raus, die zurückgelegte Strecke herausfinden kann um mein Flag zu setzen, dass die Strecke zurückgelegt wurde.
HILFE!
)
Lesezeichen