Safe Interval Path Planning with Interval Projection (SIPP-IP) - a SIPP-based planner capable of handling non-instantaneous accelerations/decelerations of an agent (kinodynamic constraints).
The project consists of the following folders:
src
andinclude
folders where the codes and headers of algorithms A*, SIPP1, SIPP2, SIPP-IP are located in addition to a code to generate the tests.- In
maps
folder, the maps which were used in the tests are added. tests
folder contains the generated instances grouped by the name of the map.- The results of the algorithms are written to text files inside the folder
results
.
All codes are self-contained. That is, no dependencies other than C++ compiler are needed, and the needed headers are added directly to the codes. Just compile the needed file and run it.
The first step in testing is to generate the instances of the tests. However, several sample instances for each map are already generated and added.
To generate the tests, use the code generate_obstacles
in src
folder. This will generate NumberOfTests
instances of each map and store them in corresponding folder in tests
folder.
- The first paramter which need to be specified is
NumOfTests
ininclude/constants.h
file. This defines the number of tests to be generated. - The second paramter is vector
factors
ininclude/constants.h
which defines the number of dynamic obstacles to be generated in each instance. That is, for each one ofNumOfTests
, several instances will be generated each one specified by factor fromfactors
where the number of dynamic obstacles equal to (number of free cells in the map / factor). See foldertests/empty_64_64
for an example of one group of tests. - The procedure of generating the dynamic obstacles is described in the paper. It is also easy to track the procedure inside the code and modify it if needed.
We added our implementation of algorithms A*, SIPP1, SIPP2 and SIPP-IP (all were mentioned in the paper). To run a code, the following paramters in file include/constants.h
should be specified before compiling:
- Parameters
MXH
,MXW
andmap
: the height, the width and the name of the map on which the tests will be conducted. - Paramter
NumOfTests
to specify how many tests to be conducted on the chosen map. - The number of dynamic obstacles are also defined by vector
factors
.
The used motion primitves are hard-coded inside the code by function fillActions()
, however they can be modified if needed.
The output of algorithms are stored in corresponding folder in folder results
. There will a one output file for each (map+number of dynamic obstacles). This file containts NumberOfTests
lines. Each line outputs the following:
- Whether the algorithm finds a solution or not.
- The cost of found solutions.
- The runtime.
See results/results SIPP-IP/res-empty_64_64-SIPP-IP-obs163.txt
for an example.
We also added function printSolutionStates
inside the codes of the algorithms to print the solution states. It can be used to print out the solutions.