@Michale:
Variablen vom Typ Boolean können immer nur zwei Werte aufnehmen (true/false), wenn diese Variable was anderes aufnehmen kann ist es keine Boolean Variable.
Es sollte aber dennoch möglich sein sie wie eine solche zu behandeln. Denn im Normalfall sollte 0=false sein und alle anderen Werte=true.

Man sollte eigentlich schreiben können:

if bumpervorn then
oder gegenteil:
if not bumpervorn then
-----
Ich vermute auch, daß es ein Problem mit dem Timing ist, schließlich fährt der Roboter ja auch zurück, also funktioniert ja eigentlich alles.