Awesome
3dpatrolling
Authors: Luigi Freda, Mario Gianni, Fiora Pirri, Abel Gawel, Renaud Dubé, Roland Siegwart and Cesar Cadena
Maintainer: Luigi Freda
This repository provides part of the C++ implementation behind our paper titled 3D Multi-Robot Patrolling with a Two-Level Coordination Strategy. The software allows testing the proposed multi-robot strategy within a V-REP simulation environment. The multi-robot laser SLAM implementation is available here.
NEW: Check out our new paper and the related project 3DMR: 3D Multi-Robot Exploration, Patrolling, and Navigation. 3DMR extends and improves 3dpatrolling. Here, you can find a list of new features we added.
Related publications
Please cite this work if you make use of our system in your projects:
3D Multi-Robot Patrolling with a Two-Level Coordination Strategy
L. Freda, M. Gianni, F. Pirri, A. Gawel, R. Dubé, R. Siegwart, C. Cadena
Autonomous Robots, Springer, 2018.
Project webpage
Videos and further information can be found on the project webpage.
<p align="center"> <img src="images/two-floor-ring.gif" alt="V-REP simulation 3dpatrolling" height="150" border="1" /> <img src="images/3d_patrolling_corridor.png" alt="V-REP simulation 3dpatrolling" height="150" border="1" /> <img src="images/3d_patrolling.png" alt="V-REP simulation 3dpatrolling" height="150" border="1" /> </p>Prerequisites
3dpatrolling requires ROS. We designed and tested the framework under Ubuntu 14.04. We recently ported it on Ubuntu 16.04 and 18.04. It should be easy to compile the framework in other platforms. NEW: check out our new project 3DMR for Ubuntu 20.04 support.
How to install and compile 3dpatrolling
Here you can find a quick install procedure (tested under Ubuntu 16.04 and 18.04). Open a new terminal and get into the root folder of this repo. Run the following commands:
- install V-REP, ROS dependencies and everything is required
$ ./install.sh
- compile the two workspaces
mapping_ws
andpatrolling_ws
$ ./compile-all.sh
- source the workspaces by using
$ source source-all.bash
Now, you're ready to test the patrolling system or the path planner (see the next sections). If something goes wrong, please, sumbit an issue.
You can find some manual installation details in the file INSTALL.md.
Overview
3dpatrolling is a stack of ROS packages organized in two main workspace folders (with suffix _ws
):
mapping_ws
: itssrc
folder collects packages used for volumetric mappingpatrolling_ws
: itssrc
folder collects the following subfolders:msgs
(custom message descriptions)multirobot
(patrolling)nav
(path planning and navigation)robot
(robot description and low level processes)vrep
(vrep tools)
Main scripts
Open a new terminal and from the root folder of this repo you can:
-
source the workspaces by using the command
$ source source-all.bash
-
clean the workspaces by running
$ ./clean-all.sh
-
compile all the workspaces
$ ./compile-all.sh
-
launch the patrolling or the path planner systems by using a PyQt GUI (python3 required, please read the documentation below before starting)
$ ./main.py
Once you have sourced the workspaces, you're ready to test the patrolling system and the path planner (see the next sections).
Test the patrolling system
See this README.md file.
<p align="center"> <img src="images/animated.gif" alt="V-REP simulation 3dpatrolling" width="300" border="1" /> <img src="images/crossroad.gif" alt="V-REP simulation 3dpatrolling" width="300" border="1" /> </p>Test the path planner
See this README.md file.
<center> <img src="images/navigation.png" alt="RVIZ and V-REP" width="800" border="1" /> </center>3dpatrolling Qt GUI
You can launch the patrolling system or the path planner system by using the 3dpatrolling PyQt GUI. Open a new terminal, enter in the root folder of the repo 3dpatrolling
and run:
$ ./main.py
Read the patrolling README.md and the path planner README.md for further details on the available options.
License
The 3dpatrolling stack contains different ROS packages. Each package comes with its own license. Where nothing is specified, a GPLv3 license applies to the software.
Contributing to 3dpatrolling
We would be very grateful if you would contribute to the code base by reporting bugs, leaving comments and proposing new features through issues and pull requests. Please feel free to get in touch at freda(at)diag(dot)uniroma1(dot)it. Thank you!
Note: the 3dpatrolling software was extracted from the private TRADR repository. In order to prepare and open source the patrolling system (reducing dependencies and make it a self-contained framework), a substantial amount of refactoring was carried out and some functionalities were rewritten. Although great care was taken during this process, it is possible we introduced performance regressions and these have not been discovered yet.
Credits
-
Some of the packages in the folders
patrolling_ws/src/robot
andpatrolling_ws/src/msgs
have been developed by the TRADR team. Thanks to all the guys that 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 as a starting point. We would like to thank the Authors for their great work.