AnthonyUdovichenko / MultiagentPlanning

Исходный код проекта по многоагентному планированию

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Multiagent planning

Исходный код проекта по многоагентному планированию траекторий.

comics

Описание программы

Программа решает задачу планирования траекторий движения нескольких объектов (например, роботов) на плоскости, подчиняющейся следующим условиям:

  • во-первых, плоскость должна представлять из себя прямоугольник со сторонами, параллельными осям координат
  • во-вторых, она должна быть разлинована в виде сетки из маленьких прямоугольников
  • в-третьих, каждый маленький прямоугольник (клетка) должен быть отнесён ровно к одному из двух типов: свободная клетка или занятая

Задача: построить оптимальный набор путей из начальной клетки в конечную для каждого агента или выдать результат, что некоторых путей не существует. Конкретные опции пути можно задать в файле, который подаётся на вход программе.

Входные данные

На вход в качестве аргумента командной строки подаётся XML-файл, имеющий следующую структуру:

<root>
     <map> — параметры карты
         <width> — ширина карты (количество клеток по оси X)
         <height> — высота карты (количество клеток по оси Y)
         <cellsize> — размер клеток карты
         <agents> — количество агентов
         <startx> — координаты начальных точек по X
         <starty> — координаты начальных точек по Y
         <finishx> — координаты конечных точек по X
         <finishy> — координаты конечных точек по Y
         <grid> — сама карта
             <row> — строка карты
     <algorithm> — параметры алгоритма
         <metrictype> — метрика, используемая в эвристической функции (euclidean, manhattan, chebyshev, diagonal)
         <searchtype> — алгоритм поиска (dijkstra или astar)
         <hweight> — вес эвристики
         <priority> — способ присвоения приоритетов агентам
     <options> — параметры отображения результата

Выходные данные

Результат работы представляется в виде XML-файла, в котором, помимо входных данных, есть следующая информация:

     <log>
         <agent> — информация о найденном пути для конкретного агента
             <mapfilename> — путь к файлу со входными данными
             <summary> — количество шагов, количество сгенерированных узлов, длина пути, время поиска ответа
             <path> — исходная карта и обозначенный на ней путь
                 <row> — строка карты
             <lplevel> — путь в виде последовательности узлов
                 <node> — координаты узла и его номер
             <hplevel> — путь в виде последовательности секций
                 <section> — координаты начала и конца секции и её длина

Сборка и запуск

Сборку проекта возможно осуществить двумя способами:

  • Используя QtCreator и qmake;
  • Используя CMake.

При использовании QtCreator требуется открыть файл ASearch.pro который находится в директории .../PathPlanningProject/Src/ и настроить проект с нужным комплектом сборки.

qt_open

После выбора проекта требуется установить имя входного файла как аргумент командной строки. В качестве первого примера используйте файл .../PathPlanningProject/Examples/example.xml. Для установки аргументов командной строки перейдите в настройки запуска проекта и введите нужный путь к файлу в поле "Параметры командной строки".

qt_arg

После установки аргумента командной строки можно проверить работу программы. Следующий результат должен отобразиться в результате запуска:

Parsing the map from XML:
Map OK!
Parsing configurations (algorithm, log) from XML:
short
Warning! Value of 'logpath' tag is missing!
Value of 'logpath' tag was defined to 'current directory'.
Warning! Value of 'logfilename' tag is missing.
Value of 'logfilename' tag was defined to default (original filename +'_log' + original file extension.
Configurations OK!
Creating log channel:
Log OK!
Start searching the path:
Search is finished!
Path NOT found!
numberofsteps=0
nodescreated=0
time=0
Results are saved (if chosen) via created log channel.

При использовании CMake сборка и запуск может производиться как из командной строки, так и при помощи различных IDE (например JetBrains CLion). Ниже приведены скрипты сборки и запуска с использованием командной строки.

Linux и Mac

Release сборка:

cd PathPlanningProject
cd Build
cd Release
cmake ../../ -DCMAKE_BUILD_TYPE="Release"
make
make install

Debug сборка:

cd PathPlanningProject
cd Build
cd Debug
cmake ../../ -DCMAKE_BUILD_TYPE="Debug"
make
make install

Запуск:

cd ../../Bin/{Debug|Release}/
./PathPlanning ../../Examples/example.xml

Результат запуска:

cmake_run

Windows

Release сборка:

cd PathPlanningProject
cd Build
cd Release
set PATH
cmake ../../ -DCMAKE_BUILD_TYPE="Release" -G "MinGW Makefiles"
mingw32-make
mingw32-make install

Debug сборка:

cd PathPlanningProject
cd Build
cd Debug
set PATH
cmake ../../ -DCMAKE_BUILD_TYPE="Debug" -G "MinGW Makefiles"
mingw32-make
mingw32-make install

Запуск:

cd ../../Bin/{Debug|Release}/
PathPlanning.exe ../../Examples/example.xml

Результат запуска: cmake_run2

Контакты

Яковлев Константин Сергеевич

Дергачев Степан

About

Исходный код проекта по многоагентному планированию


Languages

Language:C++ 96.3%Language:C 2.4%Language:CMake 1.1%Language:QMake 0.3%