Так это - соскочить - это всегда пожалуйста
В свое время (года 3 назад) делал первого минисумоиста. Датчиков никаких типа нет - что делать.
Потом посчитал: ринг 80 см в диаметре - если сумоист будет просто случайно бродить -он наткнется на противника (а впереди у него контактный бампер) и тогда сможет его вытолкать!
В рамках известных условий я-бы остановился на случайном блуждании (только реально случайном, а не поворот все время в одну сторону). По сути пылесос может заниматься уборкой все время, что ему разрешено. Остальные решения требуют очень хороших условий - стирильная комната без мебели, строго прямоугольная, с аккуратно выложенным внизу орнаментом, имеющем качественное отражение (такая комната может привидится только во сне, хотя видя тесты нациков можно засомневаться
)
Следующим шагом можно предположить запоминание пути, по которому шел робот, возврат в предыдущую точку (построение дерева решений) - это не теоретический вариант, а вполне реальный. В свое время, разрабатывая способ выполнения команды поиск устройства, удалось разместить дерево на 64 позиции в 8 байт. Такое решение можно реализовать, но вопрос в том, какую ошибку позиционирования будет бот накапливать. Боюсь, что больше глубины 2-3 возврата он не осилит.