Thanks for that. I guess I never checked out the driver goto.
goto.cc isn’t supposed to be very accurate (and makes mention of that several times in the code). Its main purpose in life is to demonstrate the threading functionality of libplayerc++. Which aspects of it would you like to improve? The motion is controlled by a proportional controller with saturation limits, you could always tweak the parameters (for example, the turn controller has to be more than 10 degrees off course to make a change.) The avoidance algorithm is also very simple; you could change it to some kind of wall-following scheme or something.
There is a driver called “goto” that handles getting your robot from point A to point B. If you want obstacle avoidance along the way, you can use vfh or nd instead.