An open API service indexing awesome lists of open source software.

https://github.com/mit-acl/rmader

Decentralized Multiagent Trajectory Planner Robust to Communication Delay
https://github.com/mit-acl/rmader

communication-delay-robust dynamic-environments hardware minvo multiagent-systems obstacle-avoidance optimization path-planning planner rmader robotics ros ros-noetic trajectory-optimization

Last synced: 15 days ago
JSON representation

Decentralized Multiagent Trajectory Planner Robust to Communication Delay

Awesome Lists containing this project

README

          

# Robust MADER: Decentralized and Asynchronous Multiagent Trajectory Planner Robust to Communication Delay #

#### **Accepted to IEEE Robotics and Automation Letters (RA-L)**
#### **Accepted to 2023 IEEE International Conference on Robotics and Automation (ICRA)**
#### **Awarded Best Poster Award at 2023 IEEE International Conference on Robotics and Automation (ICRA) CAMRS Workshop**

|4 agents with 2 dynamic obstacles|6 agents with 2 dynamic obstacles|
| ------------------------- | ------------------------- |
Hardware experiment: 4 agent with 2 dynamic obstacles | Hardware experiment: 6 agent with 2 dynamic obstacles |

|10 agents under 300ms comm. delay|10 agents with 10 dynamic obstacles under 50ms comm. delay |
| ------------------------- | ------------------------- |
|Simulation: 10 agents under 300ms comm. delay | Simulation: 10 agents with 10 dynamic obstacles under 50ms comm. delay|

## Citation

(RA-L preprint) [Robust MADER: Decentralized Multiagent Trajectory Planner Robust to Communication Delay in Dynamic Environments](https://arxiv.org/abs/2303.06222) ([pdf](https://arxiv.org/abs/2303.06222), [video](https://youtu.be/i1d8di2Nrbs)):

```bibtex
@article{kondo2023robust,
title={Robust MADER: Decentralized Multiagent Trajectory Planner Robust to Communication Delay in Dynamic Environments},
author={Kondo, Kota and Figueroa, Reinaldo and Rached, Juan and Tordesillas, Jesus and Lusk, Parker C and How, Jonathan P},
journal={arXiv preprint arXiv:2303.06222},
year={2023}
}
```

(ICRA Paper) [Robust MADER: Decentralized and Asynchronous Multiagent Trajectory Planner Robust to Communication Delay](https://arxiv.org/abs/2209.13667) ([pdf](https://arxiv.org/abs/2209.13667), [video](https://youtu.be/vH09kwJOBYs)):

```bibtex
@INPROCEEDINGS{10161244,
author={Kondo, Kota and Tordesillas, Jesus and Figueroa, Reinaldo and Rached, Juan and Merkel, Joseph and Lusk, Parker C. and How, Jonathan P.},
booktitle={2023 IEEE International Conference on Robotics and Automation (ICRA)},
title={Robust MADER: Decentralized and Asynchronous Multiagent Trajectory Planner Robust to Communication Delay},
year={2023},
volume={},
number={},
pages={1687-1693},
doi={10.1109/ICRA48891.2023.10161244}}
```

## General Setup

RMADER has been tested with Ubuntu 20.04/ROS Noetic

### Not Using Docker

The backend optimizer is Gurobi. Please install the [Gurobi Optimizer](https://www.gurobi.com/products/gurobi-optimizer/), and test your installation typing `gurobi.sh` in the terminal. Have a look at [this section](#issues-when-installing-gurobi) if you have any issues.

Then simply run this commands:

```bash
cd ~/ && mkdir ws && cd ws && mkdir src && cd src
git clone https://github.com/mit-acl/rmader.git
cd ..
bash src/rmader/install_and_compile.sh
```

The script [install_and_compile.sh](https://github.com/mit-acl/rmader/blob/master/install_and_compile.sh) will install [CGAL v4.12.4](https://www.cgal.org/), [GLPK](https://www.gnu.org/software/glpk/) and other ROS packages (check the script for details). It will also compile the repo. This bash script assumes that you already have ROS installed in your machine.

### Using Docker

Install Docker using [this steps](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository), and remove the need of `sudo` following [these steps](https://docs.docker.com/engine/install/linux-postinstall/). Then follow these steps:

```bash
cd ~/ && mkdir ws && cd ws && mkdir src && cd src
git clone https://github.com/mit-acl/rmader.git
```

For Gurobi, you need to download gurobi.lic file from [Gurobi Web License Manager](https://license.gurobi.com/manager/licenses) (more info [here](https://www.gurobi.com/web-license-service/)). A gurobi.lic not obtained through WLS will **not** work on docker. Place your gurobi.lic in [docker](https://github.com/mit-acl/rmader/docker) folder and execute these commands:

```bash
cd ./rmader/rmader/docker
docker build -t rmader . #This will probably take several minutes
```
Once built,
```
docker run --volume=$PWD/gurobi.lic:/opt/gurobi/gurobi.lic:ro -it rmader
```

Useful Docker commands

```bash
docker container ls -a #Show a list of the containers
docker rm $(docker ps -aq) #remove all the containers
docker image ls #Show a lis of the images
docker image rm XXX #remove a specific image

### lambda machine simulation
docker build -f rmader/rmader/docker/Dockerfile -t rmader .
docker run --cpus=48 --volume=/home/kkondo/rmader_project/rmader_ws/src/rmader/rmader/docker/gurobi.lic:/opt/gurobi/gurobi.lic:ro --volume=/home/kkondo/data:/home/kota/data -it rmader
```

### Running Multiagent Simulations with 10 agents

> **Note**: For a high number of agents, the performance of RMADER improves with the number of CPUs available in your computer.

```
roscd rmader && cd script && python run_rmader.py
```

(if you want to modify the parameters, you can do so in `rmader.yaml`).

## Issues when installing Gurobi:

If you find the error:
```
“gurobi_continuous.cpp:(.text.startup+0x74): undefined reference to
`GRBModel::set(GRB_StringAttr, std::__cxx11::basic_string, std::allocator > const&)'”
```
The solution is:

```bash
cd /opt/gurobi800/linux64/src/build #Note that the name of the folder gurobi800 changes according to the Gurobi version
sudo make
sudo cp libgurobi_c++.a ../../lib/
```
## Credits:
This package uses some C++ classes from the [DecompROS](https://github.com/sikang/DecompROS) repo (included in the `thirdparty` folder).

> **Approval for release**: This code was approved for release by The Boeing Company in [NEED TO FILL].