zu 1. Bildauswertung geht mächtig ans Eingemachte, hab vor Jahren mal damit gebastelt dergleichen auf nem ATMega zu proggen, aber die zu verarbeitenden Datenmengen gehen schnell über die Grenzen der Möglichkeiten eines 8-bitters hinaus und der Rechenaufwand wird enorm ... auslagern auf PC oder gleich n MiniITX-Board auf den Bot machen, da wird die Sache realistischer.

zu 2. Es gibt noch verschiedene andere Methoden Entfernungen zu messen, kommt halt drauf an was Du willst, alle haben ihre Vor- und Nachteile.
Da gäbs z.B. die Laser Laufzeitmessung, also im Prinzip ne schnelle Stopuhr, das problem dabei ist, es wird nur an einem Punkt gemessen, eben der wo der Laser gerade hinzeigt.
Zum Laser gibts noch die Methode mit dem Linienlaser und der Kamera mit passendem Filter ... die ginge sogar locker auf nem ATMega, da die Filterung ja schon optisch vorgenommen wird und nur noch 1-Bit Schwarz-Weiß verarbeitet werden muss ... etwas rechenintensiv, aber zu machen. Nachteil, es wird nur in einer Ebene gemessen, was darunter oder darüber ist wird nicht erfasst.
Dann gäbs noch das Radar ... entweder als FMCW, was schweineteuer ist, hier hat man wieder ne Sensorkeule, sprich das Erfassungsfeld breitet sich trichterförmig aus. erfasst aber auch nicht alle Objekte, kommt auf den Werkstoff an.
Vor Jahren hab ich mal mit Dopplerradarsensoren gewerkelt, viel günstiger, die geben ne Welle aus wenn sich n Objekt im Erfassungsbereich bewegt, die Amplitude ist zum Abstand in Beziehung, nachteil, der Roboter muss sich bewegen um den Abstand zu messen, wenn er steht ist er blind, dazu kommt, dass eine komplette Welle ca. 20cm Strecke benötigte

gibt noch mehr Sachen, bin aber etwas zu müde