По сути, чтобы робот запоминал, куда ехать, нам надо правильно собрать информацию о маршруте.
"На минималках" Вам потребуется собрать робота с применением либо шаговых двигателей, либо обычных, но с магнитными метками на колесах и датчиком холла для того, чтобы считать обороты. Если поворачивать он будет за счёт сервопривода - сохранять и эту информацию, если же за счёт разницы в скорости вращения колес - то надо как-то предусмотреть момент контроля проскальзывания, это сложно.
На основании этих данных Вы сможете фиксировать маршрут в виде массива действий а-ля "черепашка" (крутим четыре колеса, стоп, крутим колеса 1 и 3, крутим колеса 2 и 4, сервопривод на 30 градусов, и т.п.), который потом просто передадите управляющей части программы. Естественно, это все будет на С и команды будут обрабатываться в виде проверки условными операторами, но очень важно чтобы скорость обработки совпадала со скоростью фиксации этих данных. То есть не надо сохранять информацию с датчика холла так быстро, как на это способен контроллер, пусть это будет, например, каждые 200мс. Воспроизводить, соответственно, тоже с такой же задержкой.
Если путь будет значительным, то потребуется подключение tf-карты для хранения, чтобы не держать это в памяти самого Ардуино. Практически все примеры есть в Arduino IDE.
В качестве подстраховки рекомендую поставить три ультразвуковых датчика на лицевой части робота под разными углами для фиксации расстояний до объектов на пути следования. Информацию с них тоже нужно записывать и при воспроизведении маршрута сравнивать с реальными данными, так Вы сможете определить, что робот движется в сильно изменённой среде и остановить его.