VIS4ROB-lab / fast_multi_robot_exploration

"Fast Multi-UAV Decentralized Exploration of Forests", RAL 2023
81 stars 12 forks source link

Fast Multi-Robot Decentralized Exploration of Forests

If you use this code in your academic work, please cite (PDF):

@inproceedings{bartolomei2023multi,
  title={Fast Multi-UAV Decentralized Exploration of Forests},
  author={Bartolomei, Luca and Teixeira, Lucas and Chli, Margarita},
  booktitle={IEEE Robotics and Automation Letters},
  year={2023}
}

This project is released under a GPLv3 license.

Video

Mesh

Installation

The pipeline has been built and tested in Ubuntu 20.04 LTS and ROS Noetic.

Once the dependencies are installed, the code can be compiled as follows:

$ cd catkin_ws
$ source /opt/ros/noetic.bash
$ catkin_make

Valid models

The list of valid models can be found (as series of yaml files) in exploration_manager/config/maps. The names of the models still need to be changed to match the ones in the paper. For the moment, this list can be used:

Run Unit Tests

To run Unit Tests, run the following command:

$ catkin_make run_tests_exploration_manager

Running commands

To run an experiment with a planner, run the following commands in separate terminals (possible planner_type: fame and racer):

$ roscore
$ roslaunch exploration_manager rviz.launch
$ roslaunch exploration_manager swarm_exploration.launch model:=${model_name} drone_num:=${num_drones} planner_type:=fame

To start the exploration, use the 2D Nav Goal tool in Rviz.

Series of experiments

A sequence of experiments in all the environments can be launch by running the scripts in automatic_runs. In this case, the experiments will be trigger automatically and a logging node will dump all the statistics.

Note: The experiments with 8 and 10 agents were run on EC2 instance on the cloud. The type of the instance was m4.4xlarge (16-core CPU and 64GB of RAM)

Evaluation of series of experiments

To evaluate the results of an experiment, run the scripts here:

To evaluate a folder with runs in multiple models, use the script in automatic_runs/evaluation:

$ cd automatic_runs/evaluation
$ . evaluate_multiple_models.sh ${path_to_results_folder} ${num_runs_per_exp}

Generate maps

Run the following launch file to create a random map with 4 areas with different densities:

$ roslaunch exploration_manager multi_density.launch

Run the following launch file to create a random map:

$ roslaunch exploration_manager gen_map_denser.launch

Acknowledgments

Our software is based the open-source project RACER.

Contributing

Contributions that help to improve the code are welcome. In case you want to contribute, please adapt to the Google C++ coding style and run bash clang-format-all . on your code before any commit.