CL-CBS
Overview
Car-Like Conflict-Based Search (CL-CBS) is an efficient and complete solver of Multi-Agent Path Finding for Car-like Robots problem. It applies a body conflict tree to address collisions considering the shape of agents. It also includes a new algorithm Spatiotemporal Hybrid-State A* as the single-agent path planner to generate path satisfying both kinematic and spatiotemporal constraints.
The video demonstration can be found on YouTube
Source Code
Requirement
sudo apt-get install g++ cmake libboost-program-options-dev libyaml-cpp-dev \
clang-tidy clang-format python3-matplotlib libompl-dev libeigen3-dev
Note: Please make sure your
matplotlib
version is above2.0
, otherwise it may show weird image while visualization. You can upgrade it bypip3 install -U matplotlib
.
Build
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
make
: Build CL-CBS codemake docs
: Build doxygen documentationmake clang-format
: Re-format all source filesmake all
: Build all three targets above
Run example instances
# make sure your are in build folder
# default 10 agent in a batch
./CL-CBS -i ../benchmark/map100by100/agents20/obstacle/map_100by100_obst50_agents20_ex13.yaml -o output.yaml
# or compute 20 agents in a whole batch
./CL-CBS -i ../benchmark/map100by100/agents20/obstacle/map_100by100_obst50_agents20_ex13.yaml -o output.yaml -b 20
Visualize Results
# make sure your are in build folder
python3 ../src/visualize.py -m ../benchmark/map100by100/agents20/obstacle/map_100by100_obst50_agents20_ex13.yaml -s output.yaml
Agent Configuration
The agent configurations, including the size, the kinematic constraints, and penalty functions can be changed in src/config.yaml
.
Benchmark
Benchmark for evaluating CL-MAPF problem are available in benchmark
folder. It contains 3000 unique instances with different map size and agents number.
The folder are arranged like follows, each mapset contains 60 instances:
benchmark
├── map100by100
│ ├── agents10
│ │ ├── empty
│ │ └── obstacle
│ ...
├── map300by300
│ ├── agents10
│ │ ├── empty
│ │ └── obstacle
│ ...
└── map50by50
├── agents10
│ ├── empty
│ └── obstacle
...
The instance are in yaml
format.
A typical result from benchmark acts like below:
Credits
For researchers that have leveraged or compared to this work, please cite the following:
L. Wen, Y. Liu and H. Li, "CL-MAPF: Multi-Agent Path Finding for Car-Like robots with kinematic and spatiotemporal constraints," Robotics and Autonomous Systems, 2021, doi:10.1016/j.robot.2021.103997.[Reference]
License
The code was developed by the APRIL Lab in Zhejiang University, and is provided under the MIT License.