https://github.com/lis-epfl/multi_agent_pkgs
Multi-agent motion planning packages (HDSM method)
https://github.com/lis-epfl/multi_agent_pkgs
aerial-robotics motion-planning multiagent-planning obstacle-avoidance
Last synced: 4 months ago
JSON representation
Multi-agent motion planning packages (HDSM method)
- Host: GitHub
- URL: https://github.com/lis-epfl/multi_agent_pkgs
- Owner: lis-epfl
- License: mit
- Created: 2023-09-09T14:50:19.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-02-21T18:22:35.000Z (over 1 year ago)
- Last Synced: 2025-02-21T18:29:42.496Z (over 1 year ago)
- Topics: aerial-robotics, motion-planning, multiagent-planning, obstacle-avoidance
- Language: C++
- Homepage:
- Size: 224 MB
- Stars: 99
- Watchers: 2
- Forks: 12
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Multi-Agent Planning Packages
The code for the paper "High-Speed Motion Planning for Aerial Swarms in Unknown and Cluttered Environments", by Charbel Toumieh and Dario Floreano, published in [IEEE Transactions on Robotics](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10599811) - ([pdf](https://arxiv.org/abs/2402.19033), [video](https://youtu.be/Af8mODuES4s)).
The packages have been tested on **Ubuntu 22.04**, **ROS2 Humble**. The simulations have been run on **Intel i9-13900K** CPU and **NVidia RTX 4090** GPU.
**This project is continuously under development.**
|10 agents circular exchange (forest) | 10 agents traversing forest / wall / forest |
| ------------------------- | ------------------------- |
|
|
|10 agents traversing loops | Hardware experiments on nano-drones (Crazyflie)|
| ------------------------- | ------------------------- |
|
|
|
To get started you can skip to [Getting Started](#Getting-Started). This repo contains the following packages:
* `convex_decomp_util`: package for Safe Corridor generation based on [[1]](#1) and [[2]](#2).
* `decomp_ros`: package for Safe Corridor generation and visualization based on [[3]](#3).
* `env_builder`: ROS2 package that allows to build an evironment in the form of voxel grid and publishes it in the form of a pointcloud for visualization in rviz2.
* `jps3d`: a modified version of [jps3d](https://github.com/KumarRobotics/jps3d) that checks for traversibilty when generating a path to make sure we can generate a Safe Corridor around it.
* `mapping_util`: ROS2 package for voxel grid generation (clearing out voxels that are in the field of view of the drone).
* `path_finding_util`: package for path finding and path tools such as path shortening.
* `voxel_grid_util`: package for voxel grid class and raycasting function.
* `multi_agent_planner`: ROS2 package for multi-agent planning (uses all the other packages).
At the end of this documentation you can find:
* [Improvements](#Improvements): improvements to the packages that are yet to be implemented.
* [References](#References): references used throughout this text.
* [Citation](#Citation): bibtex citation for latex.
## Getting Started
### Install gurobi
Download gurobi 10.0.* from this [link](https://www.gurobi.com/downloads/gurobi-software/). Follow the installation instructions in this [link](https://support.gurobi.com/hc/en-us/articles/4534161999889-How-do-I-install-Gurobi-Optimizer-). Finally, install the license by going to this [link](https://portal.gurobi.com/), creating a license and installing it (instructions on how to install it are shown when you create it).
Then, build gurobi and copy the library:
``` shell script
cd /opt/gurobi1002/linux64/src/build #Note that the name of the folder gurobi1002 changes according to the Gurobi version
sudo make
sudo cp libgurobi_c++.a ../../lib/
```
### Create and build workspace
First install `setup_tools`:
``` shell script
pip install setuptools==65.5.1
```
Create a ROS2 workspace and clone the repo inside the `src` folder of the workspace (or simply clone it inside an existing workspace), then build it:
``` shell script
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/lis-epfl/multi_agent_pkgs
cd ..
colcon build --symlink-install --packages-select jps3d decomp_util convex_decomp_util path_finding_util voxel_grid_util decomp_ros_msgs decomp_ros_utils
source install/setup.bash
colcon build --symlink-install --packages-select env_builder_msgs env_builder mapping_util multi_agent_planner_msgs multi_agent_planner
```
## Running the simulation
To switch between a known and unknown envrionment, you can set the variable `free_grid` in the launch file to `true` and `false` respectively.
### Multiple agents in a circular configuration
Launch rviz2 in a terminal (if you didn't build `decomp_ros_util` due to OGRE conflicts, the polyhedra will not appear).
``` shell script
cd ~/ros2_ws
. install/setup.bash
rviz2 -d ~/ros2_ws/src/multi_agent_pkgs/multi_agent_planner/rviz/rviz_config_multi.rviz
```
Launch the environment in another window (if you want an empty environement replace `env_builder.launch.py` with `env_builder_empty.launch.py`):
``` shell script
cd ~/ros2_ws
. install/setup.bash
ros2 launch env_builder env_builder.launch.py
```
Launch the agents in another window. If you want each agent to run in a different terminal, uncomment the `prefix=['xterm -fa default -fs 10 -hold -e']` line in the launch file:
``` shell script
cd ~/ros2_ws
. install/setup.bash
ros2 launch multi_agent_planner multi_agent_planner_circle.launch.py
```
### Multiple agents going through forest + wall + forest
Launch rviz2 in a terminal (if you didn't build `decomp_ros_util` due to OGRE conflicts, the polyhedra will not appear).
``` shell script
cd ~/ros2_ws
. install/setup.bash
rviz2 -d ~/ros2_ws/src/multi_agent_pkgs/multi_agent_planner/rviz/rviz_config_multi.rviz
```
Launch the environment in another window:
``` shell script
cd ~/ros2_ws
. install/setup.bash
ros2 launch env_builder env_builder.launch.py
```
Launch the agents in another window. If you want each agent to run in a different terminal, uncomment the `prefix=['xterm -fa default -fs 10 -hold -e']` line in the launch file:
``` shell script
cd ~/ros2_ws
. install/setup.bash
ros2 launch multi_agent_planner multi_agent_planner_long.launch.py
```
## Improvements
These are the potential structural improvements:
* The `jps3d` package should be integrated in the `path_finding_util` package.
These are the potential parametric improvements:
* Tuning the parameters for speed modulation to go faster in free environments.
These are the potential future features under development:
* Dealing with dynamic obstacles.
* Dealing with deadlocks when passing through narrow gaps from opposite directions.
## References
[1]
Toumieh, C. and Lambert, A., 2022. Voxel-grid based convex decomposition of 3d space for safe corridor generation. Journal of Intelligent & Robotic Systems, 105(4), p.87.
[2]
Toumieh, C. and Lambert, A., 2022. Shape-aware Safe Corridors Generation using Voxel Grids. arXiv preprint arXiv:2208.06111
[3]
Liu, S., Watterson, M., Mohta, K., Sun, K., Bhattacharya, S., Taylor, C.J. and Kumar, V., 2017. Planning dynamically feasible trajectories for quadrotors using safe flight corridors in 3-d complex environments. IEEE Robotics and Automation Letters, 2(3), pp.1688-1695.
## Citation
```bibtex
@article{toumieh2024high,
title={High-speed motion planning for aerial swarms in unknown and cluttered environments},
author={Toumieh, Charbel and Floreano, Dario},
journal={IEEE Transactions on Robotics},
year={2024},
publisher={IEEE}
}
```