Db-CBS is a multi-robot kinodynamic motion planner that enables a team of robots with different dynamics, actuation limits, and shapes to reach their goals in challenging environments. It solves this problem by combining the Multi-Agent Path Finding (MAPF) optimal solver Conflict-Based Search (CBS), the single-robot kinodynamic motion planner discontinuity-bounded A* (db-A*), and non- linear trajectory optimization.
Paper on arXiv and Video are available.
![](https://private-user-images.githubusercontent.com/70643834/271562448-d371f288-00ec-443b-a5bc-8a79425fde0b.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5OTM0NDcsIm5iZiI6MTczODk5MzE0NywicGF0aCI6Ii83MDY0MzgzNC8yNzE1NjI0NDgtZDM3MWYyODgtMDBlYy00NDNiLWE1YmMtOGE3OTQyNWZkZTBiLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDA1MzkwN1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTFmOTU2ZjZjYzc3NmE4N2M3MDc3OGEzMDY4NTFmYTg2Mzc1YTFjOWJhZWY0YWRmMTdhZGNiOGY4YjVjMzNkMWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.SlhImBm-Q8OUZ95RnRYaXIbN9WRBFsa0r0NTL6WeNnk)
The primitives are on the TUB cloud. The easiest is to use a symlink:
ln -s /home/${USER}/tubCloud/projects/db-cbs/motions motions
Alternatively, download a copy
wget https://tubcloud.tu-berlin.de/s/CijbRaJadf6JwH3/download
unzip download
rm download
Tested on Ubuntu 22.04.
mkdir buildRelease
cd buildRelease
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="/opt/openrobots/" ..
make -j
cd buildRelease
python3 ../scripts/benchmark.py
ROS2 workspace needs to have crazyswarm2.
Set Up
Add a symlink of dbcbs_ros to your ROS2 workspace
ln <PATH-TO>/dbcbs_ros <PATH-TO>ros2_ws/src/ -s
Build
colcon build --symlink-install
Usage
Note that all configuration files are the ones used in cvmrs_ros/config. This allows to commit those files without changing the default value of the (public) crazyswarm2 repository.
ros2 launch dbcbs_ros launch.py
and in a separate terminal
ros2 run dbcbs_ros multi_trajectory