Giter Site home page Giter Site logo

jackfodtik / fast_multi_robot_exploration Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vis4rob-lab/fast_multi_robot_exploration

0.0 0.0 0.0 14.81 MB

"Fast Multi-UAV Decentralized Exploration of Forests", RAL 2023

Shell 1.06% C++ 46.83% Python 6.72% C 23.39% Common Lisp 2.80% Fortran 0.02% CSS 0.22% Cuda 0.71% Makefile 12.36% HTML 0.01% CMake 5.88%

fast_multi_robot_exploration's Introduction

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.

  • Install dependencies: sudo apt install libarmadillo-dev libelf-dev libdw-dev python3-wstool python3-catkin-tools python3-pip
  • Install python dependencies: pip install pandas
  • Install NLopt (check here):
    $ git clone  https://github.com/stevengj/nlopt.git --branch v2.7.1
    $ cd nlopt && mkdir build && cd build
    $ cmake ..
    $ make -j8
    $ sudo make install
    
  • Install dependencies as described here:
    $ wget http://akira.ruc.dk/~keld/research/LKH-3/LKH-3.0.6.tgz
    $ tar xvfz LKH-3.0.6.tgz
    $ cd LKH-3.0.6
    $ make
    $ sudo cp LKH /usr/local/bin
    $ cd ..
    $ rm LKH-3.0.6.tgz
    
  • Create a catkin workspace:
     $ mkdir -p catkin_ws/src
     $ cd catkin_ws
     $ catkin init
    

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:

  • forest_50x50_01_200.pcd corresponds to Sparse Forest (0.1 trees / m^2)
  • forest_50x50_01_300.pcd corresponds to Mid-density Forest (0.15 trees / m^2)
  • forest_50x50_100_denser_3.pcd corresponds to Dense Forest (0.2 trees / m^2)
  • forest_4_densities_50_40_20_10.pcd corresponds to Multi-density Forest

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:

  • Evaluate a series of runs: $ python3 plot_series.py (use flag -h to check how to pass arguments)

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.

fast_multi_robot_exploration's People

Contributors

lucabartolomei avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.