Универсальный робот
Автор
Универсальный робот
Данный репозиторий позволяет работать с роботами разного вида (с разными способами перемещения и исследования карты) и задавать им различные цели (поиск цели, выхода, исследование).
Комната задается так же как и раньше.
Для иллюстрации создадим небольшую пустую комнату, поместим в конце нее цель и поставим несколько стен.
In [ ]:
testroom = gen_room(25,4)
testroom[5,2] = wall
testroom[9,3] = wall
testroom[13,2] = wall
testroom[17,3] = wall
testroom[21,2] = wall
testroom[24,3] = goal
heatmap(-testroom', yflip=:true, aspect_ratio=:equal, leg=:false, size = (30*25,30*4))
Out[0]:
Робот является структурой, в которой задается память робота, его цели, сенсоры, а также возможности передвижения.
Для иллюстрации поместим уже готового робота в начале тестовой комнаты и инициализируем его память.
In [ ]:
start_x = 2
start_y = 2
dir_x, dir_y = Tuple(forward)
init_memory!(fastrobot, start_x, start_y, dir_x, dir_y, size(testroom)[1], size(testroom)[2])
# Задачей робота будет найти и достигнуть цели в комнате (он не знает, где она находится)
replace!(fastrobot.map, unknown => goal_check);
Робот запускается уже готовой функцией, которая сразу строит также пройденный им путь.
In [ ]:
run_robot!(fastrobot, testroom)
Out[0]: