Vermutlich handelt es sich um ein Synchronisationsproblem. In der ursprünglichen Version wurde die Bildaufnahme von Scilab getriggert. Auch wichtig: turn(360) muss immer noch um 360° drehen, hängt ein wenig vom Batteriezustand ab.

In Deiner Version läuft die Bildaufnahme ja unabhängig von Scilab. Es kann vorkommen, dass ein Bild aufgenommen wird, während der Roboter noch dreht. Dann bekommt die Bildverarbeitung natürlich eine falsche Information über den Roboter. Abhilfe kann dadurch geschaffen werden, dass man nach den Bewegungsfunktionen eine kurze Wartezeit einbaut.

Du kannst mal folgende probieren: baue einfach nach den Bewegungen den Befehl

pause

ein.
Dann wartet die Funktion auf einen Tastendruck zum weitermachen. Du kannst auch mal die Bildanzeige wieder einschalten, um zu sehen, ob die Position auch immer richtig erkannt wird.

Gruss,
stochri