Сообщество Engee

Универсальный робот

Автор
avatar-rodniorodnio
Notebook

Универсальный робот

Данный репозиторий позволяет работать с роботами разного вида (с разными способами перемещения и исследования карты) и задавать им различные цели (поиск цели, выхода, исследование).

Комната задается так же как и раньше.

Для иллюстрации создадим небольшую пустую комнату, поместим в конце нее цель и поставим несколько стен.

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)
[ Info: Saved animation to /user/work/julia_robot/UniversalRobot/robot_animation.gif
Out[0]:
No description has been provided for this image