Do you know or can you calculate the number of steps per unit distance that your robot travels? If you know that, then take a distance measurement and then you will know how many steps to take to get to the wall. You still need to stop to get a distance measurement, cause pulseIn() blocks, but not as often. The Ping library is supposed to be non blocking, so maybe you could use that an not stop as often.