Усовершенствованный робот последователя линии
Я знаю про линейного последователя в основном роботов, решающих сетку, я знаю основы на самом деле. На самом деле они должны проследить путь сетки на арене и затем добраться до начальной точки на кратчайшем расстоянии. Здесь я сомневаюсь относительно последователя в этой ссылке, которую я прикрепил. Усовершенствованный робот-последователь для решения сетки и лабиринта
Я сомневаюсь, каковы процедуры, чтобы сделать это? Они наметили путь и использовали алгоритм Дейкстры для решения пути. Но как они передают код (то есть), куда он должен повернуть, в каком направлении он должен повернуть. как они генерируют какую функцию нужно передать? Пожалуйста, объясните мне, что мне нужна одна процедура. Я собираюсь попробовать это с питоном.
1 ответ
Из комментариев, которыми мы обменялись, я чувствую себя более уверенно, если предположить, что ваш актуальный вопрос заключается в следующем:
Какую структуру данных можно использовать для хранения структуры (геометрии, топологии) карты в памяти робота?
Ну, должно быть много возможных способов сделать это. По сути, это связный граф, узлы которого расположены на прямоугольной сетке. Итак, для начала можно описать узлы как набор координатных пар:
// just an example, this is not the actual map
// it doesn't need to be variables, could be array of arrays, or dictionary
var A = (0,0);
var B = (1,0);
var C = (2,1);
var D = (4,2);
// etc.
Затем вы можете описать ребра как пары точек:
var edges = [(A,B), (A,D), (B,C), ...];
С их помощью вы наверняка сможете рассчитать хороший путь из списка точек, а также расположения и направления каждого узла.
Я совсем не уверен, является ли это наиболее эффективной структурой данных, но это уже начало. Вам нужно только знать местоположение каждого узла, а края определяются просто путем связывания двух узлов вместе.