I have given much thought to steering an autonomous rover with the Ardupilot.
Since the Ardupilot will blindly drive to the next way point irrespective of what is infront of/along side the rover I believe that the Ardupilot is only part of the solution.
Therefore I have generated code for a BS2p MCU that takes steering commands from the Ardupilot, but also provides obstacle detection to prevent the rover from running head on into an obstacle while traveling to the next way point.
I agree with you ArduPilot only part of solution ... but it is a big part methinks. I was also thinking along similar lines .... of adding an ultrasonic sensor on the front of the vehicle to detect obstacles. The goal is still the GPS coordinates (which is what I want) but the exact path may vary based on local obstacles.
I am looking at the code to see what I need to do to "not use" some sensors ... after all .. the XYZ sensors are not important ... we can assume a rover in "level, stable flight" ...