XikunLiu-huskit / GLIO

GLIO: Tightly-Coupled GNSS/LiDAR/IMU Integration for Continuous and Drift-free State Estimation
229 stars 31 forks source link
gnss lidar lio localization positioning sensor-fusion slam urban

3DLA-GLIO

drawing

GLIO: Tightly-Coupled GNSS/LiDAR/IMU Integration for Continuous and Drift-free State Estimation of Intelligent Vehicles in Urban Areas. paper link

GLIO is an accurate and robust online GNSS/LiDAR/IMU odometry system that tightly fuses the raw measurements from GNSS (pseudorange and Doppler), LiDAR, and IMU through non-linear factor graph optimization (FGO), which enables globally continuous and drift-free pose estimation even in highly challenging environments like urban canyons.

The package is based on C++ which is compatible with the robot operation system (ROS) platform. Meanwhile, this package combines the RTKLIB (version: 2.4.3 b33) to read/decode the GNSS RINEX files. Users from the Robotics field can easily have access to GNSS raw data for further study.

Authors: Xikun Liu, Weisong Wen, Li-ta Hsu from the Intelligent Positioning and Navigation Laboratory, The Hong Kong Polytechnic University.

Contact: Technical issue: xi-kun.liu@connect.polyu.hk, commercial issue: welson.wen@polyu.edu.hk.

System pipeline

drawing

We propose a system that utilizes two stages of the optimization to achieve global consistent and continuous pose estimation in real-time.

//: # ()

Package feature:

drawing

In this package, different fusion strategies for GNSS/LIO integration are implemented for comparison and further development, including

The trajectories of different fusion methods are shown as figure below.

drawing

To enable and visualize different fusion results, following parameters need to be noted.

GLIO with Docker

Build image

mkdir GLIO_ws/src
cd ~/GLIO_ws/src
git clone https://github.com/XikunLiu-huskit/GLIO.git
cd ./GLIO/docker
sudo make build #sudo if you get permission denied

It may take a while to build the image as we also build ceres. Once it finishes, start a container with:

sudo ./start_GLIO.sh #sudo if you get permission denied

It will also creat a dataset folder under /docker, which we can use as a shared folder between host and container. Download dataset in /dataset folder, then we can play GLIO with the data.

Prerequisites

1 Ubuntu and ROS

Ubuntu 64-bit 18.04, ROS Melodic. ROS Installation. The package is tested on Ubuntu 18.04 with ROS Melodic.

2. Ceres Solver and GTSAM

Ceres Solver and GTSAM are used for optimization and fusion, for the installation of Ceres-solver, please refer to the instructions on GraphGNSSLib.

3. Eigen

Eigen 3.3.3 is used for matrix calculation.

4. Extra Libraries

sudo apt-get install ros-melodic-novatel-msgs

5. Pre-built Libraries

GraphGNSSLib V1.1 and gnss_comm is pre-built in the package.

Build GLIO

Clone the repository and catkin_make:

mkdir GLIO_ws/src
cd ~/GLIO_ws/src
git clone https://github.com/XikunLiu-huskit/GLIO.git
cd ../
# if you fail in the last catkin_make, please source and catkin_make again
catkin_make
source devel/setup.bash

Run GLIO with dataset UrbanNav

Launch GLIO via:

roslaunch GLIO run_urban_hk.launch

Wait for GNSS data preprocessing, when the GNSS trajectory appears, play the bag:

rosbag play UrbanNav-HK_Whampoa-20210521_sensors.bag

Visit UrbanNav and download more data sequences follow the instruction.

Paper

Thank you for citing our paper GLIO: Tightly-Coupled GNSS/LiDAR/IMU Integration for Continuous and Drift-free State Estimation of Intelligent Vehicles in Urban Areas (IEEE T-IV) if you find this code useful.

@article{liu2023glio,
  title={GLIO: Tightly-Coupled GNSS/LiDAR/IMU Integration for Continuous and Drift-free State Estimation of Intelligent Vehicles in Urban Areas},
  author={Liu, Xikun and Wen, Weisong and Hsu, Li-Ta},
  journal={IEEE Transactions on Intelligent Vehicles},
  year={2023},
  publisher={IEEE}
}

Acknowledgements

GLIO is based on LiLi-OM, GraphGNSSLib, and GVINS. The rviz_satellite is used for visualization. Huge Thanks to their great work.