упрощенно в идеальных условиях это будет примерно так: есть плоскоть определённых размеров (стол или пол комнаты), подавая на моторы сигналы ты без всяких энкодеров знаешь какие колёса на сколько прокрутились, т.е. можешь определять где в конкретный момент находится твоя машина. машина ставится в определённые координаты и естественно известно под каким углом она развёрнута. в машине, допустим дальномер стоит, с которого можно данные считывать с определённым интервалом. сначала можно "осмотреться", т.е. развернул машину немного, получил данные с дальномера, потом опять развернул, опять получил данные и т.д. ты знаешь в каких координатах в каждый момент времени находится твоя машина и под каким углом. получил с дальномера, что расстояние такое-то, вычислил координаты препятствия по простеньким формулам из школьной геометрии и "нарисовал" точечку на плоскости. в компьютере эта плоскость существует в виде 2х мерного масcива, каждая ячейка которого представляет квадрат определённых размеров (1*1см или 0.5*0.5см или еще каких соотношений). 1 - там что-то есть, 0 - ничего не мешает. вот так и ездишь, заполняя карту данными. в книгах и статьях глянь как определяется, принадлежность точки многограннику, там ничего сложного. так ты поймёшь, сможешь проехать или нет. потом можно и усложнять, например заполняя массив не 1 или 0, а 0 - ничего нет, 1 - всегда что-то есть (стена понятное дело условно никогда никуда не денется), 2 - временная преграда, 3 - туда нужно приехать, 4 - это точки линии, по которой нужно ехать, 5..n - объект такой-то.
в реальных условиях не всё так просто и нужно будет использовать энкодеры или еще как-то определять где в пространстве находится. поверхность может быть из различных материалов, на полу что-то может лежать, допустим шнур. нужно будет применять алгоритмы коррекции ошибок. может еще прийдётся расставлять маячки. и т.д.
более-менее в общих чертах проясняется?