Giter Site home page Giter Site logo

sjtu-visys / ground-fusion Goto Github PK

View Code? Open in Web Editor NEW
272.0 13.0 23.0 60.41 MB

Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases (ICRA2024)

License: GNU General Public License v3.0

CMake 2.48% C++ 52.97% C 38.39% Makefile 3.41% Python 0.32% Shell 0.06% Cuda 2.37%
ground-robot sensor-fusion slam

ground-fusion's Introduction

Ground-Fusion: A Low-cost Ground SLAM System Robust to Corner Cases (ICRA2024)

First Author: Jie Yin 殷杰   📝 [Paper]   ➡️ [Dataset]   ⭐️ [Presentation Video]

ICRA2024 Presentation

Tip

Check out the presentation video above for a quick overview of this work!

NOTICE

We warmly welcome and highly recommend the integration of the Ground-Fusion system into your projects for several compelling reasons:

  1. 🔥Comprehensive Sensor Suite: The Ground-Fusion system is equipped with a multitude of sensors (RGBD-IMU-Wheel-GNSS), facilitating an easy onset for enhancements to any module. This richness in sensory input streamlines the process of adapting and refining components within the system.

  2. ⭐️Open-Source Ecosystem: Both the Ground-Fusion algorithm and associated datasets such as M2DGR-plus and the Ground-Challenge are openly available, forming a comprehensive bechmark suite. Welcome to beat Ground-Fusion on M2DGR and Ground-Challenge!

  3. 🚀Proven Performance: The Ground-Fusion algorithm has been rigorously validated across diverse datasets, establishing itself as SOTA in lidar-less SLAM algorithms. Outperforming Ground-Fusion on these benchmarks would significantly bolster the credibility of your proposed method.

Introduction

We introduce Ground-Fusion, a low-cost sensor fusion simultaneous localization and mapping (SLAM) system for ground vehicles. Our system features efficient initialization, effective sensor anomaly detection and handling, real-time dense color mapping, and robust localization in diverse environments. We tightly integrate RGB-D images, inertial measurements, wheel odometer and GNSS signals within a factor graph to achieve accurate and reliable localization both indoors and outdoors. To ensure successful initialization, we propose an efficient strategy that comprises three different methods: stationary, visual, and dynamic, tailored to handle diverse cases. Furthermore, we develop mechanisms to detect sensor anomalies and degradation, handling them adeptly to maintain system accuracy.

The preprint version of paper is here. The dataset is at M2DGR-plus, Ground-Challenge and M2DGR.

Figure 1. We categorize corner cases into three types: visual, wheel, and GNSS challenges.

1. Prerequisites and Installation

1.1 Ubuntu and ROS

Tested on Ubuntu 18.04 (with ROS Melodic and OpenCV3) and on Ubuntu 20.04(with ROS Noetic and OpenCV4).

1.2 OpenCV

This package requires OpenCV 3/4 and some features of C++11.

1.3 Eigen, Ceres, and PCL

This package requires Eigen 3.3.7, Ceres 1.14,Sophus and PCL 1.10 or 1.11. You need to download they in your thirdparty folder, and then:

sudo apt-get update
sudo apt-get install -y cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libsuitesparse-dev 
cd thirdparty/eigen
mkdir -p build && cd build
cmake ..
sudo make install
cd ../../ceres-solver
mkdir -p build && cd build
cmake ..
make -j$(nproc) 
sudo make install
sudo apt-get install -y libflann-dev libvtk6-dev libboost-all-dev ros-noetic-pcl-ros (for ubuntu20.04) libfmt-dev
cd ../../pcl
mkdir -p build && cd build
cmake ..
make -j$(nproc)
sudo make install
cd ../../Sophus
mkdir -p build && cd build
cmake ..
make -j$(nproc) 
sudo make install

1.4 Gnss_comm

This package also requires gnss_comm for ROS message definitions and some utility functions.

1.5 Configure gcc (For Ubuntu 20.04)

sudo apt-get install g++-8
sudo apt-get install gcc-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 20

1.6 Build Ground-Fusion

After install all 3rd parties:

mkdir -p ~/Groundfusion_ws/src
cd ~/Groundfusion_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/gnss_comm
git clone https://github.com/SJTU-ViSYS/Ground-Fusion
cd ../..
catkin_make -j12

Tip

If you have problems with Sophus version, try to build and install both template version and non-template version to make sure it works.

2. Run examples

2.1 Ground-challenge dataset

Download Ground-challenge dataset and give a star.

# [launch] open a terminal and type:
source devel/setup.bash
roslaunch vins groundfusion.launch

# [run localization] open another terminal:
source devel/setup.bash
rosrun vins vins_node src/Ground-Fusion/config/realsense/groundchallenge.yaml

# [dense map]open third terminal:
source devel/setup.bash
rosrun dense_map dense_map_node src/Ground-Fusion/config/realsense/groundchallenge.yaml

# [play rosbag]open forth terminal:
rosbag play office3.bag

Tip

The dense mapping node may consume computing resources, affecting the real-time performance of the entire system. So it's suggested that do not run this node unless necessary. We are working on optimizing the mapping node currently.

2.2 M2DGR-Plus dataset

Download M2DGR-Plus dataset and give a star.

# [launch] open a terminal and type:
source devel/setup.bash
roslaunch vins groundfusion.launch

# [run localization] open another terminal:
source devel/setup.bash
rosrun vins vins_node src/Ground-Fusion/config/realsense/m2dgrp.yaml

# [dense map]open third terminal:
source devel/setup.bash
rosrun dense_map dense_map_node src/Ground-Fusion/config/realsense/m2dgrp.yaml

# [play rosbag]open forth terminal:
rosbag play anamoly.bag


Note

On M2DGR-plus, Ground-Fusion performs better without GNSS measurements due to low frequency of GNSS (1Hz) of M2DGR-plus dataset. Welcome to test Ground-Fusion on other datasets suporting RGBD-IMU-Wheel-GNSS settings. Furthermore, we are currently developing a more advanced version of Ground-Fusion, please follow us.

3. Acknowledgement

Thanks support from National Key R&D Program (2022YFB3903802), NSFC(62073214), and Midea Group. This project is based on GVINS, and has borrowed some codes from open-source projects VIW-Fusion and VINS-RGBD, thanks for your great contribution!

4. License

The source code of Ground-Fusion is released under GPLv3 license. Do not use this project for any commercial purpose unless permitted by authors. Yin Jie is still working on improving the system. For any technical issues, please contact him at [email protected].

If you use this work in an academic work, please cite:

@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}
}
@inproceedings{yin2023ground,
  title={Ground-challenge: A multi-sensor slam dataset focusing on corner cases for ground robots},
  author={Yin, Jie and Yin, Hao and Liang, Conghui and Jiang, Haitao and Zhang, Zhengyou},
  booktitle={2023 IEEE International Conference on Robotics and Biomimetics (ROBIO)},
  pages={1--5},
  year={2023},
  organization={IEEE}
}
@article{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},
  journal={arXiv preprint arXiv:2402.14308},
  year={2024}
}

Star History

Star History Chart

ground-fusion's People

Contributors

sjtu-visys avatar sjtuyinjie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ground-fusion's Issues

GTK+ 2.x symbols detected

您的论文写的太棒了,已经多次阅读,祝贺你取得如此瞩目的成果,吾辈楷模!!
我在运行您的代码时遇到了部分问题,想请您解答,我已在网上找了很多方法未果,只能麻烦您了,非常感谢。
我已编译完成,但在运行时遇到了这个问题:(vins_node:130331): Gtk-ERROR **: 10:18:24.765: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
Screenshot from 2024-05-09 10-18-41

感谢解答,祝科研顺利,成果多多!

有关gnss的问题

非常感谢你的工作,我想请教一下您的代码里面把gnss的订阅注释了,并且我没有发现处理gnss异常值检测的地方,可能是我看漏了,可以指点一下gnss异常值检测的代码在哪个地方吗?

关于请教轮速打滑检测

您好,感谢您开源如此具有意义的工作。

  • 我正在学习轮速打滑检测方案,看到您们论文中提到关于轮速打滑检测是采用“轮速预积分值 与 imu预积分值”进行比较,从而判断是否出现打滑,但我在看代码的时候发现轮速打滑检测实际上是使用的如下的代码
  • double dis = (dP_wheel - dP_imu).norm();
  • 此处dP_wheel dp_imu 个人认为并不是轮速 && imu的位置预积分值
  • dp_Wheel dp_imu的计算方式如下
  •     dP_imu = dP_imu + dt * Vs[j] + 0.5 * dt * dt * un_acc;
    
  •     dP_wheel[0] -= dt * Vs[j][1];
        dP_wheel[1] += dt * Vs[j][0];
        dP_wheel[2] -= dt * Vs[j][2];
    
  • 个人认为轮速的位置预积分值应该是

图片

  • 个人认为IMU的位置预积分值应该是

图片

我暂时未能理解 dp_Wheel dp_imu 所表达的涵义,向请教一下dp_wheel dp_imu代表什么意思呢?
另外想确认下,上述图片箭头所指的值是否 就是对应的IMU位置预积分值 以及 轮速的位置预积分值。

希望不吝赐教呀!

Sophus version

@sjtuyinjie @SJTU-ViSYS
Thanks for your open source code!
Now I am going to compile it on arm, but I have encountered some errors. I guess it is the problem of sophus version, or can you help me to see what is the problem?
The current version of sophus I use is 1.22.10.

image

Thank you very much!

Compile Error

can you help me to see what is the problem? thanks in advance.
1ecbed3c-1db1-49fe-885b-028146ebe435

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.