A couple recommendations:
Using delay() in any sort of sketch that needs to be responsive and handle multiple tasks is just a bad idea. Don't do it. Blink without delay is the proper way of timing actions without blocking other activities.
Implement a state machine for your rover. Google it, Wiki it (don't get caught up in complicated state machine patterns, you just need a switch/case based state machine). If you have trouble with implementation come back and ask some questions. The state machine itself should be pretty simple. Incorporating it with millis() based timing (ie Blink without delay) is a little more involved, but still not really complicated.