Позвольте предложу свой вариант.
Во первых предлагаю выкинуть механическую развертку в линию, слишком сложно, проще налепить ассгматическую линзу (0/+10), грубо говоря половинку стеклянного цилиндрика разрезанного по оси - лазер попадая в нее расщепится на полоску. Такая система используется в некоторых лазерных уровнях.
Далее на робота крепим камеру и обрабатываем с нее картинку. Оставляем только красную составляющую и делаем порог, что бы на обработку поступали данные только с яркостью больше 150 например.
Можно еще лучше - используем инфракрасный лазер (правда придется подобрать ту линзу, которая ИК пропустит) а у камеры ИК обрезающий фильтр заменяем на ИК оставляющий, например из засвеченного негатива (в интернете много раз попадались подобные проекты, когда получали камеру видящуюю только в ИК) - тогда проще будет оставить только точки с яркостью выше заданной.
Можете попробовать сделать фотографию освещенного лазером места и поманипулировать в фотошопе.
Луч лазера ввиде полоски светит под углом так, что падает на поверхость в метре от робота, камера находясь выше излучателя видит полоску. Робот едет к препятствию.
Как только луч начинает освещать препятствие, линия в поле зрения камеры начинает искажаться (ломаться или изгибаться). Допустим будем снимать один кадр на каждый сантиметр продвижения робота. Получится как раз развертка по линиям по высоте. Программа анализирует силу излома линии. Расстояние (будем рассматривать пока только вертикальные препятствия) от самой нижней части ломанной линии до низа кадра будет обратно пропорциональна расстоянию. Или расстояние от верха кадра (там мы видим полоску если нет препятствий) до самой нижней точки линии). Зная о расстоянии пройденном роботом вперед, можно из геометрии посчитать например высоту объекта. Если допустим у нас линия искривляется искривляется а потом резко спрямляется - значит луч уже идет над объектом, можно найти его высоту и решить, преодолеет его робот или нет.
Вобщем такие вот идеи