MR-GMMapping

This is the open-source project MR-GMMapping, a communication efficient Multi-Robot GMM-based Mapping system.

The related paper "MR-GMMapping: Communication Efficient Multi-Robot Mapping System via Gaussian Mixture Model" is submitted to the IEEE Robotics and Automation Letters (RA-L) with the 2022 International Conference on Robotics and Automation(ICRA 2022).

The video demo is resleased at bilibili (Chinese Youtube) and Youtube

Platform

  • Multi-robots with NVIDIA Jetson TX2, Intel RealSense T265, and depth camera D435i
  • ubuntu 18.04 (bash)
  • ROS melodic
  • python2

Dependency

Pytorch for Place Recognition

pip install torch torchvision

Pre-trained model is available here Then change the regarding path of model13.ckpt in MapBuilderNode.py.

Python-PCL

Useful reference here.

GTSAM

git clone https://bitbucket.org/gtborg/gtsam.git
mkdir build
cd build
cmake .. -DGTSAM_INSTALL_CYTHON_TOOLBOX=on
make check
make install
cd cython
sudo python setup.py install

Other dependency

sudo apt install ros-melodic-tf2-ros
pip install autolab_core
pip install sklearn
pip install future
pip install transforms3d
pip install pygraph

For ROS libraries, you can use apt install ros-melodic-(missing library) to install the missing libraries.

Datasets

The ROS bags of the multi-robot simulators can be downloaded here.

You can also use the keyboard to control the robots in the Gazebo simulator by running

roslaunch turtlebot3sim small_env_two_robots.launch 
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Usage Example

Installation

download the repo and then put it in your ros package

catkin_make
source <repo_path>/devel/setup.bash

Single Robot Map Building

roslaunch gmm_map_python visualgmm_realsence.launch

Multi-robot Relative Pose Estimation

roslaunch gmm_map_python visualgmm_realsence_2robot.launch

If you want to run this system with your simulator, there are three params need to adjust for better performance:

  • match_thr: small match_thr reduce the probability of scene mismatch。
  • fitness_thr: smaller fitness_thr leads to a better global map accuracy after the first map merging.
  • new_self_submap_count: adjust according to the camera parameters. Larger new_self_submap_count is better for place recognition, but will bring longer mapping delay.