backport diff drive controller changes to fuerte branch