Реализация алгоритма многоагентного поиска пути на базе Conflict Based Search
- Git 2.7.4 или выше
- CMake 3.2 или выше;
- GCC 4.9 или выше
- Git 2.23.0 или выше
- CMake 3.2 или выше;
- Apple LLVM version 10.0.0 (clang-1000.11.45.5) или выше;
- Git 2.23.0 или выше
- CMake 3.2 или выше;
Cоздайте ответвление (fork) этого репозитория в свой GitHub аккаунт. Загрузите содержимое полученного репозитория, либо клонируйте его в нужную вам директорию.
git https://github.com/dpaleyev/PathPlanningProject.git
или (с помощью ssh)
git@github.com:dpaleyev/PathPlanningProject.git
или просто скачать архив с файлами
Сборку проекта возможно осуществить используя CMake.
При использовании CMake сборка и запуск может производиться как из командной строки, так и при помощи различных IDE (например JetBrains CLion). При запуске путь до конфигурации карты передается в аргументах к исполняемому файлу.
Примеры входных и выходных файлов можно посмотреть в папке Examples
Входной файл содержится в теге root
, в котором расположены следующие теги:
-
map
— обязательный тег, содержащий основную информацию о задачеwidth
,height
— размеры картыcellsize
— размер одной клеткиstartx
,starty
— координаты начальной клетки для каждого агента по очереди в тегахagent
finishx
,finishy
— координаты конечной клетки для каждого агента по очереди в тегахagent
grid
— содержит поле:height
теговrow
, в каждом из которыхwidth
нулей или единиц через пробел, причем нули означают свободную клетку, а единицы — занятую
-
algorithm
searchtype
— алгоритм поиска:astar
metrictype
— эвристика для оценки расстояния (x
,y
— расстояние до цели по горизонтали и вертикали соответственно)euclidean
—sqrt(x * x + y * y)
manhattan
—abs(x) + abs(y)
chebyshev
—max(abs(x), abs(y))
diagonal
—min(x, y) * (sqrt(2) - 1) + max(x, y)
hweight
— вес эвристики при подсчетеf
вершиныallowdiagonal
— разрешено ли ходить по диагонали:true
илиfalse
cutcorners
— разрешено ли ходить по диагонали, если с одной стороны стена:true
илиfalse
allowsqueeze
— разрешено ли ходить по диагонали, если с обеих сторон стены:true
илиfalse
prioratizeconflicts
— включено ли использование улучшения приоритезации конфликов в CBS:true
илиfalse
bypass
— включено ли использование улучшения приоритезации конфликов в CBS:true
илиfalse
corridorsymmetry
— включено ли использование улучшения распознавания конфликов в коридорах в CBS:true
илиfalse
targetsymmetry
— включено ли использование улучшения распознавания конфликтов в конечных точках в CBS:true
илиfalse
-
options
loglevel
— уровень логирования, каждый следующий включает всю информацию предыдущего0
— ничего0.5
— только тегsummary
(подробнее в формате выходного файла)1
— путь на поле и в форматахhplevel
иlplevel
1.5
— тегlowlevel
, в который записываются спискиOPEN
иCLOSED
в конце работы алгоритма2
— в тегlowlevel
спискиOPEN
иCLOSED
записываются на каждом шаге алгоритма
logpath
logfilename
Визуализация происходит с помощью Python скрипта visualizer.py
После запуска передается путь до лог файла и автоматические начинается визуализация
Яковлев Константин Сергеевич
- kyakovlev@hse.ru
- Сайт НИУ ВШЭ
- Telegram: @KonstantinYakovlev
Дергачев Степан
- sadergachev@edu.hse.ru
- Telegram: @haiot4105