This repository contains the ROS package that implements the works from the algorithm "SPACE: 3D Spatial Co-operation and Exploration Framework for Robust Mapping and Coverage with Multi-Robot Systems". The following figure shows the conceptual overview of SPACE:
Preprint is available at https://arxiv.org/abs/2411.02524
If you use this work, please cite our paper as Ghanta, S. K., & Parasuraman, R. (2024). SPACE: 3D Spatial Co-operation and Exploration Framework for Robust Mapping and Coverage with Multi-Robot Systems. arXiv preprint arXiv:2411.02524.
Video.mp4
The package has been tested on ROS Noetic for both simulated and hardware Turtlebot3 robot (waffle) & Turtlebot2 (2e and 2i). The following requirements are needed before installing the package:
-
ROS Installation: You should have installed a ROS distribution (Noetic) on Ubuntu 20.04.
-
Workspace Creation: Make sure you have created a ROS workspace. You can follow the ROS tutorial to do this.
-
**Install
rtabmap
&kimera-multi
ROS Packages **: Install thertabmap
andkimera-multi
package with the following command:sudo apt-get install ros-noetic-rtabmap-ros mkdir -p catkin_ws/src cd catkin_ws/src/ git clone [email protected]:MIT-SPARK/Kimera-Multi.git kimera_multi sudo bash kimera_multi/install/dependencies.sh vcs import . --input kimera_multi/kimera_multi.repos --recursive cd .. catkin config -a --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGTSAM_TANGENT_PREINTEGRATION=OFF -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DOPENGV_BUILD_WITH_MARCH_NATIVE=OFF catkin build --continue -s
-
Install ROS Navigation Stack: You can install the ROS navigation stack using the following command:
sudo apt-get install ros-noetic-navigation
-
Python Modules Installation: Make sure python version is 3.8+. Install the following Python modules using
pip
:pip install numpy pandas matplotlib open3d opencv-python scikit-learn
-
Turtlebot3 Installation:
cd ~/catkin_ws/src/ git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git echo "export TURTLEBOT3_MODEL=waffle" >> ~/.bashrc source ~/.bashrc sudo apt-get install ros-noetic-turtlebot3*
-
AWS Gazebo Worlds Installation:
cd ~/catkin_ws/src/ https://github.com/aws-robotics/aws-robomaker-small-house-world.git https://github.com/aws-robotics/aws-robomaker-bookstore-world.git
-
Move_Base Navigation:
sudo apt-get install ros-$ROS_noetic-move-base
-
Environment Initialization:
cd ~/catkin_ws/src/ git clone https://github.com/herolab-uga/SPACE-MAP.git catkin_make source devel/setup.bash
- Gazebo Simulation: Launches simulation environments like AWS house or bookstore (mentioned in .launch files).
- Robot State Publisher: Publishes robot state from URDF at a frequency of 100 Hz.
- Model Spawner: Places TurtleBot3 models in Gazebo at specified coordinates.
- RTAB-Map SLAM: SLAM system using RGB-D input, operates at specified frequencies and saves data to a path.
- RGBD Synchronization: Synchronizes RGB and depth images for SLAM with adjustable settings.
- RTAB-Map Visualization: Visualization node for RTAB-Map outputs and odometry.
- Dynamic Robot Filters: The Dynamic Robot Filters subsribes to global odometry and filters the dynamic feature for mapping.
- Map Merger: Merge all the grid maps with unknown init positions
- Move Base: Manages path planning and navigation using local and global costmaps.
- Spatial Map Merger: Combines spatial maps from individual robots into a comprehensive global map.
- Frontier Assigner: Assigns exploration tasks to robots based on predefined rates.
robot_namespace = {tb3_0, tb3_1, tb3_2, tb3_3, tb3_4, tb3_5} target_name = namespace of robots which is in field-of-view
${robot_namespace}/odom
: Provides odometry data.${robot_namespace}/cmd_vel
: Issues velocity commands.${robot_namespace}/cloud_map
: Outputs RTABMap individual maps.${robot_namespace}/scan
: Laser scan data for navigation.${robot_namespace}/camera/rgb/image_raw
&/camera/depth/image_raw
: Image streams from robot cameras.${robot_namespace}/camera/rgb/camera_info
: Metadata for the RGB cameras.{robot_namespace}/move_base
: Each Robot Move Base server for navigation/total_cloud_map
: Outputs spatial merged map./total_map
: Outputs merged 2D grid map./frontier_marker
: 3D & 2D Spatial Frontiers/{target_name}/masker/masked_image_raw
: Features are masked and republished for mapping.
Run one of the example launch files included in this ROS package. For instance,
```bash
roslaunch <package_name> 3_house.launch
```
- Sai Krishna Ghanta - PhD Candidate
- Dr. Ramviyas Parasuraman - Lab Director
School of Computing, University of Georgia.
For further information, please contact Dr. Ramviyas Parasuraman at [email protected].