Você está chamando a linha
ultrasonic.MeasureInCentimeters();
apenas em um local em todo o programa, como quer que o método compare() adivinhe a distância do carrinho até o obstáculo sem fazer a medição?
Basta chamar de novo a linha de código acima, desta vez dentro do compare(), a versão menos tosca, que irá conseguir o que quer
Chama uma vez quando o sensor olhar para esquerda e guarda o valor; chama outra vez quando o sensor olhar para a direita e guarda o valor. Compara os dois valores e pronto.