DiSCo-SLAM is a novel framework for distributed, multi-robot SLAM intended for use with 3D LiDAR observations. The framework is the first to use the lightweight Scan Context descriptor for multi-robot SLAM, permitting a data-efficient exchange of LiDAR observations among robots. Additionally, our framework includes a two-stage global and local optimization framework for distributed multi- robot SLAM which provides stable localization results that are resilient to the unknown initial conditions that typify the search for inter-robot loop closures.
- Here we provide a distributed multi-robot SLAM example for 3 robots, intended for use with the two datasets provided below.
- The local SLAM used in our project is LIO-SAM, please download the modified version of LIO-SAM, and add the DiSCo-SLAM folder into
LIO-SAM\src
.
├──LIO-SAM
├── ...
├── src
│ ├── ...
│ └── DiSCo-SLAM # Folder for multi-robot SLAM
└── ...
git clone https://github.com/yeweihuang/LIO-SAM.git
cd LIO-SAM/src
git clone git@github.com:RobustFieldAutonomyLab/DiSCo-SLAM.git
- Code from Scan Context is used for feature description.
- We use code from PCM for outlier detection.
- Same dependencies as LIO-SAM:
- ROS Melodic
- gtsam 4.0.2 (Georgia Tech Smoothing and Mapping library)
- Dependency for Scan Context:
To run the KITTI08 dataset, change line 9 & 10 in launch/run.launch from
<rosparam file="$(find lio_sam)/config/params.yaml" command="load" />
<rosparam file="$(find lio_sam)/src/DiSCo-SLAM/config/mapfusion.yaml" command="load"/>
to
<rosparam file="$(find lio_sam)/config/params_k.yaml" command="load" />
<rosparam file="$(find lio_sam)/src/DiSCo-SLAM/config/mapfusion_k.yaml" command="load"/>
cd ~/catkin_ws/src
git clone
cd ..
catkin_make
roslaunch lio_sam run.launch
rosbag play your_bag_name.bag