Skip to content

Latest commit

 

History

History
120 lines (96 loc) · 5.41 KB

README.md

File metadata and controls

120 lines (96 loc) · 5.41 KB

SPACE

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:

Publication/Citation

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.

Experimental Demonstration and Video

Video.mp4

1. Requirements & Environment Setup

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:

  1. ROS Installation: You should have installed a ROS distribution (Noetic) on Ubuntu 20.04.

  2. Workspace Creation: Make sure you have created a ROS workspace. You can follow the ROS tutorial to do this.

  3. **Install rtabmap & kimera-multi ROS Packages **: Install the rtabmap and kimera-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
  4. Install ROS Navigation Stack: You can install the ROS navigation stack using the following command:

    sudo apt-get install ros-noetic-navigation
  5. 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
  6. 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*
  7. 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
  8. Move_Base Navigation:

    sudo apt-get install ros-$ROS_noetic-move-base
  9. Environment Initialization:

    cd ~/catkin_ws/src/
    git clone https://github.com/herolab-uga/SPACE-MAP.git
    catkin_make
    source devel/setup.bash

ROS Nodes

  • 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.

ROS Topics

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.

Launch

Run one of the example launch files included in this ROS package. For instance,

```bash
roslaunch <package_name> 3_house.launch
```

Contributions

  • 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].