luigifreda / 3dmr

3D Multi-Robot Exploration, Patrolling and Navigation.
GNU General Public License v3.0
121 stars 14 forks source link
multi-robot multi-robot-exploration multi-robot-navigation multi-robot-path-planning multi-robot-patrolling

3DMR

3D Multi-Robot Exploration, Patrolling and Navigation.

Maintainer: Luigi Freda

The 3DMR framework provides tools for 3D multi-robot exploration, patrolling and navigation tasks with different robots under different simulators. It provides the core C++ implementation behind our papers:

This repository allows testing our proposed multi-robot strategies within V-REP and gazebo. It extends and improves our previous framework 3dpatrolling. Here, you can find a list of new features we added.

V-REP simulation 3d exploration V-REP simulation 3D exploration

Main features

Tasks: 3D exploration, 3D patrolling, and 3D navigation.

3DMR system

Robots: tracked UGV, jackal UGV, pioneer 3-DX, and AscTec Firefly.

TRADR system TRADR system

TRADR system TRADR system

TRADR system TRADR system

Simulators: V-REP and gazebo.

GUIs: our PyQt GUIs offer a convenient entry point for quickly launching exploration, patrolling and navigation systems.


Prerequisites

3DMR requires ROS noetic under Ubuntu 20.04. Python3 is required in order to start our PyQt GUIs. If you do not have this Ubuntu version, you can use rosdocker.

Quick install and build

Here, you can find a quick install procedure (tested under Ubuntu 20.04). Open a new terminal and get into the root folder of this repo. Run the following commands:

If you do not have Ubuntu 20.04, you can use rosdocker.

Refer to INSTALL.md if you need a manual installation.


Repo organization

Workspaces

3DMR is a stack of ROS packages organized in different workspace folders (with suffix _ws):

In each workspace, you can use the scriptcompile_with_catkin_build.sh to separately build the workspace with catkin build.

Main scripts

Open a new terminal and from the root folder of this repo you can:

See the GUIs section below on how to use our main_*.py GUI scripts.


3D Multi-robot exploration

Refer to this README.exploration.md for testing the exploration system.

V-REP simulation 3d exploration V-REP simulation 3D exploration


3D Multi-robot patrolling

Refer to this README.patrolling.md for testing the patrolling system.

V-REP simulation 3dpatrolling V-REP simulation 3dpatrolling TRADR system


3D Multi-robot path planner

RVIZ and V-REP

GUIs

We have different PyQt GUIs for launching exploration, patrolling and path planner systems on the different robot systems. You can run:

RVIZ and V-REP RVIZ and V-REP RVIZ and V-REP RVIZ and V-REP

The buttons and tooltips should be self-explanatory. Start playing with them and refer to the following README files for further details: - [README.exploration.md](./README.exploration.md) - [README.navigation.md](./README.navigation.md) - [README.patrolling.md](./README.patrolling.md) ---- ## SLAM integration On the TRADR tracked robots, we initially used the LIDAR SLAM frameworks [laser-slam](https://github.com/ethz-asl/laser_slam) and [segmap](https://github.com/ethz-asl/segmap). On the pioneer 3-DX robots with RGBD cameras, we used [RTAB-Map](http://wiki.ros.org/rtabmap). If you have robots with 3D LIDARs, you may want to take a look at this cool paper for alternative SLAM tools: *[Present and Future of SLAM in Extreme Underground Environments](https://arxiv.org/abs/2208.01787)* ---- ## Project webpages ### TRADR EU project This work started during the TRADR EU project. You can find a presentation of the TRADR project on its [website](https://www.tradr-project.eu/). ### 3D Patrolling project Videos and further information about our previous [3dpatrolling](https://github.com/luigifreda/3dpatrolling) framework can be found on our [**3D patrolling** project webpage](https://sites.google.com/a/dis.uniroma1.it/3d-cc-patrolling/).

TRADR system TRADR system TRADR system

---- ## License The **3DMR** stack contains different ROS packages. Each package comes with its license. Where nothing is specified, a [GPLv3 license](./license/license-gpl.txt) applies to the software. Please cite our works (referred above) if you use our system in your projects. ---- ## Contributing to 3DMR You can contribute to the code base by using pull requests, reporting bugs, leaving comments, and proposing new features through issues. Feel free to get in touch: *luigifreda(at)gmail(dot)com*. Thank you! ---- ## Credits * Some of the packages in the folders `nav_ws/src/robot` and `nav_ws/src/msgs`have been developed by the [TRADR team](https://www.luigifreda.com/wp-content/uploads/2018/04/IMG-20180321-WA0009-1024x768.jpg). Thanks to all the guys who shared with us cold tents, hot coffee and wonderful life moments during TRADR demos, integrations, exercises and reviews! * We implemented our patrolling agent in the ROS package `patrolling3d_sim`. We used the package [patrolling_sim](http://wiki.ros.org/patrolling_sim) as a starting point (further details in our [3D patrolling paper](http://www.luigifreda.com/pubs/Freda%20-%203D%20Multi-Robot%20Patrolling%20with%20a%20Two-Level%20Coordination%20Strategy%20-%20AURO%202018%20-%20pub.pdf)). We would like to thank the Authors for their great work. * Our exploration agent is implemented in the ROS package `expl_planner`. The package [nbvplanner](https://github.com/ethz-asl/nbvplanner) was used as a starting point (further details in our [3D exploration paper](https://arxiv.org/pdf/2307.02417.pdf)). We sincerely express our gratitude to the Authors for their great work. * The jackal workspace contains tools from https://github.com/jackal/jackal. Many thanks to the Authors of that repository.