Ground-Fusion++: a modular sensor-fusion SLAM system(IROS2025)
C++
226
157 commits
updated Aug 8, 2026
💎 Project Lead: Jie Yin 殷杰 🌐 [Website] 📝 [Paper] ➡️ [Dataset] ⭐️ [Pre Video] 🔥 [News]
Core contributors: Deteng Zhang, Junjie Zhang, Yihong Tian, Jie Yin*(Project Lead)
🔥2026/06/14: We are excited to release a preview version of Ultra-Fusion system,which unifies WIO, VIO, LIO, and LVIO in one configurable optimization framework, with optional wheel/GNSS fusion and online calibration.
2025.06.16: Our paper has been accepted to IROS 2025!
🔍 For those interested in accessing the unreleased M3DGR sequences in advance, we recommend first thoroughly evaluating your methods on the already released sequences. After that, feel free to contact us at zhangjunjie587@gmail.com to request early access for research purposes.
This repository contains the official implementation of our IROS 2025 paper:
"Towards Robust Sensor-Fusion Ground SLAM: A Comprehensive Benchmark and a Resilient Framework"
In this work, we propose a complete solution for robust SLAM on ground robots operating under degraded conditions. Our key contributions are:
Our focus is not on theoretical novelty, but on building a resilient and modular system that is simple yet effective, serving as a practical and extensible baseline for real-world deployment and future research.
Tested on Ubuntu 20.04(with ROS Noetic and OpenCV4).
This package requires Eigen 3.3.7, Ceres 1.14,Sophus, Sophus_no_template, fmt and Livox-SDK. We provide thridparty folder with all the third-party libraries, you can download it and install:
cd thirdparty
sudo chmod +x ./thirdparty/install.sh
sudo ./thirdparty/install.sh
cd ~/catkin_ws/src
git clone https://github.com/sjtuyinjie/Ground-Fusion2.git
cd ../..
catkin_make
We provide a Dockerfile so you can easily replicate our setup. Below are the steps to build the Docker image.
Install docker and nvidia-docker2. You can find tutorials like this.
Pull the ROS image in advance.
sudo systemctl start docker
sudo docker pull j3soon/ros-noetic-desktop-full
Pull and build the Docker image.
cd ~/catkin_ws/src
git clone https://github.com/sjtuyinjie/Ground-Fusion2.git
cp Ground-Fusion++/docker/{Dockerfile,ros.asc} ..
cd ..
wget 'https://drive.google.com/uc?id=1umjPqhYcBjMMFPogh5NlPa7JLTkwftNW&export=download' && unzip *.zip -d . && rm *.zip
sudo docker build -t groundfusion2 .
Start the container and mount the data directory.
sudo xhost +local:docker
sudo docker run -it --rm \
--env="DISPLAY=$DISPLAY" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--device=/dev/dri \
-v ./data:/root/data \
groundfusion2 /bin/bash
Change the ./data to the path where the rosbag is actually stored.
Running.
The one container terminal and type:
cd /root/ws
export MESA_GL_VERSION_OVERRIDE=3.3
source devel/setup.bash
roslaunch groundfusion2 run_m3dgr.launch
Open another container terminal:
cd /root/data
rosbag play Dynamic01.bag
Here you can find a more detailed docker build tutorial.
Download M3DGR dataset and give a star.
# [launch] open a terminal and type:
source devel/setup.bash
roslaunch groundfusion2 run_m3dgr.launch
(roslaunch groundfusion2 run_m3dgr_avia.launch # Use AVIA)
Download M2DGR-Plus dataset and give a star.
# [launch] open a terminal and type:
source devel/setup.bash
roslaunch groundfusion2 run_m2dgrp.launch
If you want to see the switching situation or the mesh quality is poor, you can run the following command to check which subsystem has the problem. Especially when you use AVIA lidar indoors, this often happens.
Corridor01* of M3DGR, use MID360
|
Dynamic01 of M3DGR, use AVIA
|
Elevator01 of M3DGR, use MID360
|
Elevator01 of M3DGR, use AVIA
|
🔵Blue is the Fusion path of Ground-Fusion++, 🟢Green is the LIO submodule path, and 🔴Red is the VIO submodule path (*: This sequence comes from Table VIII of the paper).
# [launch] open a terminal and type:
source devel/setup.bash
rosrun rviz rviz -d $(rospack find groundfusion2)/launch/rviz.rviz
⚠️ Known Issues:
- In most sequences, our provided configurations can directly reproduce the results reported in the paper. However, in certain cases, parameter fine-tuning may be required for optimal performance
- The mapping thread is relatively computationally intensive and may require a good machine to run smoothly.
- 💡Our team is actively working on a next-generation version of Ground-Fusion++. Stay tuned for updates and follow our latest research!!
- Open to collaboration! If you are willing to develop a robust and resilient SLAM system with super advanced performance and contribute to the open-source community, please contact us at robot_yinjie@outlook.com
@article{zhang2025towards,
title={Towards Robust Sensor-Fusion Ground SLAM: A Comprehensive Benchmark and A Resilient Framework},
author={Zhang, Deteng and Zhang, Junjie and Sun, Yan and Li, Tao and Yin, Hao and Xie, Hongzhao and Yin, Jie},
journal={arXiv preprint arXiv:2507.08364},
year={2025}
}
@inproceedings{yin2024ground,
title={Ground-fusion: A low-cost ground slam system robust to corner cases},
author={Yin, Jie and Li, Ang and Xi, Wei and Yu, Wenxian and Zou, Danping},
booktitle={2024 IEEE International Conference on Robotics and Automation (ICRA)},
pages={8603--8609},
year={2024},
organization={IEEE}
}
@article{yin2021m2dgr,
title={M2dgr: A multi-sensor and multi-scenario slam dataset for ground robots},
author={Yin, Jie and Li, Ang and Li, Tao and Yu, Wenxian and Zou, Danping},
journal={IEEE Robotics and Automation Letters},
volume={7},
number={2},
pages={2266--2273},
year={2021},
publisher={IEEE}
}
We appreciate all contributions to improving Ground-Fusion++.
|
|
|---|
Thanks to everyone for supporting this project.
C++
71.0%
C
23.4%
Makefile
2.5%
CMake
1.5%
Ground-Fusion++: a modular sensor-fusion SLAM system(IROS2025)
C++
226
157 commits
updated Aug 8, 2026
💎 Project Lead: Jie Yin 殷杰 🌐 [Website] 📝 [Paper] ➡️ [Dataset] ⭐️ [Pre Video] 🔥 [News]
Core contributors: Deteng Zhang, Junjie Zhang, Yihong Tian, Jie Yin*(Project Lead)
🔥2026/06/14: We are excited to release a preview version of Ultra-Fusion system,which unifies WIO, VIO, LIO, and LVIO in one configurable optimization framework, with optional wheel/GNSS fusion and online calibration.
2025.06.16: Our paper has been accepted to IROS 2025!
🔍 For those interested in accessing the unreleased M3DGR sequences in advance, we recommend first thoroughly evaluating your methods on the already released sequences. After that, feel free to contact us at zhangjunjie587@gmail.com to request early access for research purposes.
This repository contains the official implementation of our IROS 2025 paper:
"Towards Robust Sensor-Fusion Ground SLAM: A Comprehensive Benchmark and a Resilient Framework"
In this work, we propose a complete solution for robust SLAM on ground robots operating under degraded conditions. Our key contributions are:
Our focus is not on theoretical novelty, but on building a resilient and modular system that is simple yet effective, serving as a practical and extensible baseline for real-world deployment and future research.
Tested on Ubuntu 20.04(with ROS Noetic and OpenCV4).
This package requires Eigen 3.3.7, Ceres 1.14,Sophus, Sophus_no_template, fmt and Livox-SDK. We provide thridparty folder with all the third-party libraries, you can download it and install:
cd thirdparty
sudo chmod +x ./thirdparty/install.sh
sudo ./thirdparty/install.sh
cd ~/catkin_ws/src
git clone https://github.com/sjtuyinjie/Ground-Fusion2.git
cd ../..
catkin_make
We provide a Dockerfile so you can easily replicate our setup. Below are the steps to build the Docker image.
Install docker and nvidia-docker2. You can find tutorials like this.
Pull the ROS image in advance.
sudo systemctl start docker
sudo docker pull j3soon/ros-noetic-desktop-full
Pull and build the Docker image.
cd ~/catkin_ws/src
git clone https://github.com/sjtuyinjie/Ground-Fusion2.git
cp Ground-Fusion++/docker/{Dockerfile,ros.asc} ..
cd ..
wget 'https://drive.google.com/uc?id=1umjPqhYcBjMMFPogh5NlPa7JLTkwftNW&export=download' && unzip *.zip -d . && rm *.zip
sudo docker build -t groundfusion2 .
Start the container and mount the data directory.
sudo xhost +local:docker
sudo docker run -it --rm \
--env="DISPLAY=$DISPLAY" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--device=/dev/dri \
-v ./data:/root/data \
groundfusion2 /bin/bash
Change the ./data to the path where the rosbag is actually stored.
Running.
The one container terminal and type:
cd /root/ws
export MESA_GL_VERSION_OVERRIDE=3.3
source devel/setup.bash
roslaunch groundfusion2 run_m3dgr.launch
Open another container terminal:
cd /root/data
rosbag play Dynamic01.bag
Here you can find a more detailed docker build tutorial.
Download M3DGR dataset and give a star.
# [launch] open a terminal and type:
source devel/setup.bash
roslaunch groundfusion2 run_m3dgr.launch
(roslaunch groundfusion2 run_m3dgr_avia.launch # Use AVIA)
Download M2DGR-Plus dataset and give a star.
# [launch] open a terminal and type:
source devel/setup.bash
roslaunch groundfusion2 run_m2dgrp.launch
If you want to see the switching situation or the mesh quality is poor, you can run the following command to check which subsystem has the problem. Especially when you use AVIA lidar indoors, this often happens.
Corridor01* of M3DGR, use MID360
|
Dynamic01 of M3DGR, use AVIA
|
Elevator01 of M3DGR, use MID360
|
Elevator01 of M3DGR, use AVIA
|
🔵Blue is the Fusion path of Ground-Fusion++, 🟢Green is the LIO submodule path, and 🔴Red is the VIO submodule path (*: This sequence comes from Table VIII of the paper).
# [launch] open a terminal and type:
source devel/setup.bash
rosrun rviz rviz -d $(rospack find groundfusion2)/launch/rviz.rviz
⚠️ Known Issues:
- In most sequences, our provided configurations can directly reproduce the results reported in the paper. However, in certain cases, parameter fine-tuning may be required for optimal performance
- The mapping thread is relatively computationally intensive and may require a good machine to run smoothly.
- 💡Our team is actively working on a next-generation version of Ground-Fusion++. Stay tuned for updates and follow our latest research!!
- Open to collaboration! If you are willing to develop a robust and resilient SLAM system with super advanced performance and contribute to the open-source community, please contact us at robot_yinjie@outlook.com
@article{zhang2025towards,
title={Towards Robust Sensor-Fusion Ground SLAM: A Comprehensive Benchmark and A Resilient Framework},
author={Zhang, Deteng and Zhang, Junjie and Sun, Yan and Li, Tao and Yin, Hao and Xie, Hongzhao and Yin, Jie},
journal={arXiv preprint arXiv:2507.08364},
year={2025}
}
@inproceedings{yin2024ground,
title={Ground-fusion: A low-cost ground slam system robust to corner cases},
author={Yin, Jie and Li, Ang and Xi, Wei and Yu, Wenxian and Zou, Danping},
booktitle={2024 IEEE International Conference on Robotics and Automation (ICRA)},
pages={8603--8609},
year={2024},
organization={IEEE}
}
@article{yin2021m2dgr,
title={M2dgr: A multi-sensor and multi-scenario slam dataset for ground robots},
author={Yin, Jie and Li, Ang and Li, Tao and Yu, Wenxian and Zou, Danping},
journal={IEEE Robotics and Automation Letters},
volume={7},
number={2},
pages={2266--2273},
year={2021},
publisher={IEEE}
}
We appreciate all contributions to improving Ground-Fusion++.
|
|
|---|
Thanks to everyone for supporting this project.
C++
71.0%
C
23.4%
Makefile
2.5%
CMake
1.5%