# CL-CBS
**Repository Path**: githjk/CL-CBS
## Basic Information
- **Project Name**: CL-CBS
- **Description**: !路径规划-一种新的时空混合状态A*算法作为单智能体路径规划算法,生成满足运动约束和时空约束的路径!:An Efficient Multi-Agent Path Finding Solver for Car-Like Robots
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2024-08-28
- **Last Updated**: 2024-08-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 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](https://www.youtube.com/watch?v=KThsX04ABvc)
## Source Code
### Requirement
```bash
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 above `2.0`, otherwise it may show weird image while visualization. You can upgrade it by `pip3 install -U matplotlib`.
### Build
```bash
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
```
* `make`: Build CL-CBS code
* `make docs`: Build doxygen documentation
* `make clang-format`: Re-format all source files
* `make all`: Build all three targets above
### Run example instances
```bash
# 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
```bash
# 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
This code was developed by the [APRIL Lab](https://github.com/APRIL-ZJU) in Zhejiang University.
For researchers that have leveraged or compared to this work, please cite the following:
Licheng Wen, Zhen Zhang, Zhe Chen, Xiangrui Zhao, and Yong Liu. CL-MAPF: Multi-Agent Path Finding for Car-Like Robots with Kinematic and Spatiotemporal Constraints.[[arxiv](https://arxiv.org/abs/2011.00441)]
## License
The code is provided under the [MIT License](https://opensource.org/licenses/MIT).