• Stars
    star
    479
  • Rank 91,752 (Top 2 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created almost 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Trajectory Planner in Multi-Agent and Dynamic Environments

MADER: Trajectory Planner in Multi-Agent and Dynamic Environments

Accepted for publication in the IEEE Transactions on Robotics (T-RO)

Single-Agent Multi-Agent
MADER: Trajectory Planner in Multi-Agent and Dynamic Environments MADER: Trajectory Planner in Multi-Agent and Dynamic Environments
MADER: Trajectory Planner in Multi-Agent and Dynamic Environments MADER: Trajectory Planner in Multi-Agent and Dynamic Environments

Citation

When using MADER, please cite MADER: Trajectory Planner in Multi-Agent and Dynamic Environments (pdf, video):

@article{tordesillas2020mader,
  title={{MADER}: Trajectory Planner in Multi-Agent and Dynamic Environments},
  author={Tordesillas, Jesus and How, Jonathan P},
  journal={IEEE Transactions on Robotics},
  year={2021},
  publisher={IEEE}
}

General Setup

Not Using Docker

The backend optimizer is Gurobi. Please install the Gurobi Optimizer, and test your installation typing gurobi.sh in the terminal. Have a look at this section if you have any issues.

Then simply run this commands:

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

The script install_and_compile.sh will install CGAL v4.12.4, 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, and remove the need of sudo following these steps. Then follow these steps:

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

For Gurobi, you need to download gurobi.lic file from Gurobi Web License Manager (more info here). A gurobi.lic not obtained through WLS will not work on docker. Place your gurobi.lic in docker folder and execute these commands:

cd ./mader/mader/docker
docker build -t mader . #This will probably take several minutes

Once built, docker run --volume=$PWD/gurobi.lic:/opt/gurobi/gurobi.lic:ro -it mader

Useful Docker commands
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

Running Simulations

Single-agent

roslaunch mader single_agent_simulation.launch #If you are using docker, you may want to add rviz:=false (to disable the visualization)

Now you can press G (or click the option 2D Nav Goal on the top bar of RVIZ) and click any goal for the drone.

With Docker

In Docker, you can do this by running docker exec -it [ID of the container] bash in a new terminal (you can find the ID with docker container ls -a), and then running rostopic pub /SQ01s/term_goal geometry_msgs/PoseStamped '{header: {stamp: now, frame_id: "world"}, pose: {position: {x: 10, y: 0, z: 1}, orientation: {w: 1.0}}}'

To run many single-agent simulations in different random environments, you can go to the scripts folder and execute python run_many_sims_single_agent.py.

Multi-agent

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

Open four terminals and run these commands:

roslaunch mader mader_general.launch type_of_environment:="dynamic_forest"
roslaunch mader many_drones.launch action:=start
roslaunch mader many_drones.launch action:=mader
roslaunch mader many_drones.launch action:=send_goal

(if you want to modify the drone radius, you can do so in mader.yaml). For the tables shown in the paper, the parameters (drone radius, max vel,...) used are also detailed in the corresponding section of the paper

Octopus Search

You can run the octopus search with a dynamic obstacle by simply running

roslaunch mader octopus_search.launch

And you should obtain this:

(note that the octopus search has some randomness in it, so you may obtain a different result each time you run it).

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<char,
std::char_traits<char>, std::allocator<char> > const&)'”

The solution is:

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 repo (included in the thirdparty folder).

Note

We strongly recommend the use of Gurobi as the backend optimizer. Alternatively, you can use NLOPT by setting USE_GUROBI to OFF in the CMakeList.txt, and then running bash src/mader/install_nlopt.sh before running bash src/mader/install_and_compile.sh.


Approval for release: This code was approved for release by The Boeing Company in December 2020.

More Repositories

1

faster

3D Trajectory Planner in Unknown Environments
C++
949
star
2

cadrl_ros

ROS package for dynamic obstacle avoidance for ground robots trained with deep RL
Python
572
star
3

gym-collision-avoidance

OpenEdge ABL
246
star
4

clipper

graph-theoretic framework for robust pairwise data association
C++
219
star
5

panther

Perception-Aware Trajectory Planner in Dynamic Environments
C++
187
star
6

dpgo

Distributed Pose Graph Optimization
C++
181
star
7

mppi_numba

A GPU implementation of Model Predictive Path Integral (MPPI) control that uses a probabilistic traversability model for planning risk-aware trajectories.
Jupyter Notebook
179
star
8

rl_collision_avoidance

Training code for GA3C-CADRL algorithm (collision avoidance with deep RL)
Python
118
star
9

rmader

Decentralized Multiagent Trajectory Planner Robust to Communication Delay
C++
72
star
10

minvo

Simplexes with Minimum Volume Enclosing Polynomial Curves
MATLAB
71
star
11

aclswarm

MIT ACL distributed formation flying using multirotors
C++
67
star
12

nfl_veripy

Formal Verification of Neural Feedback Loops (NFLs)
Python
63
star
13

dpgo_ros

ROS wrapper for distributed pose graph optimization
C++
59
star
14

deep_panther

C++
51
star
15

clear

CLEAR algorithm for multi-view data association
MATLAB
35
star
16

planning

List of planning algorithms developed at MIT-ACL
34
star
17

puma

PUMA: Fully Decentralized Uncertainty-aware Multiagent Trajectory Planner with Real-time Image Segmentation-based Frame Alignment
C++
27
star
18

fastsam_ros

ROS wrapper for FastSAM, with docker
Python
17
star
19

separator

Linear separability (via planes) of two sets of 3D points
C++
12
star
20

dc2g

Planning Beyond the Sensing Horizon Using a Learned Context
Python
10
star
21

gym-minigrid

Python
10
star
22

SOS-Match

JavaScript
10
star
23

yolov7_ros

ROS wrapper for YOLOv7, with docker
Python
9
star
24

dc2g_public

Deep Cost-to-Go Planning Algorithm (IROS '19)
9
star
25

iscp_path_planner

Iterative sequential convex programming path planner, from Steven and Mark's ICRA 2015 paper
Python
4
star
26

panther_extra

Python
1
star
27

murp-datasets

Jupyter Notebook
1
star
28

motlee

Multiple Object Tracking with Localization Error Elimination
Python
1
star
29

mit-acl.github.io

SCSS
1
star