Интересно!
Однако, возникает слишком много вопросов (поиск базы пропускаем):
в начале движения робот смотрит во все стороны и решает в какую сторону начинать.
Рассуждаю: Как он решает? Ну наверное случайным образом, или в сторону с наибольшими показаниями дальномера.
Итак: Смотрит во все стороны и "видит" с двух сторон стена (угол, он в углу), с третьей стороны, например, тумба в 1 метре от него, с четвёртой в 2-х метрах шкаф.
по показаниям с дальномера он условно разобьет свой путь на квадраты которые соответствуют размеры робота
Свой путь он целиком видеть не может (мешает мебель), а следовательно и на квадраты разбить может только участок (см. выше) 1м х 2м... Здесь как бы верно, только можно и проще - просто объехать ентот участок без пропусков (покрыть траекторией).
сделав шаг(проехав квадрат) он опять снимает показания с дальномеров учитывая что он недолжен ехать назад и делает следующий ход.
Согласен! Однако где теперь "назад"? А где следующий участок? Как он определит? В процессе уборки первого квадрата он неднократно разворачивался и вполне может начать убирать убранный участок, следовательно нужна навигация, а значит компас!
также надо включить в програму правило что он недолжен поворачивать больши 2 раз в одну и туже сторону (возможно исключение)
А если сектор уборки слишком мал? Тогда как ни крути 2 раза придётся повернуться...
ЗЫ: "карта в голове у робота" довольно условная, имелась ввиду... Даже это и картой, наверное нельзя назвать, а просто его траектория обсчитаная хозяином и зашитая ему в "мозги" (с учётом всех препятствий и ньюансов).
Как сказал =DeaD=:
Вопрос не в алгоритме, а в привязке к местности
это конечно звучит просто, однако осуществить в рамках квартиры, без дополнительных стационарных устройств, осуществить ИМХО крайне затруднительно. Вот я и пытаюсь ввести стационарное устройство: провод по периметру квартиры... Однако он(провод) хоть и помогает при корректировке движения, но не решает проблем связаных с привязкой к местности...
___________
С уважением
Vovan