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 [email protected]: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 